当前位置:  技术问答>linux和unix

关于jiffies_64的问题

    来源: 互联网  发布时间:2016-07-14

    本文导语:  既然jiffies是unsigned long 型的变量,在32位体系结构下是32位,在64位下是64位,那为什么还需要有第二个变量jiffies_64呢?书上说是为了兼容性?没太明白,jiffies_64存在的必要性。烦请高手指点,谢谢! |...

既然jiffies是unsigned long 型的变量,在32位体系结构下是32位,在64位下是64位,那为什么还需要有第二个变量jiffies_64呢?书上说是为了兼容性?没太明白,jiffies_64存在的必要性。烦请高手指点,谢谢!

|

你从哪里看来的观点?
如果你看源代码,可以看到在timer, net, media里面都需要用到jiffies_64。

|


我刚才说的 50 天就溢出也不太准确, 应该加上一个  当 HZ 是 1000 时, 
这个值是可以精确计算出来的。
jiffies可记录的最大秒数为(2^32 -1)/1000=4294967.29秒  约和 50天。
Jiffies于系统开机时,并非初始化成零,而是被设为-300*HZ,所以会很快溢出,
当jiffies变量的值超过它的最大存放范围后就会发生溢出,在溢出前,定时器节拍计数最大为4294967295,如果节拍数达到了最大值后还要继续增加的话,它的值会回绕到0。回绕会引起许多问题。







|
jiffies 的值是一直增加的,   32 位 的 jiffies 值 在 50 天左右就 溢出了。
如果你的程序有使用  jiffies 的值来做一些计算, 50天后就会有问题了,你必须考虑并处理这个问题。

但 jiffies_64 不会有这样的问题。

|


书上说10分钟左右就溢出吧,因为linux内核的开发者故意让问题早点出来给你看到,把jiffies初始值初始化为一个快要溢出到值了。

楼主说的兼容性也可以理解啊,因为以前人家在32位使用到 jiffies_64,在移到64位上去,代码都不用修改了。

|
jiffies_64在32位机下仍然是64位,因此你有可能进行更大范围的tick计数。

|
为了以后的64位机 做准备的吧?

|
一个简单的例子,你现在是在32位的机器上做视频相关文件处理程序,32位机器上默认的最大文件大小是2G,原因是read() write()里面的文件指针off_set是int型。

如果高清时代来了,你处理的视频一个就超过了4G甚至更大,文件到头了就2G大小。那么就要重新定义off_set为 long long型了。off_t64

    
 
 

您可能感兴趣的文章:

  • vmlinux.lds.S中的jiffies = jiffies_64问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • larm 时间已经过期(alarm<jiffies)是什么意思?
  • jiffies的含义
  • 如何调用clock_t_to_jiffies函数
  • 怎样编程实现打印出jiffies的值
  • 内核里如何得到tick,用哪个函数,不是jiffies,要tick
  • jiffies到底是多长时间?(总分值120分!!!)
  • 为什么jiffies在系统重启后为赋值?求高手解答
  • 关于 jiffies 的回绕 ,时钟 - 回绕 - 安全 ,timer - wraparound - safe


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3