低级调度、中级调度和高级调度


概述

这三种调度的核心区别在于它们发生的频率和所管理资源的范围。我们可以通过一个形象的比喻来理解:

  • 高级调度(作业调度)决定谁有资格进入赛场。它从提交的“程序”(作业)中选择一些,允许它们进入系统,成为有资格竞争CPU的“进程”。这个决策周期很长(分钟级)。
  • 中级调度(内存调度)决定谁暂时离开赛场去休息室,以便让其他人上场。当内存紧张时,它会将暂时不活跃的进程从内存“换出”到磁盘,等需要时再“换入”。这平衡了内存中进程的数量。
  • 低级调度(进程调度)决定赛场上现在该谁跑。它从就绪队列中选择一个进程,将CPU的实际使用权分配给它。这个决策发生得非常频繁(毫秒级)。

下面是详细的分解。


1. 低级调度(Low-Level Scheduling)

也称为短期调度CPU调度

  • 功能:这是最核心、最频繁的调度。它的主要任务是按照某种算法(如先来先服务、短作业优先、时间片轮转、优先级调度等),从就绪队列中选择一个进程,并将CPU的控制权交给它。
  • 频率非常高,通常在几十毫秒到几百毫秒就会发生一次。时钟中断、I/O完成等事件都可能触发低级调度。
  • 目标
    • 公平性:确保每个进程都能公平地分享CPU时间。
    • 高吞吐量:使单位时间内完成的进程数量尽可能多。
    • 低延迟:使进程的响应时间尽可能短。
    • CPU利用率:尽可能让CPU保持忙碌状态。
  • 例子:你同时在电脑上打开浏览器、音乐播放器和Word文档。低级调度器在不断快速切换,让浏览器的标签页运行几毫秒,然后切换到音乐播放器解码一点音频,再切换到Word处理你的按键输入。由于速度极快,你感觉这些程序在同时运行。

2. 中级调度(Medium-Level Scheduling)

也称为内存调度。它是实现交换(Swapping) 技术的关键。

  • 功能
    1. 换出(Swap-out):当系统的物理内存不足时,中级调度器会将内存中某些暂时处于阻塞睡眠状态的进程(例如正在等待用户输入或网络数据)挂起,并将其整个地址空间移动到磁盘的交换区中,从而释放出物理内存供其他进程使用。
    2. 换入(Swap-in):当被换出的进程重新变得可运行(例如用户输入了数据),且内存有空闲时,中级调度器会将其从磁盘交换区重新加载回内存,并使其进入就绪队列,等待低级调度。
  • 频率中等,介于高级和低级调度之间,通常在秒级。
  • 目标
    • 平衡系统负载,防止内存过度拥挤。
    • 通过“假装”拥有比物理内存更大的空间,提高系统的多道程序度(即同时容纳的进程数量)。
    • 改善系统整体性能。
  • 例子:你打开了20个浏览器标签页,但只有前5个是活跃的。中级调度器可能会将后面15个不活跃的标签页对应的进程暂时“交换”到硬盘上,从而为你现在正在使用的Photoshop和游戏腾出更多内存。当你点击一个被换出的标签页时,系统会稍有延迟(因为需要从硬盘读回),然后它才变得活跃。

3. 高级调度(High-Level Scheduling)

也称为作业调度长期调度

  • 功能:它决定了哪些待处理的作业(程序)可以被系统接纳并开始执行。当一个用户程序被提交(例如双击一个应用图标)时,它并不会立即开始竞争CPU,而是先被高级调度器审查。调度器根据系统的当前负载和多道程序度的限制,决定是立即将其变为进程,还是让其在外存(磁盘)的作业队列中等待。
  • 频率非常低,可能是几分钟甚至更长时间才进行一次决策。
  • 目标
    • 控制进入系统的并发进程数量,防止系统因过载而性能下降。
    • 在批处理系统中,它可能会根据作业的类型(CPU密集型或I/O密集型)来组合调度,以平衡资源使用。
  • 例子
    • 在一个大型服务器的批处理系统中,管理员提交了100个计算任务。高级调度器每次只允许其中10个任务进入系统开始执行,以避免所有任务同时竞争资源导致系统崩溃。
    • 在你的个人电脑上,当你双击启动一个大型游戏时,操作系统(的高级调度功能)会决定是否有足够的资源来启动它。如果有,游戏进程被创建并进入就绪队列;如果没有,你可能只会看到一个沙漏或旋转光标,需要等待。

总结对比表

特性 高级调度(作业调度) 中级调度(内存调度) 低级调度(CPU调度)
调度对象 作业(程序) 进程(主要是阻塞态进程) 进程(就绪态进程)
主要功能 决定是否创建新进程 在内存和磁盘间交换进程 分配CPU给就绪进程
发生频率 低(分钟级) 中(秒级) 高(毫秒级)
主要目标 控制系统负载,平衡I/O和CPU型作业 平衡内存中进程数量,提高多道程序度 提高CPU利用率,优化系统响应时间
所处位置 外存(作业队列) ↔ 内存 内存 ↔ 外存(交换区) 内存(就绪队列) ↔ CPU

三者如何协同工作

一个进程的生命周期完美地体现了这三种调度的协作:

  1. 高级调度:你提交一个程序(如一个视频剪辑软件),高级调度器允许它进入系统,为其创建初始进程,该进程进入就绪状态。
  2. 低级调度:低级调度器在某个时刻选中这个视频剪辑进程,让它开始在CPU上运行。
  3. 中级调度:在运行过程中,该进程需要读取一个非常大的视频文件,于是发起I/O请求并进入阻塞状态等待磁盘数据。此时,中级调度器可能会判断内存紧张,于是将该阻塞的进程换出到磁盘。
  4. 中级调度(再次):当磁盘I/O操作完成,数据准备好时,中级调度器会将该进程换入回内存,其状态从阻塞变为就绪
  5. 低级调度(再次):低级调度器再次选中这个就绪的进程,让它继续在CPU上运行。
  6. 这个过程(步骤2-5)会重复多次,直到进程结束。
  7. 进程结束后,系统回收其所有资源。

通过这三层调度的精密配合,操作系统才能在资源有限的情况下,为用户提供稳定、高效、仿佛拥有无限资源的多任务环境。

posted @ 2025-11-22 12:04  morty-root  阅读(212)  评论(0)    收藏  举报