linux内核定时器

 

Linux内核中许多工作都高度依赖时间信息。因此了解Linux内核时间机制很有必要。

在Linux内核中,有一些重要的内核定时器变量,jiffies、HZ、以及xtime。

一:HZ和jiffies

  1. HZ的值取决与体系架构,在x86系统上,在2.4内核中,该值默认设置为100;在2.6内核中,该值变为了1000,在基于ARM的平台上,2.6内核将HZ设置为100,在3.4内核版本中,可以在编译内核时通过配置菜单选项设置一个HZ值,该选项的默认值取决与体系架构的版本。
  2. drivers/ide/ide.c

    jiffies变量记录了系统启动以来,系统定时器已经触发的次数。内核每秒将jiffies变量增加HZ次。可以这样理解,HZ=100时,1个jiffy等于10ms,当HZ=1000时,一个jiffy相当1ms。上图代码是一个很好的例子,如果忙条件在3s内被清除,则代码将返回SUCCESS,否则返回-EBUSY。其中3HZ表示3s内jiffies的数量。jiffies为Volatile类型,使得编译器不对jiffies变量进行优化,确保每次发生定时器中断时序都能更新jiffies值,并且循环中的每一步都会重新读取jiffies值。

2、长延时

在内核中,以jiffies为单位进行的延时通常被认为是长延时。

实现长延时最好的方法是睡眠等待而不是忙等待。

unsigned long timeout = HZ;
schedule_timeout(timeout);

3、短延时

在linux内核中,小于jiffy的延时被认为是短延时,此时睡眠等待将不能用于短的超时,唯一的解决途径就是忙等待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值