低级调度、中级调度和高级调度
目录
概述
这三种调度的核心区别在于它们发生的频率和所管理资源的范围。我们可以通过一个形象的比喻来理解:
- 高级调度(作业调度):决定谁有资格进入赛场。它从提交的“程序”(作业)中选择一些,允许它们进入系统,成为有资格竞争CPU的“进程”。这个决策周期很长(分钟级)。
- 中级调度(内存调度):决定谁暂时离开赛场去休息室,以便让其他人上场。当内存紧张时,它会将暂时不活跃的进程从内存“换出”到磁盘,等需要时再“换入”。这平衡了内存中进程的数量。
- 低级调度(进程调度):决定赛场上现在该谁跑。它从就绪队列中选择一个进程,将CPU的实际使用权分配给它。这个决策发生得非常频繁(毫秒级)。
下面是详细的分解。
1. 低级调度(Low-Level Scheduling)
也称为短期调度或CPU调度。
- 功能:这是最核心、最频繁的调度。它的主要任务是按照某种算法(如先来先服务、短作业优先、时间片轮转、优先级调度等),从就绪队列中选择一个进程,并将CPU的控制权交给它。
- 频率:非常高,通常在几十毫秒到几百毫秒就会发生一次。时钟中断、I/O完成等事件都可能触发低级调度。
- 目标:
- 公平性:确保每个进程都能公平地分享CPU时间。
- 高吞吐量:使单位时间内完成的进程数量尽可能多。
- 低延迟:使进程的响应时间尽可能短。
- CPU利用率:尽可能让CPU保持忙碌状态。
- 例子:你同时在电脑上打开浏览器、音乐播放器和Word文档。低级调度器在不断快速切换,让浏览器的标签页运行几毫秒,然后切换到音乐播放器解码一点音频,再切换到Word处理你的按键输入。由于速度极快,你感觉这些程序在同时运行。
2. 中级调度(Medium-Level Scheduling)
也称为内存调度。它是实现交换(Swapping) 技术的关键。
- 功能:
- 换出(Swap-out):当系统的物理内存不足时,中级调度器会将内存中某些暂时处于阻塞或睡眠状态的进程(例如正在等待用户输入或网络数据)挂起,并将其整个地址空间移动到磁盘的交换区中,从而释放出物理内存供其他进程使用。
- 换入(Swap-in):当被换出的进程重新变得可运行(例如用户输入了数据),且内存有空闲时,中级调度器会将其从磁盘交换区重新加载回内存,并使其进入就绪队列,等待低级调度。
- 频率:中等,介于高级和低级调度之间,通常在秒级。
- 目标:
- 平衡系统负载,防止内存过度拥挤。
- 通过“假装”拥有比物理内存更大的空间,提高系统的多道程序度(即同时容纳的进程数量)。
- 改善系统整体性能。
- 例子:你打开了20个浏览器标签页,但只有前5个是活跃的。中级调度器可能会将后面15个不活跃的标签页对应的进程暂时“交换”到硬盘上,从而为你现在正在使用的Photoshop和游戏腾出更多内存。当你点击一个被换出的标签页时,系统会稍有延迟(因为需要从硬盘读回),然后它才变得活跃。
3. 高级调度(High-Level Scheduling)
也称为作业调度或长期调度。
- 功能:它决定了哪些待处理的作业(程序)可以被系统接纳并开始执行。当一个用户程序被提交(例如双击一个应用图标)时,它并不会立即开始竞争CPU,而是先被高级调度器审查。调度器根据系统的当前负载和多道程序度的限制,决定是立即将其变为进程,还是让其在外存(磁盘)的作业队列中等待。
- 频率:非常低,可能是几分钟甚至更长时间才进行一次决策。
- 目标:
- 控制进入系统的并发进程数量,防止系统因过载而性能下降。
- 在批处理系统中,它可能会根据作业的类型(CPU密集型或I/O密集型)来组合调度,以平衡资源使用。
- 例子:
- 在一个大型服务器的批处理系统中,管理员提交了100个计算任务。高级调度器每次只允许其中10个任务进入系统开始执行,以避免所有任务同时竞争资源导致系统崩溃。
- 在你的个人电脑上,当你双击启动一个大型游戏时,操作系统(的高级调度功能)会决定是否有足够的资源来启动它。如果有,游戏进程被创建并进入就绪队列;如果没有,你可能只会看到一个沙漏或旋转光标,需要等待。
总结对比表
| 特性 | 高级调度(作业调度) | 中级调度(内存调度) | 低级调度(CPU调度) |
|---|---|---|---|
| 调度对象 | 作业(程序) | 进程(主要是阻塞态进程) | 进程(就绪态进程) |
| 主要功能 | 决定是否创建新进程 | 在内存和磁盘间交换进程 | 分配CPU给就绪进程 |
| 发生频率 | 低(分钟级) | 中(秒级) | 高(毫秒级) |
| 主要目标 | 控制系统负载,平衡I/O和CPU型作业 | 平衡内存中进程数量,提高多道程序度 | 提高CPU利用率,优化系统响应时间 |
| 所处位置 | 外存(作业队列) ↔ 内存 | 内存 ↔ 外存(交换区) | 内存(就绪队列) ↔ CPU |
三者如何协同工作
一个进程的生命周期完美地体现了这三种调度的协作:
- 高级调度:你提交一个程序(如一个视频剪辑软件),高级调度器允许它进入系统,为其创建初始进程,该进程进入就绪状态。
- 低级调度:低级调度器在某个时刻选中这个视频剪辑进程,让它开始在CPU上运行。
- 中级调度:在运行过程中,该进程需要读取一个非常大的视频文件,于是发起I/O请求并进入阻塞状态等待磁盘数据。此时,中级调度器可能会判断内存紧张,于是将该阻塞的进程换出到磁盘。
- 中级调度(再次):当磁盘I/O操作完成,数据准备好时,中级调度器会将该进程换入回内存,其状态从阻塞变为就绪。
- 低级调度(再次):低级调度器再次选中这个就绪的进程,让它继续在CPU上运行。
- 这个过程(步骤2-5)会重复多次,直到进程结束。
- 进程结束后,系统回收其所有资源。
通过这三层调度的精密配合,操作系统才能在资源有限的情况下,为用户提供稳定、高效、仿佛拥有无限资源的多任务环境。
Do not communicate by sharing memory; instead, share memory by communicating.

浙公网安备 33010602011771号