您现在的位置:学赛首页 > 研究生院 > 软件学院 > 正文
操作系统第五章-处理机调度[6]
http://www.educity.cn 作者:研究生院 来源:学赛网 2008年4月25日 发表评论 进入社区

  设有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。相应的优先数计算公式为:

[1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]  [9]