Linux
内核定时器详解
80X86
体系结构上,常用的定时器电路
实时时钟(
RTC
)
RTC
内核通过
IRQ8
上发出周期性的中断,频率在
2-8192HZ
之间,掉电后依
然工作,内核通过访问
0x70
和
0x71 I/O
端口访问
RTC
。
时间戳计时器(
TSC
)
利用
CLK
输入引线,接收外部振荡器的时钟信号,该计算器是利用
64
位的
时间戳计时器寄存器来实现额,
与可编程间隔定时器传递来的时间测量相比,
更
为精确。
可编程间隔定时器(
PIT
)
PIT
的作用类似于微波炉的闹钟,
PIT
永远以内核确定的固定频率发出中断,
但频率不算高。
CPU
本地定时器
利用
PIC
或者
APIC
总线的时钟计算。
高精度时间定时器(
HPET
)
功能比较强大,家机很少用,也不去记了。
ACPI
电源管理定时器
它的时钟信号拥有大约为
3.58MHZ
的固定频率,
该设备实际上是一个简单的
计数器,为了读取计算器的值,内核需要访问某个
I/O
端口,需要初始化
定时器的数据结构
利用
timer_opts
描述定时器
Timer_opts
的数据结构
Name
:标志定时器员的一个字符串
Mark_offset :
记录上一个节拍开始所经过的时间,由时钟中断处理程序调
用
Get_offset
返回自上一个节拍开始所经过的时间