调度程序是一个程序,用于调度操作系统中的不同进程。 想到的问题是:
由于调度程序也是一个进程,它通过上下文切换来调度其他进程。 因此,有一段时间,调度程序将自动切换到任何其他进程。 如果发生这种情况,那么在此之后如何进行调度。
或者,如果它不是那样,那么hw是否有效,就像在多任务系统中一样,为了一起运行不同的进程,进程必须进行上下文切换,如果调度程序一直在运行,那么,它将如何为其他进程提供共同运行的空间。
答案 0 :(得分:2)
调度程序是一个程序,是的,但很少是一个过程。相反,时间表是内核的一部分,或者是从硬件中提取进程的程序(包括处理器使用情况)。
在抢先式调度程序中,由于调度程序是内核的一部分,因此它实际存在于每个进程的地址空间中。当进程的分配时间结束时,调度程序将控制程序执行,然后执行必要的工作以转移到下一个进程。但是,当计划执行此操作时,它不会将自己从新进程的地址空间中删除,这样当新进程的时间结束时,它可以安全地执行继续进行所需的工作。
虽然已经有内核的功能经常被卸载到其他进程(CMU Mach)中,但内核中始终会有一部分保留用于更改进程的功能,而这绝不仅仅是在自己的进程中。
有关计划如何运作的更多信息,我发现以下文章很有帮助:
http://wiki.osdev.org/Context_Switching