操作系统中的进程调度程序

2025年5月2日 | 阅读 5 分钟

引言

进程被定义为当前正在运行的计算机程序。

  • 由于在支持多道程序的操作系统上可以同时运行多个进程,因此调度至关重要。
  • 选择在 CPU 上运行的应用程序是操作系统 (OS) 的主要职责之一。
  • 操作系统中重要的进程调度程序负责确定 CPU 应首先运行哪些进程。简而言之,它们控制 CPU 在多个竞争任务或进程之间的时间分配。

什么是进程调度?

进程调度是指进程管理器根据特定策略将活动进程从 CPU 中移除并选择不同进程的任务。进程在其生命周期中会在不同的调度队列之间切换,包括设备队列、等待队列和就绪队列。

Process Schedulers in Operating Systems

进程调度程序的类型

1. 长期调度程序

长期调度程序也称为作业调度程序。它从池(辅助内存)中选择进程,并将其保存在主内存中维护的就绪队列中。

长期调度程序主要控制多道程序的程度。长期调度程序的目的是在池中存在的作业中选择 IO 密集型和 CPU 密集型进程的完美组合。

如果作业调度程序选择更多的 IO 密集型进程,那么所有作业可能一直处于阻塞状态,CPU 在大部分时间都将保持空闲。这将降低多道程序的程度。因此,长期调度程序的工作非常关键,可能会在很长一段时间内影响系统。

2. 短期调度程序

短期调度程序也称为 CPU 调度程序。它从就绪队列中选择一个作业,并将其分派给 CPU 执行。

调度算法用于选择哪个作业将被分派执行。短期调度程序的工作可能非常关键,因为如果它选择的作业的 CPU 突发时间非常高,那么之后的所有作业都必须在就绪队列中等待很长时间。

这个问题称为饥饿,如果短期调度程序在选择作业时犯了一些错误,就可能出现这个问题。

3. 中期调度程序

中期调度程序处理被换出的进程。如果运行状态的进程需要一些 IO 时间才能完成,则需要将其状态从运行更改为等待。

中期调度程序用于此目的。它将进程从运行状态中移除,以便为其他进程腾出空间。这些进程是被换出的进程,此过程称为交换。中期调度程序负责暂停和恢复进程。

它降低了多道程序的程度。交换是必要的,以确保就绪队列中进程的完美组合。

Process Schedulers in Operating Systems

中期调度程序

不同类型调度程序的比较

长期调度程序短期调度程序中期调度程序
它是一个作业调度程序。它是一个 CPU 调度程序。它是一个在进程之间切换的调度程序。
最慢的调度程序在速度方面,它是最快的调度程序速度介于短期和长期计划程序之间。
它控制多道程序的级别对多道程序数量的控制较少。它降低了多道程序的程度
分时系统几乎不存在(或)可能不存在。它是一个最小的分时系统。分时系统组件包括它。
进程可以通过重新进入内存来恢复执行。它选择准备执行的进程。它可以将进程带回内存,以便它可以继续运行。

调度分类

调度可分为两种类型。

  1. 非抢占式:这意味着进程在完成执行之前不能被抢占资源。它在运行进程结束并进入等待状态时切换资源。
  2. 抢占式:在这种情况下,操作系统可以将进程状态从运行更改为就绪。这种切换的发生是因为 CPU 优先考虑其他进程,并将优先级较高的进程替换为当前正在运行的进程。

其他调度程序

  1. I/O 调度程序:这些调度程序负责控制 I/O 操作(例如读写磁盘或网络)的执行方式。为了决定 I/O 操作的执行顺序,它们可以使用各种算法,包括 RR(循环)和 FCFS(先到先服务)。
  2. 实时调度程序:这些系统确保重要任务在给定时间内完成。它们能够使用各种算法(包括 RM(速率单调)和 EDF(最早截止时间优先))调度和优先级任务。

上下文切换

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

当调度程序将 CPU 从一个进程切换到另一个进程时,活动进程的状态存储在进程控制块中。计算机、寄存器等由状态设置,然后从其自己的 PCB 加载以供后续进程。第二个进程可以开始处理。

Process Schedulers in Operating Systems

在进程控制块中,上下文切换是一种存储和恢复 CPU 状态或上下文的机制,以便进程可以在以后从同一点执行。此技术允许多个进程共享一个 CPU,这得益于上下文切换器。上下文切换是任何多任务操作系统的重要特性。

  • 程序计数器。
  • 调度信息。
  • 基址和限长寄存器的值。
  • 活动寄存器。
  • 更改的状态。
  • 关于 I/O 状态的详细信息。
  • 记账数据。

结论

进程调度程序是操作系统的关键组件,它们控制 CPU 如何管理多个任务或进程。通过确保进程有效执行,它们可以最大限度地利用 CPU 资源并保持系统响应能力。调度程序通过在适当的时间选择适当的进程运行,帮助最大限度地提高系统性能,增强用户体验,并确保竞争进程之间公平访问 CPU 资源。


下一主题进程队列