操作系统快速复习(处理机调度)
在学习操作系统处理机调度的时候,书上有些内容确实看不懂,而且枯燥无趣,王道操作系统还不错,我是通过这个来学习的,顺便将其精华部分做了一些小结。首先大致了解下处理机调度:调度层次,调度原因,调度方式以及典型的调度算法,下面就展开叙述。
一、处理机调度基本概念
- 从就绪队列中按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程并发地执行。
二、调度层次
2.1 作业调度(高级调度) 长程调度
每个作业只调入一次、调出一次执行频率低
外存 --> 内存(面向作业)
2.2 内存调度(中级调度)
将暂时不能运行的的进程调至外存等待,当具备运行条件且内存空闲,则重新调入内存(就绪态)
外存 --> 内存(面向进程)
2.3 进程调度(低级调度)短程调度
操作系统最基本的一种调度,频率高
内存 --> CPU
三级调度总结
三、调度时机、切换与过程
进程调度和切换程序时操作系统内核程序。
3.1 时机
- 什么时候不能进行进程调度
- 处理中断的过程中
- 进程在操作系统内核程序临界区中
- 原子操作过程中
- 什么时候需要进程调度
- 主动放弃
- 进程正常终止
- 运行过程中发生异常而终止
- 主动阻塞(比如等待I/O)
- 被动放弃
- 时间片用完
- 有更紧急的事情处理(I/O中断)
- 有更高优先级的进程进入就绪队列
- 主动放弃
3.2 切换与过程
切换过程
保存原进程当前切换点的现场信息(对原来运行进程各种数据的保存)
对新的进程各种数据的恢复
进程调度、切换是有代价的
三、调度的基本准则
3.1 CPU利用率
CPU“忙碌”的时间占总时间的比例,有时也计算某设备利用率
3.2 系统吞吐量
单位时间内完成作业的数量
3.3 周转时间
3.4 等待时间
进程 or 作业 等待被服务的时间之和(进程等待处理机状态时间之和)。
平均等待时间即 各个 进程/作业 等待时间的平均值
3.5 响应时间
从用户提交请求到首次产生响应所用的时间
四、调度方式
- 非剥夺调度方式(非抢占式)
只能由当前运行的进程主动放弃CPU - 剥夺调度方式(抢占式)
可由操作系统剥夺当前进程的CPU使用权
五、典型调度算法
5.1 先来先服务(FCFS)
- 算法思想
主要从公平的角度考虑 - 算法规则
按照作业/进程到达的先后顺序进行调度
即:优先考虑在系统中等待时间最长的作业 - 适用调度类型
进程调度和作业调度 - 可抢占否
非抢占式算法 - 优点
满足公平原则,且算法容易实现,比较利于长作业/进程 - 缺点
排在长进程后的短进程的等待时间大,而且带权周转时间大,不利于短作业/进程和I/O型的作业 - 是否会饥饿
不会
有利于CPU繁忙型,不利于I/O繁忙型
5.2 短作业优先(SJF)
- 算法思想
实际上,短进程/作业(要求服务时间最短)在实际情况中占有很大比例
为了使得它们优先执行,追求最少的平均等待时间时间、平均周转时间、平均带权周转时间 - 算法规则
要求服务时间最短的进程/作业优先得到服务 - 适用调度类型
进程调度和作业调度 - 可抢占否
非抢占式算法,但是也有抢占式版本,即:最短剩余时间优先算法(SRTN) - 优点
可以得到最少的平均等待时间时间、平均周转时间、平均带权周转时间 - 缺点
不公平,对长作业不友好,对短作业友好 - 是否会饥饿
会(短作业优先可能导致长作业一直得不到处理)
5.3 高响应比优先(HRRN)
- 算法思想
综合考虑等待时间和运行时间 - 算法规则
在每次调度时,先计算各个作业/进程的优先权
优先权=响应比=(等待时间+要求服务时间)/要求服务时间=响应时间/要求服务时间
选择优先权高的进行服务 - 适用调度类型
进程调度和作业调度 - 可抢占否
非抢占式算法 - 优点
综合考虑了等待时间和要求服务时间,在等待时间相同时,要求服务的时间愈短,其优先权愈高,拥有SJF的优点
在要求服务时间相同时,作业的优先权决定于其等待时间,等待时间愈长,其优先权愈高,拥有FCFS的优点 - 缺点
需要计算优先权,增加了系统的开销 - 是否会饥饿
不会
有利于短作业
5.4 优先级调度
- 算法思想
根据任务的紧急程度进行调度 - 算法规则
调度时选择优先级最高的作业/进程,为其分配处理机 - 适用调度类型
进程调度、作业调度、I/O调度 - 可抢占否
抢占式算法和非抢占式算法 - 优点
用优先级区分任务的紧急程度,适用于实时操作系统。 - 缺点
如果有源源不断的高优先级进程到来,那么低优先级的进程可能会饥饿 - 是否会饥饿
会 - 进程优先级设置原则
系统进程>用户进程
交互型进程>非交互进程
I/O型进程>计算型进程
5.5 时间片轮转(RR)
- 算法思想
公平的、轮流的为各个进程服务,让每个进程在一定时间间隔内都可以得到响应 - 算法规则
系统根据FCFS策略,将所有的就绪进程排成一个就绪队列。
轮流让各个进程执行一个时间片的,若进程未在一个时间片内执行完,则被剥夺处理机,将进程放到就绪队列队尾重新排队。 - 适用调度类型
进程调度 - 可抢占否
抢占式算法 - 优点
公平、响应快,适用于分时操作系统 - 缺点
由于高频率的进程切换,增加了开销,并且它不区分任务的紧急程度 - 是否会饥饿
不会
时间片过小:有利于短作业,因为它能在该时间片内完成,但是,意味着频繁的执行进程调度和进程上下文的切换,增加系统的开销。即:退化为短作业优先算法 。
时间片过大:每个进程都能在一个时间片内完成,即退化为FCFS算法。
5.6 多级反馈队列
- 算法思想
对以上调度算法的权衡和弥补 - 算法规则
1、设置多个就绪队列,各级队列的优先级由高到低,时间片从小到大;
2、新进程到达时先进入第一级队列,按照FCFS的原则排队等待被分配时间片,若时间片已经用完进程还没结束,则进程进入下一级队尾,如果此时进程已经在最低一级的队列,则将其重新放回该队列的队尾;
3、只有第k级队列为空时,才会为第k+1级队列分配时间片 - 适用调度类型
进程调度 - 可抢占否
抢占式算法,当第k级队列在运行过程中,若更上级的队列到来了一个新进程
由于优先级问题,新进程会抢占处理机,并将原来运行的进程放回第k级队列的队尾 - 优点
对各种类型的进程都比较公平,每个新到达的进程都会很快得到响应
短进程只用较少的时间就可以完成,不用估计进程的运行时间。 - 缺点
/ - 是否会饥饿
可能会导致饥饿,概率不大