时钟节拍:
时钟节拍是特定的周期性中断,这个中断可以看做是系统心脏的脉动,中断之间的时间间隔取决于不同的应用。
各种实时内核都有将任务延时若干个时钟节拍的功能,然而这并不意味着延时的精度是1个时钟节拍,只是在每个时钟节拍中断到来时,对任务延时进行一次裁决而已。以下图为例分析时钟节拍与任务延时:
时钟节拍中断实质上是给了可剥夺型内核一个任务切换的机会,在时钟节拍中断结束之后,内核会根据就绪态中的优先级高低决定中断返回后执行的任务。而延时的任务只有当所有更高优先级的任务都完成(或进入等待状态)后,延时的任务才会被调度执行。当延时的任务延时1个时钟节拍后,则进入延时状态。在这期间,若下一个时钟节拍中断到来时,内核执行中断服务程序,中断结束后执行更高优先级的任务,然后再调度到延时的任务执行。而从上一次延时状态开始至这一次延时的任务开始的间隔,精度不一定是1个时钟节拍。因为具有较高优先级的任务,所以每次节拍中断服务子程序结束后执行的都不是延时的任务,而是更高优先级的任务。只有当更高优先级的任务完成或被挂起后,延时状态才会结束,下一次延时的任务才会开始。而因为每次节拍中断后调度的更高优先级的任务的执行时间并不相同,所以每次延时1个时钟节拍的实际时间都不尽相同。
|