谁来安排调度器的时间表?
第一个任务是由谁创建的,它是如何创建的?是否需要任何资源或内存?这不是一个鸡生蛋的问题吗?
调度器本身是一个任务吗?它在每个时间片的末尾获取CPU以检查哪个任务需要被分配CPU吗?
有没有好的链接可以让人们深入思考并深刻理解所有这些概念,而不是倾泻出一些需要背诵的理论?
谁来安排调度器的时间表?
第一个任务是由谁创建的,它是如何创建的?是否需要任何资源或内存?这不是一个鸡生蛋的问题吗?
调度器本身是一个任务吗?它在每个时间片的末尾获取CPU以检查哪个任务需要被分配CPU吗?
有没有好的链接可以让人们深入思考并深刻理解所有这些概念,而不是倾泻出一些需要背诵的理论?
调度程序由以下事件触发:
简单来说,任何可能需要重新评估要运行的任务集和/或这些任务的优先级的事件都会触发它。调度程序决定接下来运行哪个任务,并将控制权传递给下一个任务。
通常,调度程序的“调度”是由与硬件中断相关联的代码或系统调用相关联的代码引起的。
虽然您可以将调度程序视为实际的线程,但在实践中并不需要这样实现...因为它比任何其他任务都具有更高的优先级。复杂的操作系统实际上可能会设置一个特殊的线程作为调度程序,并在调度程序获得控制时标记它为忙碌状态。这使它看起来很漂亮,但是虚假的线程并不是由调度程序调度的。
可以拥有多个调度程序:最高优先级的调度程序(例如我们刚才描述的调度程序)和其他真正作为线程运行的调度程序,像其他用户任务一样运行。这种较低优先级的调度程序往往用于管理发生在更长时间间隔内的操作,例如后台作业。
它通常被定时的CPU中断周期性调用。