操作系统采用模拟时钟,支持比定时器硬件信道数量更多的定时器请求。为此,内核或定时器设备驱动程序维护一张表,这是内核程序和用户请求所需的、并且按照时间排序的中断列表。内核为最早时间设置定时器。当定时器中断时,内核通知请求者,并且用下一个最早的时间重新加载定时器。
从操作系统的角度来看,时钟的作用可以分为如下两类。
(1)提供统计值及驱动事件:提供统计值是指操作系统用时钟来维护一些必须的数,例如一个进程在用户态/内核态的时间,系统的日期、时间等。驱动事件是指驱动以时间为资源的程序,典型的就是进程。例如,分时操作系统为每个继承分配固定的时间片,调度时间片耗尽的进程休眠,唤醒分配到新时间片的进程运行。
(2)维护定时器(Timer):定时器是程序中常用的组件,用于在某个指定时间到达后执行特定的操作。定时器大量运用于操作系统中,例如内核为I/O操作注册的超时定时器、操作系统提供给应用程序使用的定时器接口等。
从上图可以看出,操作系统使用时钟的功能,是以时钟中断为基础的。要了解时钟的作用,可以以时钟中断为脉络,勾画出整个框图。一般情况下,操作系统往往会对时钟架构进行封装以便维护和使用。但从硬件的角度来看,时钟中断仍然是所有封装的基础,故虚拟化中对时钟的处理主要是提供准确的时钟中断以模拟硬件的行为。