每天读Linux内核 01 定时器

本文详细介绍了Linux内核中的时间概念,包括系统节拍率(HZ)及其影响,指出高节拍率能提升时间精度但会增加中断处理负担。同时,解释了jiffies在内核中的作用,它是记录系统运行时间的一种方式。内容还涉及到如何在内核配置中调整节拍率,并讨论了不同节拍率的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.内核中时间概念:

1.系统节拍率:

2.jiffies:


1.内核中时间概念:

1.系统节拍率:

系统节拍率100HZ  时间精度10ms,表示两个中断的间隔时间是10ms。 

内核会根据HZ(系统定时器频率,节拍率)参数值,设置时钟事件设备,启动tick(节拍)中断。

HZ表示1秒中产生多少个时钟硬件中断,tick就表示连续两个中断的间隔时间。

HZ=100, 一个tick = 1/HZ, 所以默认一个tick为10ms。

更高的节拍率,意味着以更高的时间精度运行,时间测量也更加准确,但是高节拍率会导致中断的产生更加频繁,频繁的中断会加剧系统的负担。(鱼和熊掌的关系,按照项目应用场景进行决定)

硬件定时器提供时钟源,时钟源的频率可以设置, 设置好以后就周期性的产生定时中断,系统使用定时中断来计时。中断周期性产生的频率就是系统频率,也叫做节拍率(tick rate),比如 1000Hz,100Hz 等等说的就是系统节拍率。

系统节拍率是可以设置的,单位是 Hz,我们在编译 Linux 内核的时候可以通过图形化界面设置系统节拍率,按照如下路径打开配置界面:

-> Kernel Features 
 -> Timer frequency (<choice> [=y])

选中“Timer frequency”,打开以后如下图所示:

 从上图可以看出,可选的系统节拍率为 100Hz、200Hz、250Hz、300Hz、500Hz 和1000Hz,默认情况下选择 100Hz。设置好以后打开 Linux 内核源码根目录下的.config 文件,在此文件中有如下图所示定义:

CONFIG_HZ 为 100,Linux 内核会使用 CONFIG_HZ 来设置自己的系统时钟。打开文件 include/asm-generic/param.h,有如下内容:

 1 #ifndef __ASM_GENERIC_PARAM_H
  2 #define __ASM_GENERIC_PARAM_H
  3 
  4 #include <uapi/asm-generic/param.h>
  5 
  6 # undef HZ
  7 # define HZ     CONFIG_HZ   /* Internal kernel timer frequency */
  8 # define USER_HZ    100     /* some user interfaces are */
  9 # define CLOCKS_PER_SEC (USER_HZ)       /* in "ticks" like times() */
 10 #endif /* __ASM_GENERIC_PARAM_H */

定义了一个宏 HZ,宏 HZ 就是 CONFIG_HZ,因此 HZ=100,我们后面编写 Linux驱动的时候会常常用到 HZ,因为 HZ 表示一秒的节拍数,也就是频率。

高节拍率和低节拍率的优缺点:
①、高节拍率会提高系统时间精度,如果采用 100Hz 的节拍率,时间精度就是 10ms,采用1000Hz 的话时间精度就是 1ms,精度提高了 10 倍。高精度时钟的好处有很多,对于那些对时间要求严格的函数来说,能够以更高的精度运行,时间测量也更加准确

②、高节拍率会导致中断的产生更加频繁,频繁的中断会加剧系统的负担,1000Hz 和 100Hz的系统节拍率相比,系统要花费 10 倍的“精力”去处理中断。中断服务函数占用处理器的时间增加,但是现在的处理器性能都很强大,所以采用 1000Hz 的系统节拍率并不会增加太大的负载压力。根据自己的实际情况,选择合适的系统节拍率。
 

2.jiffies:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linux技术芯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值