一 概述
- 时钟中断: 周期信号,引发CPU中断行为,
- 相关硬件
- 实时时钟RTC: 长时间存放系统的时间设备,即使睡眠也会计数
- 可编程间隔期 PIT: 周期性发送时钟中断信号,tick
- 时间戳计数器TSC: 时钟信号到来,自动加1(64位)
- 高精度计时器HPET:
- CPU本地定时器: 单次或周期性产生中断系统
- 高精度定时器 hrtimer: 提供纳秒级及精度,精确时间迫切需求
- jiffies: 计数器,用例记录自系统启动以来的节拍总数
- xtime: 存放当前时钟和日期;
1.1 运作机制
- BIOS关闭使用RTC, linux启动后使用OS时钟
1.2 时钟架构
- 时间戳服务于timekeeper, linux目前使用tickless(无节拍)进行,节约能耗
- hrtimer服务于语音,视频等高精度的定时器,需要注意一下几点:
- 实现通过RBtree
- 每个cpu都有一个httimer_cpu_base结构
1.3 函数执行
这是动态定时器相关内容
struct timer_list my_timer;
init_timer(&my_timer);
add_timer(&my_timer);
mod_timer(&my_timer);
定时器是通过软中断`run_timer_softirq进行执行;