单程序调度
调度:分配资源给进程/分配处理器给进程
目标:响应时间,吞吐率/处理器效率/公平性
长程调度:new–ready,new-ready/suspend,决定了哪个程序进入系统中处理,控制系统的并发度。
中程调度:ready/suspend---->ready Block/suspend---->Block,考虑换出进程的存储需求。
短程调度:ready–running
I/O调度:系统
短程调度程序也被称为分派器dispatcher:,精确地决定下次执行哪个进程,执行得最频繁。
引起短程调度的因素:时钟中断,I/O中断,系统调用中断,信号
短程调度准则:
面向用户:面向用户的标准与单个用户或流程所感知的系统行为相关。例如响应时间【用户可知】越短越好.[从提交请求到输出请求之间经过的时间。]
面向系统:重点是处理器的效果和效率。
例如:吞吐量,即进程完成的速率。
另一个划分维度:
与性能直接相关【定量】:响应时间,吞吐量
与性能无关【定性】:可预测性。
优先级
优先级队列,同一优先级的是一个队列,选择优先级高的进程,优先级低的可能会忍受饥饿。
决策模式:
非抢占模式:进程完成之后才会退出CPU,或者I/O中断
抢占模式:进程未完成也可以退出CPU
1.FCFS先进先服务
非抢占模式,缺点:短进程可能会排很久
2.Round-Robin轮转
抢占模式。时间片方法,超时了就有中断发生,当前运行进程会放置在ready queue里,下一个ready队列的进程被加载。时间片大小的选择很重要,过长会退化成FIFO,太短则进程切换所用的系统消耗太多。进程数量多,时间片短一些;数量少,时间片可以长一点,还要考虑所能承受的系统消耗。
3.VRR 虚拟轮转法
抢占模式。被阻塞的进程加到辅助队列,优先级高于ready queue
4.Shortest Process Next( SPN)
非抢占模式。缺点:长进程调度会忍受饥饿,很难预测执行时间
5.Shortest Remaining Time(SRT 最短剩余时间)
抢占模式。时间片到了优先选择SRT最小的进程执行。这里的进程包括还未执行过的进程。
6.Highest Response Ratio Next(HRRN最高响应比优先)
非抢占模式,R=(waiting time+service time)/service time
周转时间turnaround time Tr=waiting time+service time
7.Freeback 反馈
抢占模式。时间片方法,进程一次未执行完就被下放到优先级低的队列里,如果没有队列和本队列竞争就直接放在本队列中。适用于不知道进程执行需要的时间。
例题:
1.注意进程到达时间;
2.注意队列顺序
3.等待时间计算记得减去到达时间
4.先进队列,再来按照策略选择
5.反馈,队列可以分成0,1,2…时间片选择2^i
公平共享调度
前面的都是以进程为单位,也可以以用户为单位分配CPU资源
用户的应用程序作为进程(线程)的集合运行;用户关心的是应用程序的性能;需要根据流程集做出调度决策
优先级反转