Linux中的定时器

一、RTC

RTC为实时时钟,独立于CPU与所有其他芯片,依靠一个独立的小电池供电给RTC中的振荡器,即使关闭PC电源,还会继续运转。在RQ8上发出周期性的中断,可以对其编程实现一个闹钟。但Linux本身只使用RTC获得时间和日期。

墙上时间,在系统启动过程中根据实时钟(RTC)芯片保存数据进行初始化,在系统运行期间由系统时钟维护并在合适的时刻和RTC芯片进行同步。墙上时间存储于系统核心变量xtime中该变量记录了现实世界中的年月日格式的时间。更新函数update_wall_time()。

二、时间戳计数器TSC

现在CPU中引入TSC寄存器,TSC是一个64位的、用作时间戳计数器的寄存器 。它在每个时钟信号(CLK)到来时+1 。rdtsc指令用于读该寄存器 ,注意使用这个寄存器时,内核必须考虑时钟信号的频率,TSC能获得更精确的值。Linux在系统初始化的时候必须通过tsc_calibrate获得CLK的频率。tsc_calibrate根据在一个可编程间隔定时器给出的时间间隔内(约5ms)所发生的TSC计数的个数进行计算 。

相对时间:记录从系统启动直到当前时刻的系统时钟产生的滴答数,存储于系统核心变量jiffies(jiffies_64)

三、可编程间隔定时器PIT

通过IRQ0发出时钟中断 每若干毫秒(100Hz为10ms)产生一次时钟中断,即一个tick。

  • 宏定义HZ。 宏定义Hz记录了不同体系结构下,系统时钟所要求的可编程定时器产生中断的频率。
  • 宏定义CLOCK_TICK_RATE。 宏定义CLOCK_TICK_RATE记录了不同体系结构下,驱动可编程定时器工作的输入时钟频率。
  • 宏定义LATCH。 宏定义LATCH记录了上述两个宏定义的比值,用于在内核初始化过程中设置可编程定时器中计数器寄存器counter的初始值。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值