处理机调度是对处理机进行分配,即从就绪队列按照一定的算法(公平、高效)选择一个进程并将处理机分配给它运行,以实现进程并发地执行。
三级调度
- 作业调度(高级调度):内存与辅存之间的调度,多道批处理系统大多配有
- 中级调度(内存调度):提高内存利用率和系统吞吐量,将暂时不能运行的进程调至外存(挂起态)
- 进程调度(低级调度):最基本的调度,不可或缺,频率很高(一般十几毫秒一次)
调度频率:作业调度 < 中级调度 < 进程调度。
调度的时机
不能进行进程调度与切换的情况:
- 在处理中断的过程中
- 进程在操作系统内核程序临界区中(普通临界区中可以进行调度)
- 其他需要完全屏蔽中断的原子操作过程中
调度方式
- 非剥夺调度方式(非抢占方式)
- 剥夺调度方式(抢占方式)
调度的基本准则
- CPU 利用率
- 系统吞吐量
- 周转时间:周转时间 = 作业完成时间 - 作业提交时间;带权周转时间 = 作业周转时间 / 作业实际运行时间
- 等待时间
- 响应时间
典型调度算法
| 算法 | 类型 | 特点 |
|---|---|---|
| 先来先服务(FCFS) | 不可剥夺 | 简单但效率低;对长作业有利、对短作业不利;利于 CPU 繁忙型作业,不利于 I/O 繁忙型作业 |
| 短作业优先(SJF) | - | 平均等待时间、平均周转时间最少;长作业可能「饥饿」 |
| 优先级调度 | 非剥夺式 / 剥夺式 | 静态优先级或动态优先级 |
| 高响应比优先(HRRN) | - | 响应比 = (等待时间 + 要求服务时间)/ 要求服务时间 |
| 时间片轮转(RR) | 可剥夺 | 适用于分时系统;时间片由系统响应时间、就绪进程数和系统处理能力确定 |
| 多级反馈队列 | - | 时间片轮转和优先级调度的综合和发展;兼顾终端型、短批处理和长批处理作业用户 |
优先级设置规则:系统进程 > 用户进程;交互型进程 > 非交互型进程(前台 > 后台);I/O 型进程 > 计算型进程。