CPU调度算法
先到先服务 fcfs – CPU请求次序
- 缺点:FCFS 算法对于分时系统(每个用户需要定
时地得到一定的CPU 时间)是特别麻烦的。允许一个进程保持CPU 时间过长将是个严重
错误。
- 缺点:FCFS 算法对于分时系统(每个用户需要定
最短作业优先sjf – 平均等待时间最短 | 最优
存在抢占和非抢占
抢占(最短剩余时间优先):由于CPU到达时间和CPU区间大小的差异,长作业可以优先处理,但出现短作业请求的时候,优先处理短作业
- 优先级调度 – fcfs sjf都是特殊的优先级调度
每个进程都有一个优先级与其关联,具有最高优先级的进程会分配到CPU 。具有相同优先级
的进程按FCFS 顺序调度。
同样存在抢占调度的情况
问题:存在阻塞或饥饿– 存在进程一直处于等待状态
解决方法:老化– 等待时间越长,优先级提高
优先级可通过内部或外部方式来定义。内部定义优先级使用一些测量数据以计算进程
优先级。例如,时间极限、内存要求、打开文件的数量和平均I/O 区间与平均CPU 区间之
比都可以用于计算优先级。外部优先级是通过操作系统之外的准则来定义的,如进程重要
性、用于支付使用计算机的费用类型和数量、赞助工作的单位、其他(通常为政治)因素。
轮转法调度 – rr ( round robin
为分时系统而设置的
平均等待时间较长,响应时间较长
定义较小的时间处理单元,时间片。时间片和周转时间有关,要考虑和上下文切换的时间比例
进程存储在一个fifo循环队列中
多级队列调度
多级队列 调度算法(multilevel queue scheduling algorithm) 将就绪队列分成多个独立队列(见图5.6) 。根据进程的属性,如内存大小、进程优先级、进程类型,一个进程被永久地分配到一个队列。
- 根据进程的性质和属性对进程进行分组的方法,给不同的队列设立优先级。比如前台交互进程和后台批处理过程。前台交互进程较高。
- 每个队列可以采用不同的调度算法,前台交互需要等待时间较短的调度算法,通常选用rr调度,后台批处理可以选择fcfs,优先级调度算法。
- 缺点同样会产生阻塞的情况
队列之间必须有调度,通常采用固定优先级抢占调度。例如,前台队列可以比
后台队列具有绝对的优先级。
现在来研究一下具有5 个队列的多级队列调度算法的例子,按优先级来排列:
①系统进程。
②交互进程。
③交互编辑进程。
④批处理进程。
⑤学生进程。
- 多级反馈队列调度
多级反馈队列调度算法(multilevel feedback queue scheduling algorithm) 允
许进程在队列之间移动。主要思想是根据不同CPU 区间的特点以区分进程。如果进程使用
过多CPU 时间,那么它会被转移到更低优先级队列。这种方案将νo 约束和交互进程留在
更高优先级队列。此外,在较低优先级队列中等待时间过长的进程会被转移到更高优先级
队列。这种形式的老化阻止饥饿的发生。
通常,多级反馈队列调度程序可由下列参数来定义:
.队列数量。
· 每个队列的调度算法。
· 用以确定何时升级到更高优先级队列的方法。
. 用以确定何时降级到更低优先级队列的方法。
· 用以确定进程在需要服务时应进入哪个队列的方法。