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.适用范围
先来先服务的调度算法:最简单的调度算法,既可以用于作业调度,也可以用于程序调度,当作业调度中采用该算法时,系统将按照作业到达的先后次序来进行调度,优先从后备队列中,选择一个或多个位于队列头部的作业,把他们调入内存,分配所需资源、创建进程,然后放入“就绪队列”,直到该进程运行到完成或发生某事件堵塞后,进程调度程序才将处理机分配给其他进程。
最短作业优先算法:最短作业优先算法这是对FCFS算法的改进,其目标是减少平均周转时间。对预计执行时间短的作业(进程)优先分派处理机。通常后来的短作业不抢先正在执行的作业。比FCFS改善平均周转时间和平均带权周转时间,缩短作业的等待时间;提高系统的吞吐量;对长作业非常不利,可能长时间得不到执行;未能依据作业的紧迫程度来划分执行的优先级;难以准确估计作业(进程)的执行时间,从而影响调度性能。
最短剩余时间优先算法:这是一个剥夺式调度算法。此算法的资源利用率和吞吐率较高,周转率较快,响应时间较短,也是一个不是很公平的算法,适用于剩余时间短的进程。优缺点:能够克服FCFS算法偏爱长作业的缺点,实现起来比较复杂,要时时观察每个作业的剩余时间,但是此算法的平均等待时间和平均周转时间都比FCFS和SJF的好。
最高响应比优先调度算法:根据“响应比=(进程执行时间+进程等待时间)/ 进程执行时间”这个公式得到的响应比来进行调度。高响应比优先算法在等待时间相同的情况下,作业执行的时间越短,响应比越高,满足段任务优先,同时响应比会随着等待时间增加而变大,优先级会提高,能够避免饥饿现象。优点是兼顾长短作业,缺点是计算响应比开销大,适用于批处理系统。
优先级调度算法:优先级调度算法的一个主要问题是无穷阻塞或饥饿。就绪运行但是等待 CPU 的进程可以认为是阻塞的。优先级调度算法可让某个低优先级进程无穷等待 CPU。对于一个超载的计算机系统,稳定的更高优先级的进程流可以阻止低优先级的进程获得 CPU。一般来说,有两种情况会发生。要么进程最终会运行(在系统最后为轻负荷时),要么系统最终崩溃并失去所有未完成的低优先级进程。(据说,在 1973 年关闭 MIT 的 IBM 7094 时,发现有一个低优先级进程早在 1967 年就已提交,但是一直未能运行。)低优先级进程的无穷等待问题的解决方案之一是老化。老化逐渐增加在系统中等待很长时间的进程的优先级。例如,如果优先级为从 127(低)到 0(高),那么可以每 15 分钟递减等待进程的优先级的值。最终初始优先级值为 127 的进程会成为系统内最高的优先级,进而能够执行。事实上,不会超过 32 小时,优先级为 127 的进程会老化为优先级为 0 的进程。
轮转调度算法:时间片设得太短会导致过多的进程切换,降低了CPU效率;而设得太长又可能引起对短的交互请求的响应变差。将时间片设为100毫秒通常是一个比较合理的折衷。
多级反馈队列调度算法:多级反馈队列算法是轮转算法和优先级算法的综合和发展。设置多个就绪队列,分别赋予不同的优先级,如逐级降低,队列1的优先级最高。每个队列执行时间片的长度也不同,规定优先级越低则时间片越长,如逐级加倍。新进程进入内存后,先投入队列1的末尾,按FCFS算法调度;若按队列1一个时间片未能执行完,则降低投入到队列2的末尾,同样按FCFS算法调度;如此下去,降低到最后的队列,则按“时间片轮转”算法调度直到完成。仅当较高优先级的队列为空,才调度较低优先级的队列中的进程执行。如果进程执行时有新进程进入较高优先级的队列,则抢先执行新进程,并把被抢先的进程投入原队列的末尾。优点有为提高系统吞吐量和缩短平均周转时间而照顾短进程。为获得较好的I/O设备利用率和缩短响应时间而照顾I/O型进程。不必估计进程的执行时间,动态调节。