操作系统(第四版)-------调度算法

调度的实质就是一种资源分配。不同的系统和系统目标,通常采用不同的调度算法

如批处理系统为照顾为数众多的短作业,应采用短作业优先的调度算法;
如分时系统为保证系统具有合理的响应时间,应采用轮转法进行调度。
目前存在的多种调度算法中,有的算法适用于作业调度,有的算法适用于进程调度;但有些算法作业调度和进程调度都可以采用。

1 先来先服务调度算法FCFS

一种最简单的调度算法,按先后顺序进行调度。既可用于作业调度,也可用于进程调度。
按照作业提交,或进程变为就绪状态的先后次序分派CPU;
新作业只有当当前作业或进程执行完或阻塞才获得CPU运行
被唤醒的作业或进程不立即恢复执行,通常等到当前作业或进程出让CPU。 (所以,默认即是非抢占方式)

不利于短作业

 

优点:
通过上表可见采用SJF/SPF算法,平均周转时间、平均带权周转时间都有明显改善。SJF/SPF调度算法能有效的降低作业的平均等待时间,提高系统吞吐量。
方式:
分抢占和非抢占两种方式,上例为简单的非抢占式。

SJF/SPF的不足:
1. 对短作业有利,但同时造成了对长作业的不利。
2.由于作业(进程)的长短含主观因素,不一定能真正做到短作业优先。
3.未考虑作业的紧迫程度,因而不能保证紧迫性作业(进程)的及时处理。

 3高优先权优先调度算法HPF

1)分为两种    非抢占式     抢占式 

2)优先权的类型    静态优先权  动态优先权

3)高响应比优先调度算法HRRN

HRRN为每个作业引入动态优先权,使作业的优先级随着等待时间的增加而以速率a提高:
优先权 =(等待时间+要求服务时间)/要求服务时间
= 响应时间 / 要求服务时间

同时到达的作业优先权相同。
初始t=0,随着时间增长,如果等待时间 t 相同,执行时间愈短的优先权愈高,利于短作业。
对于长作业,作业的优先级可以随等待时间的增加而提高,当其等待时间足够长也可获得处理机。长作业有照顾。
当执行时间相同的作业,优先权的高低决定于其等待时间的长短,也就是先来先服务。

 

 

 3 基于时间片的轮转调度算法RR

分时系统新需求:及时响应用户的需求;采用基于时间片的轮转式进程调度算法

(1)时间片轮转算法

将系统中所有的就绪进程按照FCFS原则,排成一个队列。
每次调度时将CPU分派给队首进程,让其执行一个时间片。时间片的长度从几个ms到几百ms。
在一个时间片结束时,发生时钟中断。
调度程序据此暂停当前进程的执行,将其送到就绪队列的末尾,并通过上下文切换执行当前就绪的队首进程。

进程发生阻塞时,未用完时间片也要让出CPU

 

 (2)多级反馈队列FB

特点:多个就绪队列   循环反馈

动态优先级 时间片轮转  

1)设置多个就绪队列,各队列有不同的优先级,优先级从第一个队列依次降低。
2) 赋予各队列进程执行时间片大小不同, 优先权越高,时间片越短。

 

posted @ 2018-10-21 12:00  yanbinging  阅读(302)  评论(0)    收藏  举报