1

调度程序是一个程序,它在操作系统中调度不同的进程。想到的问题是:

由于调度器也是一个进程,它通过上下文切换来调度其他进程。所以,会有一段时间,调度程序会自己与任何其他进程切换。如果发生这种情况,那么在那之后调度如何发生。

或者,如果不是这样,那么硬件是否可以工作,就像在多任务系统中一样,为了一起运行不同的进程,进程必须进行上下文切换,如果调度程序一直在运行,那么它将如何给其他进程一起运行的空间。

4

1 回答 1

2

调度程序是一个程序,是的,但它很少是一个进程。相反,调度是内核的一部分,或者是从硬件(包括处理器使用)中抽象出进程的程序。

在抢占式调度器中,由于调度器是内核的一部分,它实际上存在于每个单独进程的地址空间中。当一个进程的分配时间结束时,调度程序会控制程序的执行,然后执行必要的工作以转移到下一个进程。但是,当调度执行此操作时,它不会将自己从新进程的地址空间中移除,因此当新进程的时间到时,它可以安全地执行继续前进所需的工作。

虽然有些内核的功能经常被卸载到其他进程(CMU Mach),但总会有一部分内核保留更改进程的功能,而这永远不会排他性地存在于它自己的进程中。

有关调度如何工作的更多信息,我发现以下文章很有帮助:

http://wiki.osdev.org/Context_Switching

http://wiki.osdev.org/Scheduling_Algorithms

http://wiki.osdev.org/Processes_and_Threads

于 2013-10-14T08:57:37.867 回答