处理器调度算法
1. P117页,练习15:最高响应比
2. P119页,练习22(2):时间片轮转
3. 现设定采用三级反馈队列调度算法,三个队列分别为0、1和2,对应时间片为2、4、8。现有四个进程A、B、C、D,到达时刻分别为0、5、7、12,执行时间分别为7、4、13、2。请写出整个进程调度过程,包括每个时间段,执行的进程,执行后进程状态,各个队列内进程的变化。
4. 从以下几个方面比较各个调度算法的优缺点:
1.资源利用率
2.吞吐率
3.周转率
4.响应时间
5.公平性
6.适用范围
(1)先来先服务算法:这是一个非剥夺式调度算法。此算法的资源利用率和吞吐率较低,周转率较慢,响应时间要视前面的作业所需时间而定,是一个公平的算法,适用于长作业进程。优缺点:有利于长作业进程,而不利于短作业进程这是因为若一个长作业先到达系统,就会使许多短作业等待很长的时间,从而引起许多短作业用户的不满。有利于CPU繁忙型作业,不利于I/O,忙的作业。
(2)最短作业优先算法:这是一个非剥夺式调度算法。此算法的资源利用率不高,吞吐率和周转率比FCFS高些,响应时间较快,但是并不是很公平,适用于短作业进程。优缺点:降低作业的平均等待时间,提高系统吞吐量。对长作业不利;未考虑作业的紧迫程度;对进程估计执行时间难以预测。缺点是:1.要预先知道作业所需的CPU运行时间,很难精确估算。2.忽视作业等待时间,由于系统不断接收新作业,作业调度程序总是选择计算时间短的作业投入运行,因此进入系统时间早但计算时间长的作业的等待时间会过长,出现饥饿现象。3.尽管能克服对长作业的偏爱,但由于缺少剥夺机制,对于分时、实时处理仍不理想。
(3)最短剩余时间优先算法:这是一个剥夺式调度算法。此算法的资源利用率和吞吐率较高,周转率较快,响应时间较短,也是一个不是很公平的算法,适用于剩余时间短的进程。优缺点:能够克服FCFS算法偏爱长作业的缺点,实现起来比较复杂,要时时观察每个作业的剩余时间,但是此算法的平均等待时间和平均周转时间都比FCFS和SJF的好。
(4)最高响应比优先算法:这是一个折中的非剥夺式算法,即考虑作业等待时间,又考虑作业处理时间,这样既照顾短作业又不会使长作业的等待时间过长,有效地改善调度性能。优缺点:每次计算各道作业的响应比会导致一定的时间开销,其性能比SJF算法略差。显然,此算法更利于短作业,但是如果长作业在系统的等待时间足够长,使得分子够大,则HRRF算法响应比变大,即其优先级得到提升,从而可被选中执行,不至于长时间等待,因此不会出现饥饿现象。
(5)优先级调度算法:这是一个系统可预先规定策略为非剥夺式或者剥夺式的算法。进程/线程优先级的确定可采用静态和动态两种方式。静态优先权在创建进程时确定,且在进程的整个运行期间保持不变。一般地,优先权是利用某一范围内的一个整数来表示的,例如,0∼7或0∼255, 又把该整数称为优先数 。优缺点:静态优先级算法的实现简单,但会出现饥饿现象,使得某些低优先级进程/线程会无限期地被推迟。动态优先权在创建进程时赋予的优先权是随进程的推进或随其等待时间的增加而改变,以获得更好的调度性能。可规定,在就绪队列中的进程,随其等待时间的增长,其优先权以速率a提高 。优缺点:等待时间足够久的进程/线程会因其优先级不断提高而被调度运行,克服了静态优先级的饥饿问题。
(6)轮转调度算法:这是一个剥夺式调度算法,系统耗费在进程/线程切换上的开销比较大,这个开销和时间片的大小有关。此算法的资源利用率和吞吐率较高,周转率较快,响应时间较短,是一个较公平的算法。优缺点:紧迫任务响应慢。 时间片选取要从多方面的因素进行考虑。 太小,会频繁发生中断、进程上下文切换,增加系统开销,但利于短作业 ;太大,退化成FCFS ,所以时间片应该略大于一次典型交互的时间。