Operating System 简明教程

Operating System - Process Scheduling

Definition

进程调度是进程管理器的一种活动,负责从CPU中移除正在运行的进程,并根据特定策略选择另一个进程。

进程调度是多道程序操作系统的必然部分。此类操作系统允许一次将多个进程加载到可执行内存中,并且已加载的进程使用时分复用共享CPU。

Categories of Scheduling

有两类调度:

Process Scheduling Queues

操作系统在进程调度队列中维护所有进程控制块(PCB)。操作系统为每个进程状态维护一个独立的队列,并且相同执行状态下的所有进程的PCB被放入同一队列中。当进程的状态更改时,其PCB将从其当前队列中取消链接并移至其新的状态队列。

操作系统维护着以下重要的进程调度队列−

  1. Job queue − 此队列保留系统中的所有进程。

  2. Ready queue − 此队列保留驻留在主内存中的所有进程的集合,这些进程已准备好并等待执行。新进程总是放入此队列中。

  3. Device queues − 由于I/O设备不可用而被阻塞的进程构成了此队列。

queuing diagram

操作系统可以使用不同的策略来管理每个队列(FIFO、循环优先级等)。操作系统调度程序确定如何在就绪队列和运行队列之间移动进程,这在系统上的每个处理器核上只能有一个条目;在上图中,它已与CPU合并。

Two-State Process Model

两态进程模型是指下面描述的运行态和非运行态:

S.N.

State & Description

1

Running 当一个新进程被创建时,它将进入系统中的运行状态。

2

Not Running 未运行的进程被保存在队列中,等待执行的轮次。队列中的每个条目都是指向一个特定进程的指针。队列是使用链表实现的。调度程序的使用如下。当一个进程被中断时,该进程被转移到等待队列中。如果进程已完成或已中止,则该进程会被丢弃。无论哪种情况,调度程序都会从队列中选择一个进程来执行。

Schedulers

调度程序是特殊系统软件,以各种方式处理进程调度。它们的主要任务是选择要提交给系统的作业并决定运行哪个进程。调度程序有三种类型:

  1. Long-Term Scheduler

  2. Short-Term Scheduler

  3. 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、寄存器等。在这一点上,第二个进程可以开始执行。

context switch

上下文切换在计算上是密集的,因为必须保存和还原寄存器和内存状态。为了避免上下文切换时间,一些硬件系统采用两组或更多组处理器寄存器。当进程切换时,以下信息将被存储以供以后使用。

  1. Program Counter

  2. Scheduling information

  3. 基址和界限寄存器值

  4. Currently used register

  5. Changed State

  6. I/O State information

  7. Accounting information