调度程序是一个程序,它在操作系统中调度不同的进程。想到的问题是:
因为调度程序也是一个进程,它通过上下文切换来调度其他进程。因此,总有一段时间,调度程序会与任何其他进程自动切换。如果发生这种情况,那么排程是如何发生的。
或者,如果不是这样,那么hw是否工作,就像在多任务处理系统中一样,为了在一起运行不同的进程,进程必须被上下文切换,如果调度程序一直在运行,那么它如何给其他进程一起运行的空间。
发布于 2013-10-14 08:57:37
调度程序是一个程序,是的,但很少是一个进程。相反,计划是内核的一部分,或者从硬件中抽象进程的程序(包括处理器的使用)。
在抢占式调度器中,由于调度程序是内核的一部分,它实际上存在于每个进程的地址空间中。当进程分配的时间结束时,调度程序将控制程序执行,然后执行必要的工作以移到下一个进程。然而,当计划这样做时,它不会将自己从新进程的地址空间中移除,这样当新进程的时间结束时,它就可以安全地执行向前移动所需的工作。
虽然有一些内核的功能经常被卸载到其他进程(CMU Mach),但是内核中始终有一部分保留了用于更改进程的功能,而且这永远不会完全在它自己的过程中。
有关调度工作的更多信息,我发现以下文章很有帮助:
Switching
Algorithms
Threads
https://stackoverflow.com/questions/19354542
复制相似问题