linux闰秒发生时,会改变jiffies的值吗

linux闰秒发生时,会改变jiffies的值吗,第1张

关于linux的Jiffies/Tick/HZlinux核心几个重要跟时间有关的几个名词: HZ、tick、jiffies。1.linux HZlinux核心每隔固定周期会发出timer interrupt (IRQ 0),HZ是用来定义每一秒有几次timer interrupts。举例来说,HZ为1000,代表每秒有1000次timer interrupts,比较常见的设置是HZ=100。可以通过 cat /proc/interrupt 查看timer中断次数,并于一秒后再次观察其值,通过前后差值可以估算HZ的值。要检查内核源码中HZ的值是什么,可以执行命令:#cat kernel/.config grep 'CONFIG_HZ='还可以直接更改文件param.h2.TickTick是HZ的倒数,意即timer interrupt每发生一次中断的时间。如HZ为250时,tick为4毫秒(millisecond)。3.JiffiesJiffies为linux核心变数(32位元变数,unsigned long),它被用来纪录系统自开机以来,已经过多少的tick。每发生一次timer interrupt,Jiffies变数会被加一。在ARM体系结构中,jiffies被初始化为jiffies_64,而jiffies_64是一个u64位元变数,在kernel/timer.c中定义:u64 jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES即jiffies在系统开机时,并非初始化成零,而是被设为INITAL_JIFFIES(在文件include/linux/jiffies.h中定义为-300*HZ),即代表系统于开机五分钟后,jiffies便会溢位。那溢位怎么办?事实上,linux核心定义几个macro(timer_after、time_after_eq、time_before与time_before_eq),即便是溢位,也能藉由这几个macro正确地取得jiffies的内容。

首先,你这样问,说明你不理解jiffies,jiffies应该说不是时间,jiffies的增加,是根据HZ的值变化而变化的。以时下linux kernel来说:1s=jiffies/HZ(即1秒=jiffies/HZ);在asm_i386中,HZ被定义为一个常,且为1000.一般在内核中定义超时是这样用,如:xxx_timer.expires = jiffies+HZ/100这个定义表示超时时间为10ms,如果超过个时间就处理中断函数或者做你想做的事.当然HZ的分母你可以定为别的数。如HZ/1000等.

有的。

具体步骤:

1、默认情况下系统节拍率选择100Hz。

2、设置好后在Linux内核源码根目录下的config文件中可见系统节拍率被设置为100Hz。

3、Linux内核会使用CONFIGHZ来设置自己的系统时钟,文件includeasmgenericparamh。

Linux内核使用全局变量jiffies来记录系统从启动以来的系统节拍数,系统启动的时候会将jiffies。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7305135.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-04
下一篇2023-04-04

发表评论

登录后才能评论

评论列表(0条)

    保存