操作系统习题与解(含答案)答 下载本文

V(full); until false; end compute: begin

repeat

??.. P(full); y:=b; V(empty);

compute the item in y; until false; end

parend end

4. 桌上有一空盘,允许存放一只水果。爸爸可向盘中放苹果或桔子,儿子专等吃桔子,女儿专等吃苹果。规定当盘空时一次只能放一只水果供吃者取用,请用P、V操作实现爸爸、儿子、女儿三个并发进程的同步。 答:var s,sa,s0:semaphore:=1,0,0 begin parbegin father:begin repeat P(s);

将水果放入盘中;

if(放的是桔子) then V(s0);

else V(sa);

until false end son: begin repeat

37

P(s0);

从盘中取桔子; V(s); 吃桔子; until false end daughter: begin

repeat

P(sa); 从盘中取苹果; V(s); 吃苹果; until false end

parend end

8.完成下表:分别按三种调度算法填写出下列作业的完成时间、周转时间、带权周转时间和执行序列。 进程名 到达时间 服务时间 完成时间 FCFS 周转时间 带权周转时间 完成时间 SJF 周转时间 带权周转时间 RR

A 0 2 2 2 1 2 2 1 B 1 1 3 2 2 3 2 2 C 3 5 8 5 1 8 5 1 D 4 3 11 7 7/3 13 9 3 E 5 2 13 8 4 10 5 5/2 ABCED ABCDE 执行序列 完成时间 2 3 13 38

12 9 ABCDECDC q=2 周转时间 带权周转时间 2 1 2 2 10 2 8 8/3 4 2 5. 在银行家算法中,若出现下述资源分配情况: Process Allocation A B C D P0 P1 P2 P3 P4 0 0 3 2 1 0 0 0 1 3 5 4 0 0 3 2 0 0 1 4 Need ABCD 0 0 1 2 1 7 5 0 2 3 5 6 0 6 5 2 0 6 5 6 Available ABCD 1 7 2 2 试问:(1)该状态是否安全?

(2)若进程P2提出请求Request(1,2,2,2)后,系统能否将资源

分配给它?

答:(1)对该状态进行安全性检查: 资源情Work Need A B C D Allocation A B C D Work+Allocation A B C D Finish 况 A B C D 进程 P0 P3 P4 P1 P2 1 7 2 2 1 7 5 4 1 7 8 6 1 7 9 10 2 7 9 10 0 0 1 2 0 6 5 2 0 6 5 6 1 7 5 0 2 3 5 6 0 0 3 2 0 0 3 2 0 0 1 4 1 0 0 0 1 3 5 4 1 7 5 4 1 7 8 6 1 7 9 10 2 7 9 10 3 10 14 14 True True True True True 利用安全性算法对上面的状态进行分析,找到了一个安全序列{P0,P3,P4,P1,P2},故系统是安全的。

(2)P2提出请求Request(1,2,2,2)后,系统按银行家算法进行检查:

① Request2(1,2,2,2)≤Need2(2,3,5,6); ② Request2(1,2,2,2)≤Available(1,7,2,2) ③ 系统先假定为P2分配资源,并修改各向量的值:

39

Available=(0,5,0,0);Allocation2=(2,5,7,6);Need2=(1,1,3,4) ④ 进行安全性检查:此时对所有的进程,条件Needi≤

Available(0,4,0,0)都不成立,即Available不能满足任何进程的请求,故系统进入不安全状态。因此,当P2提出请求Request(1,2,2,2),系统不能将资源分配给它。

40