操作系统 - 进程调度



定义

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

进程调度是多道程序设计操作系统的必要组成部分。此类操作系统允许同时将多个进程加载到可执行内存中,并且加载的进程使用时间复用共享 CPU。

调度类别

调度分为两类:

  1. 非抢占式:在此,资源在进程完成执行之前无法被抢占。资源的切换发生在正在运行的进程终止并进入等待状态时。
  2. 抢占式:在此,操作系统为进程分配固定时间量的资源。在资源分配期间,进程从运行状态切换到就绪状态或从等待状态切换到就绪状态。这种切换发生是因为 CPU 可能会优先考虑其他进程,并用优先级更高的进程替换正在运行的进程。

进程调度队列

操作系统在进程调度队列中维护所有进程控制块 (PCB)。操作系统为每种进程状态维护一个单独的队列,并且处于相同执行状态的所有进程的 PCB 都放置在同一队列中。当进程的状态发生变化时,其 PCB 将从其当前队列中解链并移动到其新的状态队列。

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

  • 作业队列 - 此队列保留系统中的所有进程。

  • 就绪队列 - 此队列保留驻留在主内存中、已准备好并等待执行的所有进程的集合。新创建的进程始终放入此队列。

  • 设备队列 - 由于 I/O 设备不可用而被阻塞的进程构成此队列。

Process Scheduling Queuing

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

两状态进程模型

两状态进程模型指的是运行和非运行状态,如下所述:

序号 状态和描述
1

运行

当创建新进程时,它以运行状态进入系统。

2

未运行

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

调度程序

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

  • 长期调度程序
  • 短期调度程序
  • 中期调度程序

长期调度程序

它也称为作业调度程序。长期调度程序确定哪些程序被系统接受以进行处理。它从队列中选择进程并将它们加载到内存中以执行。进程加载到内存中以进行 CPU 调度。

作业调度程序的主要目标是提供均衡的作业组合,例如 I/O 绑定和处理器绑定。它还控制多道程序设计的程度。如果多道程序设计的程度是稳定的,则进程创建的平均速率必须等于离开系统的进程的平均离开速率。

在某些系统上,长期调度程序可能不可用或最少。分时操作系统没有长期调度程序。当进程将状态从新建更改为就绪时,则使用长期调度程序。

短期调度程序

它也称为CPU 调度程序。其主要目标是根据所选的一组标准提高系统性能。它是进程从就绪状态更改为运行状态。CPU 调度程序从已准备好执行的进程中选择一个进程,并将其分配给其中一个。

短期调度程序,也称为调度程序,决定下一个要执行哪个进程。短期调度程序比长期调度程序快。

中期调度程序

中期调度是交换的一部分。它将进程从内存中移除。它降低了多道程序设计的程度。中期调度程序负责处理交换出的进程。

如果正在运行的进程发出 I/O 请求,则它可能会变为挂起状态。挂起的进程无法朝着完成方向取得任何进展。在这种情况下,为了从内存中移除进程并为其他进程腾出空间,将挂起的进程移动到辅助存储器。此过程称为交换,并且该进程被称为交换出或推出。交换可能是为了改善进程组合而必需的。

调度程序比较

序号 长期调度程序 短期调度程序 中期调度程序
1 它是作业调度程序 它是 CPU 调度程序 它是进程交换调度程序。
2 速度低于短期调度程序 速度是其他两个中最快的 速度介于短期和长期调度程序之间。
3 它控制多道程序设计的程度 它对多道程序设计的程度控制较少 它降低了多道程序设计的程度。
4 在分时系统中几乎不存在或最少 在分时系统中也最少 它是分时系统的一部分。
5 它从池中选择进程并将它们加载到内存中以执行 它选择已准备好执行的进程 它可以将进程重新引入内存,并可以继续执行。

上下文切换

上下文切换是一种机制,用于在进程控制块中存储和恢复 CPU 的状态或上下文,以便稍后可以从同一点恢复进程执行。使用此技术,上下文切换器使多个进程能够共享单个 CPU。上下文切换是多任务操作系统功能的重要组成部分。

当调度程序将 CPU 从执行一个进程切换到执行另一个进程时,当前正在运行的进程的状态将存储到进程控制块中。在此之后,下一个要运行的进程的状态将从其自己的 PCB 中加载,并用于设置 PC、寄存器等。此时,第二个进程可以开始执行。

Process Context Switch

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

  • 程序计数器
  • 调度信息
  • 基址和界限寄存器值
  • 当前使用的寄存器
  • 更改的状态
  • I/O 状态信息
  • 计费信息
广告