操作系统-进程调度


定义

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

进程调度是多道程序操作系统的重要组成部分。这种操作系统允许一次将多个进程加载到可执行存储器中,并且加载的进程使用时间复用共享CPU。

调度的类别

调度有两类:

  1. 非抢占式: 在进程完成执行之前,不能从进程中获取资源。当正在运行的进程终止并进入等待状态时,就会发生资源切换。
  2. 抢占式:操作系统在固定的时间内将资源分配给进程。在资源分配过程中,进程从运行状态切换到就绪状态,或者从等待状态切换到就绪状态。这种切换的发生是因为CPU可能会优先考虑其他进程,并用正在运行的进程替换具有更高优先级的进程。

进程调度队列

操作系统在进程调度队列中维护所有进程控制块 (PCB)。操作系统为每个进程状态维护一个单独的队列,所有处于相同执行状态的进程的PCB都放置在同一个队列中。当进程的状态发生更改时,其 PCB 会与其当前队列取消链接,并移至新的状态队列。

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

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

  • 就绪队列- 该队列保留一组驻留在主内存中的所有进程,准备好并等待执行。新进程总是被放入该队列中。

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

进程调度排队

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

两种状态过程模型

双状态进程模型是指运行和非运行状态,如下所述 -

序列号 状态及描述
1

跑步

当一个新进程创建时,它就进入系统并处于运行状态。

2

未运行

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

调度程序

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

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

长期调度程序

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

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

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

短期调度程序

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

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

中期调度程序

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

如果正在运行的进程发出 I/O 请求,则可能会挂起。暂停的进程无法在完成方面取得任何进展。在这种情况下,为了从内存中删除该进程并为其他进程腾出空间,挂起的进程将被移动到辅助存储中。这个过程称为交换,这个过程被称为交换出或转出。为了改进流程组合,可能需要进行交换。

调度器比较

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

上下文切换

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

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

进程上下文切换

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

  • 程序计数器
  • 调度信息
  • 基址和限制寄存器值
  • 当前使用的寄存器
  • 改变状态
  • I/O状态信息
  • 会计信息