Operating System 简明教程
Operating System - Process Scheduling
Definition
进程调度是进程管理器的一种活动,负责从CPU中移除正在运行的进程,并根据特定策略选择另一个进程。
进程调度是多道程序操作系统的必然部分。此类操作系统允许一次将多个进程加载到可执行内存中,并且已加载的进程使用时分复用共享CPU。
Process Scheduling Queues
操作系统在进程调度队列中维护所有进程控制块(PCB)。操作系统为每个进程状态维护一个独立的队列,并且相同执行状态下的所有进程的PCB被放入同一队列中。当进程的状态更改时,其PCB将从其当前队列中取消链接并移至其新的状态队列。
操作系统维护着以下重要的进程调度队列−
-
Job queue − 此队列保留系统中的所有进程。
-
Ready queue − 此队列保留驻留在主内存中的所有进程的集合,这些进程已准备好并等待执行。新进程总是放入此队列中。
-
Device queues − 由于I/O设备不可用而被阻塞的进程构成了此队列。
操作系统可以使用不同的策略来管理每个队列(FIFO、循环优先级等)。操作系统调度程序确定如何在就绪队列和运行队列之间移动进程,这在系统上的每个处理器核上只能有一个条目;在上图中,它已与CPU合并。
Two-State Process Model
两态进程模型是指下面描述的运行态和非运行态:
S.N. |
State & Description |
1 |
Running 当一个新进程被创建时,它将进入系统中的运行状态。 |
2 |
Not Running 未运行的进程被保存在队列中,等待执行的轮次。队列中的每个条目都是指向一个特定进程的指针。队列是使用链表实现的。调度程序的使用如下。当一个进程被中断时,该进程被转移到等待队列中。如果进程已完成或已中止,则该进程会被丢弃。无论哪种情况,调度程序都会从队列中选择一个进程来执行。 |
Schedulers
调度程序是特殊系统软件,以各种方式处理进程调度。它们的主要任务是选择要提交给系统的作业并决定运行哪个进程。调度程序有三种类型:
-
Long-Term Scheduler
-
Short-Term Scheduler
-
Medium-Term Scheduler
Long Term Scheduler
它也被称为 job scheduler 。长期调度程序确定哪些程序被允许进入系统进行处理。它从队列中选择进程并将它们加载到内存中以执行。进程加载到内存中以进行 CPU 调度。
作业调度程序的主要目标是提供平衡的作业组合,如 I/O 绑定和处理器绑定。它还控制多道程序设计的程度。如果多道程序设计的程度稳定,那么进程创建的平均速率必须等于离开系统的进程的平均离开率。
在某些系统上,长期的调度程序可能不可用或是最小的。分时操作系统没有长期调度程序。当进程将状态从新建更改为就绪时,则使用长期调度程序。
Short Term Scheduler
它也被称为 CPU scheduler 。其主要目的是根据所选的一组标准来提高系统性能。它是进程从就绪态变为运行态的变化。CPU 调度程序从准备执行的进程中选择一个进程并将 CPU 分配给其中之一。
短期调度程序(也称为分派程序)决定接下来执行哪个进程。短期调度程序比长期调度程序更快。
Medium Term Scheduler
中期调度是 swapping 的一部分。它从内存中删除进程。它降低了多道程序设计的程度。中期调度程序负责处理换出进程。
如果一个正在运行的进程发出 I/O 请求,则该进程可能会被挂起。被挂起的进程无法继续执行。在这种情况下,为了从内存中删除进程并为其他进程腾出空间,将被挂起的进程移到辅助存储器中。此过程称为 swapping ,并且该进程据说是被换出或注销的。交换可能需要改进进程组合。
Comparison among Scheduler
S.N. |
Long-Term Scheduler |
Short-Term Scheduler |
Medium-Term Scheduler |
1 |
它是作业调度程序 |
它是 CPU 调度程序 |
它是进程交换调度程序。 |
2 |
速度低于短期调度程序 |
速度在其他两者中最快 |
速度介于短期调度程序和长期调度程序之间。 |
3 |
它控制多道程序设计的程度 |
它对多道程序设计的程度控制较小 |
它减少了多道程序设计的程度。 |
4 |
在分时系统中几乎没有或极少 |
在分时系统中也是最小的 |
它是分时系统的一部分。 |
5 |
它从池中选择进程并将其加载到内存中执行 |
它选择那些准备好执行的进程 |
它可以重新将进程引入内存并继续执行。 |
Context Switching
上下文切换是将 CPU 的状态或上下文存储和恢复到进程控制块中的机制,以便稍后可以从同一位置恢复进程执行。使用此技术,上下文切换器使多个进程能够共享单个 CPU。上下文切换是多任务操作系统功能的本质部分。
当调度程序将 CPU 从执行一个进程切换到执行另一个进程时,从当前正在运行的进程中的状态将被存储到进程控制块中。此后,要执行的下一次进程的状态将从其自身的 PCB 中加载并用于设置 PC、寄存器等。在这一点上,第二个进程可以开始执行。
上下文切换在计算上是密集的,因为必须保存和还原寄存器和内存状态。为了避免上下文切换时间,一些硬件系统采用两组或更多组处理器寄存器。当进程切换时,以下信息将被存储以供以后使用。
-
Program Counter
-
Scheduling information
-
基址和界限寄存器值
-
Currently used register
-
Changed State
-
I/O State information
-
Accounting information