调度程序是系统程序,必须进行调度才能唤醒并调度其他程序。我读过有关进程调度和算法的文章,但搞不清楚调度程序本身是如何调度的。
它会自行调度吗?如果是,那么如何调度?以及使用什么算法?因为它应该比其他任何程序都更频繁地被唤醒,所以我认为一定存在不同的算法。
我有一个很多脑子里有很多类似的问题,但它们都与一件事有关,调度程序本身是如何调度的?
答案1
解决这个问题有多种方法。
协作式多任务调度程序
每次程序调用协作调度程序时,都会调用它,或者产量控制它。它合作与操作系统和其他正在运行的程序。永不放弃的程序(例如“挂起”进程)将永远不会在单 CPU 机器上离开运行状态。
抢占式多任务调度程序
一个非常简单的抢占式调度程序由定时 CPU 中断定期调用。程序无法阻止此操作(没有系统级权限),并且将离开运行状态,因为 CPU 在中断期间会重新定位指令指针。
我建议你读一下维基百科上有关多任务处理的文章。