操作系统(宗大华版)课后习题答案 联系客服

发布时间 : 星期六 文章操作系统(宗大华版)课后习题答案更新完毕开始阅读

(3)将新建进程设置为就绪状态,并按照所采用的调度算法,把PCB排入就绪队列中。 6.处于阻塞状态的一个进程,它所等待的事件发生时,就把它的状态由阻塞改变为就绪,让它到就绪队列里排队,为什么不直接将它投入运行呢?

答:只要是涉及管理,就应该有管理的规则,没有规则就不成方圆。如果处于阻塞状态的一个进程,在它所等待的事件发生时就径直将它投入运行(也就是把CPU从当前运行进程的手中抢夺过来),那么系统就无法控制对CPU这种资源的管理和使用,进而也就失去了设置操作系统的作用。所以,阻塞状态的进程在它所等待的事件发生时,必须先进入就绪队列,然后再去考虑它使用CPU的问题。

7.作业调度与进程调度有什么区别?

答:作业调度和进程调度(即CPU调度)都涉及到CPU的分配。但作业调度只是选择参加CPU竞争的作业,它并不具体分配CPU。而进程调度是在作业调度完成选择后的基础上,把CPU真正分配给某一个具体的进程使用。

8.系统中的各种进程队列都是由进程的PCB链接而成的。当一个进程的状态从阻塞变为就绪状态时,它的PCB从哪个队列移到哪个队列?它所对应的程序也要跟着移来移去吗?为什么? 答:当一个进程的状态从阻塞变为就绪时,它的PCB就从原先在的阻塞队列移到就绪队列里。在把进程的PCB从这个队列移到另一个队列时,只是移动进程的PCB,进程所对应的程序是不动的。这是因为在进程的PCB里,总是记录有它的程序的断点信息。知道了断点的信息,就能够知道程序当前应该从哪里开始往下执行了。这正是保护现场所起的作用。

9.为什么说响应比高者优先作业调度算法是对先来先服务以及短作业优先这两种调度算法的折中?

答: 先来先服务的作业调度算法,重点考虑的是作业在后备作业队列里的等待时间,因此对短作业不利;短作业优先的作业调度算法,重点考虑的是作业所需的CPU时间(当然,这个时间是用户自己估计的),因此对长作业不利。“响应比高者优先”作业调度算法,总是在需要调度时,考虑作业已经等待的时间和所需运行时间之比,即:

该作业已等待时间 / 该作业所需CPU时间

不难看出,这个比值的分母是一个不变的量。随着时间的推移,一个作业的“已等待时间”会不断发生变化,也就是分子在不断地变化。显然,短作业比较容易获得较高的响应比。这是因为它的分母较小,只要稍加等待,整个比值就会很快上升。另一方面,长作业的分母虽然很大,但随着它等待时间的增加,比值也会逐渐上升,从而获得较高的响应比。根据这种分析,可见“响应比高者优先”的作业调度算法,既照顾到了短作业的利益,也照顾到了长作业的利益,是对先来先服务以及短作业优先这两种调度算法的一种折中。

10.短作业优先调度算法总能得到最小的平均周转时间吗?为什么?

5

答:短作业优先调度算法只有在所有作业同时到达后备作业队列时,才能得到最小的平均周转时间。如果各作业不是同时到达,这个结论是不成立的。可以用反例说明,例如,教材上举有如下例子:考虑有5个作业A到E,运行时间分别是2、4、1、1、1;到达时间分别是0、0、3、3、3。按照短作业优先的原则,最初只有A和B可以参与选择,因为其他3个还没有到达。于是,运行顺序应该是A、B、C、D、E。它们每个的周转时间分别是2、6、4、5、6,平均周转时间是4.6。但如果按照顺序B、C、D、E、A来调度,它们每一个的周转时间成为9、4、2、3、4,平均周转时间是4.4。结果比短作业优先调度算法好。之所以会这样,就是因为这5个作业并没有同时到达。

四、计算?

1.有三个作业:

作 业 1 2 3 到达时间 0.0 0.4 1.0 所需CPU时间 8 4 1 分别采用先来先服务和短作业优先作业调度算法。试问它们的平均周转时间各是什么?你是否还可以给出一种更好的调度算法,使其平均周转时间优于这两种调度算法? 解:(1)采用先来先服务作业调度算法时的实施过程如下。

作 业 1 2 3 到达时间 0.0 0.4 1.0 所需CPU时间 8 4 1 开始时间 0.0 8.0 12.0 完成时间 8.0 12.0 13.0 周转时间 8.0 11.6 12.0 这时,作业的调度顺序是1→2→3。其平均周转时间为:

(8 + 11.6 + 12)/ 3 = 10.53

(2)采用短作业优先作业调度算法时的实施过程如下。

作 业 1 3 2 到达时间 0.0 1.0 0.4 所需CPU时间 8 1 4 开始时间 0.0 8.0 9.0 完成时间 8.0 9.0 13.0 周转时间 8.0 8.0 12.6 这里要注意,在作业1运行完毕进行作业调度时,作业2和3都已经到达。由于是实行短作业优先作业调度算法,因此先调度作业3运行,最后调度作业2运行。所以,这时的作业调度顺序是1→3→2。其平均周转时间为:

6

(8 + 8 + 12.6)/ 3 = 9.53

(3)还可以有更好的作业调度算法,使其平均周转时间优于这两种调度算法。例如,如果知道在作业1后面会来两个短作业,那么作业1到达后,先不投入运行。而是等所有作业到齐后,再按照短作业优先作业调度算法进行调度,具体实施过程如下。

作 业 3 2 1 到达时间 1.0 0.4 0.0 所需CPU时间 1 4 8 开始时间 1.0 2.0 6.0 完成时间 2.0 6.0 14.0 周转时间 1.0 5.6 14.0 这时的作业调度顺序是3→2→1。其平均周转时间为:

(1 + 5.6 + 14)/ 3 = 6.87

2.设有一组作业,它们的到达时间和所需CPU时间如下所示。

作业号 1 2 3 4 到达时间 9:00 9:40 9:50 10:10 所需CPU时间 70分钟 30分钟 10分钟 5分钟 分别采用先来先服务和短作业优先作业调度算法。试问它们的调度顺序、作业周转时间以及平均周转时间各是什么?

解:(1)采用先来先服务作业调度算法时的实施过程如下。

作业号 1 2 3 4 到达时间 9:00 9:40 9:50 10:10 所需CPU时间 70分钟 30分钟 10分钟 5分钟 开始时间 9:00 10:10 10:40 10:50 完成时间 10:10 10:40 10:50 10:55 周转时间 70分钟 60分钟 60分钟 45分钟 这时,作业的调度顺序是1→2→3→4。其平均周转时间为:

(70 + 60 + 60 + 45)/ 4 = 58.75

(2)采用短作业优先作业调度算法时的实施过程如下。

作业号 1 到达时间 9:00 所需CPU时间 70分钟 开始时间 9:00 完成时间 10:10 周转时间 70分钟 7

4 3 2 10:10 9:50 9:40 5分钟 10分钟 30分钟 10:10 10:15 10:25 10:15 10:25 10:55 5分钟 35分钟 75分钟 这时,作业的调度顺序是1→4→3→2。其平均周转时间为:

(70 + 5 + 35 + 75)/ 4 = 46.25

3.某系统有三个作业:

作业号 1 2 3 到达时间 8.8 9.0 9.5 所需CPU时间 1.5 0.4 1.0 系统确定在它们全部到达后,开始采用响应比高者优先调度算法,并忽略系统调度时间。试问对它们的调度顺序是什么?各自的周转时间是多少?

解:三个作业是在9.5时全部到达的。这时它们各自的响应比如下:

作业1的响应比 =(9.5 – 8.8)/ 1.5 = 0.46 作业2的响应比 =(9.5 – 9.0)/ 0.4 = 1.25 作业3的响应比 =(9.5 – 9.5)/ 1.0 = 0

因此,最先应该调度作业2运行,因为它的响应比最高。它运行了0.4后完成,这时的时间是9.9。再计算作业1和3此时的响应比:

作业1的响应比 =(9.9 – 8.8)/ 1.5 = 0.73 作业3的响应比 =(9.9 – 9.5)/ 1.0 = 0.40

因此,第二个应该调度作业1运行,因为它的响应比最高。它运行了1.5后完成,这时的时间是11.4。第三个调度的是作业3,它运行了1.0后完成,这时的时间是12.4。整个实施过程如下。

作业号 2 1 3 到达时间 9.0 8.8 9.5 所需CPU时间 0.4 1.5 1.0 开始时间 9.5 9.9 11.4 完成时间 9.9 11.4 12.4 周转时间 0.9 2.6 2.9 作业的调度顺序是2→1→3。各自的周转时间为:作业1为0.9;作业2为2.6;作业3为2.9。

第3章(大本)习题解答

8