计算机操作系统——处理机调度算法
一、处理机调度的层次和调度算法的目标
1.处理及调度的层次
- 高级调度:(周期较长,大约几分钟一次) 又称为长程调度或作业调度 调度对象:作业 功能:根据算法决定将外存中处于后备队列的作业调入内存,然后为它们创建进程(建立PCB)、分配必要的资源,使它们获得竞争处理及的权利,作业调度时会建立相应的PCB,作业调出时才撤销PCB。
主要用于:多道批处理系统 - 中级调度: 又称为内存调度 调度对象:进程 功能:提高内存利用率和系统吞吐量,把内存中暂时不能运行的进程,调至外存等待,此时的进程处于挂起状态。当它们具备运行条件并且内存有空间时,中级调度来决定把外存的哪些就绪进程重新调入内存。
- 低级调度:(最基本的调度,使用频率最高,分时系统在10~100ms进行一次进程调度) 又称为进程调度或短程调度 调度对象:进程(或内核级线程) 功能:根据某种算法,决定哪个进程获得处理机,并由分派程序将处理机分配给被选中的进程
2.处理机调度算法目标
-
处理机调度算法的共同目标
(1)资源利用率 CPU的利用率: (2)公平性:让所有进程获得合理的CPU时间,尽量不产生饥饿现象
(3)平衡性
(4)策略强制执行 -
批处理系统的目标
(1)平均周转时间短
周转时间=等待时间+执行时间=完成时刻-到达时刻
平均周转时间=各进程周转时间之和/进程的个数
带权周转时间=周转时间/CPU提供服务的时间
(2)系统吞吐量高 吞吐量:单位时间内系统完成的作业数,它与批处理作业的平均长度有关
(3)处理机利用率高 -
分时系统的目标
(1)响应时间按快
(2)均衡性 -
实时系统的目标
(1)截止时间的保证
(2)可预测性
二、 非抢占式调度算法
1.先来先服务调度算法(FCFS,First-Come-First-Served)
- 算法规则:按照作业/进程到达的先后顺序进行服务
- 优点:公平,实现简单
- 缺点:带权周转时间长,对长作业有利,短作业不利
例题详解:(解题方式我习惯于用数轴表示,也可以画表格,但是感觉不如数轴看着形象)
2.短作业优先调度算法(SJF,Short-Job-First)
- 算法规则:最短的进程/作业优先得到服务
- 该算法也有抢占式
- 优点:减少了平均等待时间和平均周转时间
- 缺点:对短作业有利,长作业不利,容易产生饥饿现象;必须预知作业的运行时间;人——机无法实现交互;未考虑作业的紧迫程度,不能保证紧迫性作业及时得到处理。
例题详解:
3.高响应比优先调度算法(HRRN,Highest-Response-Ratio-Next)
- 算法规则:每次调度时先计算响应比,选择响应比最高的进行服务
- 优点:避免了长作业饥饿的问题,集合了SJF和FCFS的优点
响应比大的优先调度(不值得等待的进程优先调度)
响应比越小,等得越值得
例题详解:
三、抢占式调度算法
进程调度的机制:(1)排队器(2)分派器(3)上下文切换器
进程调度方式:抢占式、非抢占式
抢占式的剥夺原则:(1)优先权原则 (2)短进程优先原则 (3)时间片原则
1.轮转调度算法(时间片轮转)
轮转调度算法:
(1)基本原理:将所有就绪进程按FCFS排成一个就绪队列,系统设置每隔一定时间便产生一次中断,去激活进程调度程序进行调度,把CPU分配给队首进程,并令其执行下一个时间片…
(2)切换机制:
a.若一个时间片尚未用完,正在运行的进程便已经完成,就立即激活调度程序,将它从就绪队列中删除,再调度就绪队列中队首的进程进行,并启动一个新的时间片。
b.在时间片用完时,如果进程尚未运行完成,调度程序将把它送往就绪队列的末尾。
时间片大小的确定:
(1)时间片太小:增加系统的开销
(2)时间片太大:时间片轮转便退化为FCFS算法,无法满足交互式用户需求
时间片轮转调度算法常用于分时操作系统,更注重“响应时间”,因而此处不计算周转时间
2.优先级调度算法
(分为抢占式和非抢占式)
优先级类型:
(1)静态优先级
(2)动态优先级
3.多级反馈队列调度算法
调度机制
- 首先设置多级就绪队列
每个就绪队列分配不同的时间片,优先级高的为第一队列,时间片最小,随着就绪队列级别的降低,时间片逐渐增大。- 每个进程按照先来先服务调度算法
一个进程就绪后进入第一级队列末尾- 当有一个优先级更高的进程就绪时,可以抢占CPU,被强占进程回到原来一级的就绪队列末尾。
- 当第一级别队列空时,就去调度第二队列,…以此类推。
- 当时间片结束后,进程放弃CPU,转入下一级队列。
多级反馈队列示意图: