长期调度器与短期调度器之间的区别

2025年6月18日 | 阅读 7 分钟

进程(Process)是正在执行的程序。现代计算机系统使用各种各样的进程。调度(Scheduling)是从众多进程中选择一个进程并将其分配给处理器执行的过程。调度器辅助完成这项任务。长期调度器和短期调度器是两种主要的调度器类型。总的来说,长期调度器维持较高的多道程序度,而短期调度器可以使系统运行得更好。在本文中,您将了解长期调度器和短期调度器之间的区别。但在讨论区别之前,您必须了解操作系统中的长期调度器和短期调度器。

什么是长期调度器?

长期调度器也称为作业调度器(Job Scheduler)。计算机上有许多进程在等待执行。这些进程在作业队列(Job Queue)中等待。长期调度器从作业队列或系统内存中选择一个作业,并将其带到就绪队列(Ready Queue)中以便在主内存中执行。通常,长期调度器从二级存储器中选择处理器密集型进程(CPU-bound)和输入/输出密集型进程(I/O-bound)的均衡组合。此外,多道程序度(degree of multiprogramming)被定义为就绪状态下进程的最大数量。它还有助于管理多道程序度。

长期调度器扮演什么角色?

长期调度器的主要目的是平衡处理器密集型活动(这些活动大部分时间在 CPU 上运行)和 I/O 密集型作业(这些作业大部分时间在 I/O 操作上运行),以减少处理时间。

为了使进程进入系统的平均速度与退出系统的平均速度相匹配,长期调度器必须维持多道程序度。由于每次执行完成都需要很长时间,因此长期调度器有充足的时间来选择要放入队列的进程。

长期调度器示例

设想一个长期调度器,它生成所有 I/O 密集型任务。在这种情况下,我们将无法充分利用 CPU,CPU 大部分时间都会处于空闲状态。然而,如果一个长期调度器生成所有 CPU 密集型进程,CPU 将长时间处于活动状态,设备将被低估,而等待 I/O 的队列将大部分时间处于空闲状态。

在这些情况下,我们将无法充分利用系统的全部功能。然而,如果我们能够通过长期调度器生成具有 CPU 密集型和 I/O 密集型工作理想组合的进程,我们将能够充分利用系统并缩短进程处理时间。

什么是短期调度器?

短期调度器也称为 CPU 调度器(CPU Scheduler)。短期调度器的主要工作是从就绪队列中选择一个已准备好运行的进程,并将其分配给处理器。与长期调度器相比,短期调度器的执行频率更高。它对多道程序度的控制较少。在分时系统中,短期调度器是最低限度的可用。

短期调度器扮演什么角色?

短期调度器,也称为 CPU 调度器,是操作系统的一个重要组成部分,它决定就绪队列中的哪个进程将获得 CPU。它通常每隔几毫秒运行一次,当一个进程被抢占或完成 I/O 操作时。调度器使用特定的调度算法,如轮转法(Round Robin)、最短作业优先(SJF)、优先级调度(Priority Scheduling)或先来先服务(FCFS),来决定哪个已准备好的进程可以运行。它的主要目标是减少 CPU 空闲时间并快速做出决策,以确保有效的 CPU 利用率和无缝的多任务处理。在选择一个进程后,调度器会执行一次上下文切换(context switch)。

这需要保存当前进程的状态,并从其进程控制块(PCB)加载新进程的状态。在此之后,选定的进程将使用 CPU,直到它完成输入或输出阻塞,或者结束。为了确保系统响应性和每个进程的公平性,短期调度器会反复执行此循环。由于其频繁的操作,它需要轻量级且快速,以防止性能问题。当前的 multitasking 系统必须高效运行,才能提供可靠且无缝的用户体验。

对性能的影响

系统的性能在很大程度上取决于短期调度器的选择。如果短期调度器只选择具有非常长执行时间的进程,其他进程可能会进入饥饿状态。由于系统性能是我们的首要目标,在选择短期调度器时请务必具体。

长期调度器和短期调度器之间的主要区别

long term Scheduler vs short term Scheduler

在这里,您将了解长期调度器和短期调度器之间的主要区别。长期调度器和短期调度器之间的各种区别如下:

  1. 长期调度器是一种操作系统调度器,它从作业队列中选择进程并将它们加载到主内存中执行。另一方面,短期调度器是一种操作系统调度器,它从处理器运行的多个进程中选择进程
  2. 长期调度器从作业池(job pool)中选择进程或作业。相比之下,短期调度器从就绪队列中选择进程。
  3. 长期调度器控制多道程序度。相比之下,短期调度器对多道程序的控制较少。
  4. 长期调度器将作业分配给就绪队列,供短期调度器进一步处理,这被称为作业调度器。相比之下,短期调度器将任务分配给 CPU 以进行处理,因此也称为 CPU 调度器。
  5. 短期调度器比长期调度器更频繁地从作业池中选择进程。
  6. 长期调度器的速度比短期调度器慢。

长期调度器和短期调度器之间的逐项比较

在这里,您将了解长期调度器和短期调度器之间的逐项比较。长期调度器和短期调度器之间的一些逐项比较如下:

长期调度器短期调度器
它是一种操作系统调度器,它从作业队列中选择进程并将它们加载到主内存中执行。它是一种操作系统调度器,它从处理器运行的多个进程中选择进程。
它也被称为作业调度器。它也被称为 CPU 调度器。
它速度较慢。它速度更快。
它控制多道程序度。它对多道程序度提供较少的控制。
它选择进程的频率较低。它选择进程的频率较高。
它始终存在于批处理操作系统(Batch OS)中,而在分时操作系统(Time-Sharing OS)中可能存在,也可能不存在。它存在于批处理操作系统中,在分时操作系统中仅最低限度地存在。
它从作业池中选择进程。它从就绪队列中选择进程。
它选择输入/输出密集型和 CPU 密集型的良好组合的进程。它相当频繁地为处理器选择一个新进程。

结论

为了调度目的,长期调度器和短期调度器都是必需的。长期调度器将进程从内存加载到就绪队列。它从硬盘的作业池中选择作业后,将其加载到内存的就绪队列中。其主要目标是控制多道程序级别并保持 CPU 密集型和 I/O 密集型进程的均衡组合。它的运行频率不高。

相比之下,短期调度器将 CPU 分配给就绪队列中的当前进程。它从就绪队列中选择一个任务,并将其交给 CPU 执行。它由时间片完成、I/O 请求和进程终止等事件触发。它的目标是确保快速的响应时间并有效利用 CPU。

常见问题解答

长期调度器的主要功能是什么?

长期调度器决定将哪些进程从作业池添加到就绪队列。通过内存进程限制,它控制多道程序级别。

短期调度器的目的是什么?

短期调度器从就绪队列中选择一个进程,并将其分配给 CPU。它通过控制 CPU 分配来管理进程执行。

这些调度器的操作频率是多少?

通常,当进程完成或系统需要更多作业时,长期调度器会不频繁地运行。短期调度器非常频繁地运行,有时每隔几毫秒就会运行一次。

这两个调度器是否处理内存管理任务?

不,长期调度器通过控制加载到内存中的进程数量来间接影响内存。内存对短期调度器而言不如 CPU 调度重要。

如果缺少长期调度器会发生什么?

没有长期调度器,系统可能会因过多的进程而过载,从而降低性能。这可能导致内存压力过大或 CPU 争用。

哪个调度器更快?

由于短期调度器必须迅速决定哪个进程将获得 CPU,因此它更快、响应性更强。由于其不频繁的决策,长期调度器可能需要更多时间。

每个操作系统都安装了这两个调度器吗?

不一定。某些系统,尤其是较新的系统,可能没有明确的长期调度器,而是依赖于负载控制策略或中期调度。