a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 102|回复: 0

[综合辅导] Linux认证辅导之Linux内核中的jiffies

[复制链接]
发表于 2012-8-4 12:07:07 | 显示全部楼层 |阅读模式
Linux认证辅导之Linux内核中的jiffies1 g. _  r) w! O# X
Linux内核中的jiffies
, I0 S6 |2 S+ o' D8 D硬件给内核提供一个系统定时器用以计算和管理时间,内核通过编程预设系统定时器的频率,即节拍率(tick rate),每一个周期称作一个tick(节拍)。Linux内核从2.5版内核开始把频率从100调高到1000(当然带来了很多优点,也有一些缺点)。7 m& D' R( A; `* D, G# p7 G! K. [
jiffies是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数。譬如,如果计算系统运行了多长时间,可以用 jiffies/tick rate 来计算。jiffies定义在文件中:: V# _4 F$ j4 o3 ~! W
extern unsigned long volatile jiffies;
0 D1 |* z; T; G% z0 O) n可以利用jiffies设置超时等,譬如:) i3 M4 ?0 W5 e6 u
unsigned long timeout = jiffies + tick_rate * 2; // 2秒钟后超时
, l2 I% j# p  `" ^; y' yif(time_before(jiffies, timeout){; S  u/ v5 g2 O" w: X
// 还没有超时/ F3 H! R2 b- _2 w
}
3 a3 M6 }, q  G/ welse{8 T4 v+ z* G7 {8 ]7 d! ~) f
// 已经超时
. Q/ p$ M) Y/ H% i4 ~}
% g% G' U) r5 e2 z1 n, F  j内核提供了四个宏来比较节拍计数,这些宏定义在文件中:
  n+ u. v0 a/ S; w7 utime_before(unknown, known)
7 ~5 H  `  \3 S( s. {time_after(unknown, known)0 E: e& W7 {# \5 r; K! t: E
time_before_eq(unknown, known)
, ^! X* j$ p$ L0 M  v& r* h" f9 Vtime_after_eq(unknown, known)9 o7 D/ Z0 x9 \! r4 X/ z
比较的时候用这些宏可以避免jiffies由于过大造成的回绕问题。7 a1 a& g% S% m9 A; D
除了系统定时器外,还有一个与时间有关的时钟:实时时钟(RTC),这是一个硬件时钟,用来持久存放系统时间,系统关闭后靠主板上的微型电池保持计时。系 统启动时,内核通过读取RTC来初始化Wall Time,并存放在xtime变量中,这是RTC最主要的作用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-4 23:57 , Processed in 0.191224 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表