操作系统复习
第三章 进程管理
3.3 进程调度
一、处理机调度的基本概念
1.调度的类型
- 高级调度:作业调度
- 多道批处理系统中,决定将哪些作业从外存调入内存
- 低级调度:进程(或内核级线程)调度
- 决定就绪队列中的哪个进程获得处理机
- 要解决的问题
- WHEN:进程调度时机:何时分配CPU
- HOW:进程调度方式:如何分配CPU
- WHAT:进程调度算法:按什么原则分配CPU
- 中级调度:内存调度
- 决定进程在内外存之间的对换(挂起和激活)
2.调度的性能准则
- 面向用户
- 周转时间(批处理系统)
- 周转时间=作业完成事件-作业完成时间
- 平均周转时间=Σ周转时间/作业个数
- 平均带权周转时间
- 响应时间(分时系统)
- 优先级
- 周转时间(批处理系统)
计算:不同调度策略下,一批作业的平均周转时间
- 面向系统
- 吞吐量(批处理系统)
- 处理机利用率(批处理系统)
- 公平性(分时系统)
- 调度算法本身
- 易于实现
- 执行开销比
3.进程调度的时机:WHEN
- 当前进程运行→退出
- 现运行进程完成任务正常结束或因出现错误异常结束;
- 当前进程运行→就绪
- 时间片到 (按时间片运行);
- 具有更高优先级的进程进入就绪队列,要求使用处理机(可剥夺调度)。
- 当前进程运行→阻塞
- 进程提出I/O请求 ––– 阻塞,调新进程;
- 执行原语操作而信号量不足被阻塞;
4.进程调度的方式:HOW
- 非剥夺调度
- 剥夺调度:优先级
二、进程调度算法:WHAT
大题:调度算法过程、计算性能(平均等待时间、平均完成时间)
1.先来先服务 FCFS
- 按照进程进入就绪队列的先后次序分派CPU;
- 特点
- 有利于长作业,不利于短作业
- 有利于CPU繁忙的作业,不利于I/O繁忙的作业
- 实现简单
2.时间片轮转 RR
- 时间片长度变化的影响
- 无限长:退化为FCFS算法
- 很长:系统响应时间增长
- 很短:上下文切换次数多,开销大,吞吐量低
- 对响应时间的要求
- 响应时间=进程数目*时间片长度
计算:根据进程数目和响应时间,计算时间片长度
- 时间片长度的影响因素
- 进程数目
- 系统的处理能力
- 需要平衡短作业性能和长作业吞吐量
- 不利于IO密集型进程
3.基于优先级的调度算法 Priority
- 与FCFS策略相结合
- 优先级的类型
- 静态优先级
- 动态优先级
- 缺点:低优先级进程可能饿死
4.最短进程(作业)优先 SPN/SPF/SJN/SJF
- 优先级:运行时间
- 非抢占
- 优点
- 提高系统吞吐量
- 平均响应时间/平均周转时间最短,标尺
- 缺点
- 有利于短作业,不利于长作业
- 需要预知作业的运行时间(几乎不可能)
5.最短剩余时间优先 SRT/SRTF
- 优先级:剩余运行时间
- 可抢占的SPN
- SJF/SRTF在平均响应时间/平均周转时间方面最优
6.最高响应比优先 HRRN(作业调度)
- 响应比: R R = 等 待 时 间 + 要 求 服 务 时 间 要 求 服 务 时 间 = 响 应 时 间 要 求 服 务 时 间 RR = \frac{等待时间+要求服务时间}{要求服务时间}=\frac{响应时间}{要求服务时间} RR=要求服务时间等待时间+要求服务时间=要求服务时间响应时间
- 如果作业等待时间相同,有利于短作业
- 如果作业要求服务时间相同,等待时间越长,优先级越高,保证长作业优先级越来越高
7.多级队列算法
- 多个就绪队列,不同调度算法
8.多级反馈队列调度
- 调度机制
- 多个就绪队列,每个队列优先级不同
- 同一队列内使用RR算法,优先级越高,时间片越短
- 新进程进入内存后,投入高优先级队列末尾
- 若一个时间片用完,未结束,降低优先级,投入低一级优先级队列
- 若一个时间片未用完,发生阻塞,提高优先级,投入高一级优先级队列
- 高优先级队列为空,才调度低一级优先级队列
- 如果进程执行时有新进程进入较高优先级的队列,则抢先执行高优先级进程
- 特点
- 短作业:为提高系统吞吐量和缩短平均周转时间而照顾短进程—短作业优先
- IO型进程:为获得较好的I/O设备利用率和缩短响应时间而照顾I/O型进程—每次I/O返回时提高优先级,时间片用完时降低优先级
- 计算型进程:时间片的变化使得运算型进程将获得较长的时间片执行,减少调度次数
- 不必估计进程的执行时间,动态调节优先级
9.彩票调度
三、实时调度
1.实时调度方法:硬实时,HRT
- 离线调度,静态表调度(静态分析+静态调度)
- 固定调度方案
- 固定优先级调度(静态分析+动态调度)
- 动态优先级调度
2.速率单调调度 RMS
- 周期任务:周期越短,优先级越高
3.最早期限优先 EDF
- 优先级:Deadline的早晚
- 可抢占/不可抢占的动态优先级调度
- 可用于非周期任务和周期任务
4.最低松弛度优先 LLF
- 优先级:松弛度=任务必须完成的时刻-已运行时间-当前时间
- 可抢占的动态优先级调度
5.优先级反转
- 现象:高优先级进程被低优先级进程阻塞
- 解决方法:优先级继承
- 所有使用到高优先级进程所需资源的进程,继承高优先级直到用完竞争资源,再回到原来的优先级