设有A、B、C、D、E五个进程,其到达时间分别为0、1、2、3、4,要求运行时间依次为3、6、4、5、2,采用最高响应比优先调度算法,试计算其平均周转时间和平均带权周转时间。
分析作业的调度顺序
A、B、C、D、E的到达时间依次为0、1、2、3、4,要求运行时间依次为3、6、4、5、2
周转时间的计算 顺序A、B、E、C、D
平均周转时间 T=(3+8+13+17+7)/5=9.6
平均带权周转时间 W=(1+1.33+3.25+3.4+3.5)/5=2.496
6.多级队列调度算法
实现思想:根据作业性质或类型不同,将进程就绪队列分为多个,每个队列采用不同的调度算法。
例如:终端型作业为前台作业,批处理作业为后台作业。前台采用时间片轮转算法,后台采用先来先服务,前台作业的优先级高。
7.多级反馈队列调度算法(1)
应设置多个就绪队列,并为每个队列赋予不同的优先级。第1个队列的优先级最高,第2队列次之,其余队列的优先级逐次降低。
每个队列中进程执行的时间片大小也各不相同,进程所在队列的优先级越高,其相应的时间片就越短。
多级反馈队列调度算法(2)
当一个新进程进入系统时,首先将它放入第1个队列的末尾,按先来先服务的原则排队等待调度。当轮到该进程执行时,如能在此时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第2队列的末尾,再同样地按先来先服务原则等待调度执行。如此下去,最后一个队列中使用时间片轮转调度算法。
多级反馈队列调度算法(3)
仅当第1个队列为空时,调度程序才调度第2队列中的进程运行;仅当第1个至第(i-1)个队列均为空时,才会调度第i个队列中的进程运行。
当处理机正在为第i个队列中的某进程服务时,若又有新进程进入优先级较高的队列中,则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在执行进程放回第i个队列末尾,重新将处理机分配给新进程。
多级反馈队列调度算法示意图
多级反馈队列调度算法例
设有A、B、C、D、E五个进程,其到达时间分别为0、1、3、4、5,要求运行时间依次为3、8、4、5、7,采用多级反馈队列调度算法,系统中共有3个队列,其时间片依次为1、2和4,试计算其平均周转时间和平均带权周转时间。
调度分析
A、B、C、D、E到达时间依次为0、1、3、4、5,要求运行时间依次为3、8、4、5、7
周转时间的计算
平均周转时间 T=(9+26+17+18+21)/5=18.25
平均带权周转时间 W=(3+3.25+4.25+3.6+3)/5=3.42
多级反馈队列调度算法的性能
多级反馈队列调度算法能较好满足各类用户的需求:
终端型用户:大多能在一个时间片内完成,响应时间较短;
短批处理作业用户:能在前几个队列完成,周转时间较短;
长批处理作业用户:依次在1~n队列中运行,不会长时间得不到处理。
8.公平分享调度算法
公平分享调度算法基于进程组来分配CPU时间,其实现思想是对系统中的每个用户赋予某种权值,根据用户权值大小,按比例分配处理机时间。
公平分享调度有许多实现方案,本节讲述UNIX中的一种实现方案。
UNIX中的公平分享调度
UNIX基于优先权调度,优先数越大优先权越低。对进程组k中进程j的优先数计算公式如下:
CPUj(i)=CPUj(i-1)/2;进程j在时间段i使用的CPU时间
GCPUk(i)=GCPUk(i-1)/2;进程组k在时间段i使用的CPU时间
Pj(i)=Basej+ CPUj(i)/2+ GCPUk(i)/4Wk;进程j在时间段i的优先数, Basej 为进程j的基本优先数, Wk为进程组k的权值。
公平分享调度例
下例中Wk为0.5,Base为60。相应的优先数计算公式为: