第五章 定时测量
硬时钟
内核与三种时钟打交道
- 实时时钟 Real Time Clock RTC
- 时间标记计数器 Time Stamp Counter TSC
- 可编程间隔定时器 Programmable Interval Time PIT
实时时钟
RTC独立于CPU和其他所有芯片,靠小电池供电。Linux获取时间和日期。
时间标记计数器
Linux通过寄存器获得更精确的时间测量。|2^32/f|
f是以Mhz为单位的CPU频率
可编程间隔定时器
通过定时中断来通知内核一个时间间隔已经过去。
CPU的分时
定时中断对于进程共享CPU时间是必不可少的。内核给每个进程分配一个时间片,如果时间片到时,进程没有终止,schedule()函数选择一个新的进程投入运行。
PID为0的进程不与其他进程共享CPU时间,因为当不存在其他的TASK_RUNNING进程时,它才在CPU运行。
定时器的作用
内核和进程广泛使用定时器。大多数设备驱动程序利用定时器检测反常情况。也可以利用定时器在将来某一时刻执行特定的函数。
Linux考虑了三种定时器,静态定时器,动态定时器和间隔定时器。前两种类型由内核使用,而间隔定时器可以由进程在用户态创建。