在我之前的问题中,内核调度程序如何知道如何抢占进程?我得到了关于抢占如何发生的答案。
现在我想知道,内核调度程序如何知道时间片已过去?我阅读了对我来说有意义的硬件计时器解决方案,但是随后我了解到,大多数当前的操作系统(例如Windows,Linux等)不使用硬件计时器,而是使用软件计时器。
一旦进程占用了时间片(例如,它没有抢占自己的时间片),如何使用软件计时器来抢占该进程。似乎有些硬件计时器是必需的?
似乎需要一些硬件计时器?
是的,内核依靠硬件定期产生中断。在PC上,从历史上看,这是8253/8254可编程间隔计时器或其仿真,然后是本地APIC计时器,然后是HPET。
当前的Linux内核可以构建为在可能的情况下“滴答作响”地运行:内核将对计时器进行编程,使其仅在必要时触发,并且如果给定的CPU在运行单个进程,则可能“永不”。在大多数情况下,使用的是动态滴答,因此内核会根据其要求将计时器设置为在不同的间隔触发—更少的中断意味着更少的唤醒,这意味着空闲的CPU可以在低功耗模式下保持更长的时间,这节省能源。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句