《操作系统教程》(第三版)CH1应用题参考答案
Claim Allocation 进程, R1 R2 R3 R1 R2 R3 P1 3 2 2 1 0 0 P2 6 1 3 5 1 1 P3 3 1 4 2 1 1 P4 4 2 2 0 0 2 (1) (2) (3) (4) (5)
计算各个进程还需要的资源数Cki-Aki? 系统是否处于安全状态,为什么?
P2发出请求向量request1(1,0,1),系统能把资源分给它吗?
若在P2申请资源后,若P1发出请求向量request0(1,0,1),系统能把资源分给它吗? 若在P1申请资源后,若P3发出请求向量request0(0,0,1),系统能把资源分给它吗?
答:(1) P1,P2,P3,P4的Cki-Aki分别为:(2,2,2)、(1,0,2)、(1,0,3)、(4,2,0)
(3) 系统处于安全状态,存在安全序:P2,P1,P3,P4 (4) 可以分配,存在安全序列:P2,P1,P3,P4。 (5) 不可以分配。 (6) 不可以分配。
13 系统有A、B、C、D共4种资源,在某时刻进程P0、P1、P2、P3和P4对资源的占有和需求情况如表,
试解答下列问题:
Allocation A B C D 0 0 3 2 1 0 0 0 1 3 5 4 0 3 3 2 0 0 1 4 Claim A B C D 0 0 4 4 2 7 5 0 3 6 10 10 0 9 8 4 0 6 6 10 Available A B C D 1 6 2 2 Process P0 P1 P2 P3 P4
(1) 系统此时处于安全状态吗?
(2) 若此时P2发出request1(1、2、2、2),系统能分配资源给它吗?为什么? 答:(1)系统处于安全状态,存在安全序列:P0,P3,P4,P1,P2。 (2)不能分配,否则系统会处于不安全状态。 14 把死锁检测算法用于下面的数据,并请问:
Available=(1,0,2,0)
Need= 3 Allocation= 0 1 0 1 1 1 1 0 0 1 0 0 1 0 0 0 3 1 1 1 2 0 0 1 0 1 0 1 1 0 0 0 0 2 1 1 1 0 0 (1) 此时系统此时处于安全状态吗?
(2) 若第二个进程提出资源请求request2(0,0,1,0),系统能分配资源给它吗? (3) 若第五个进程提出资源请求request5(0,0,1,0),系统能分配资源给它吗?
21
《操作系统教程》(第三版)CH1应用题参考答案
答:(1)此时可以找出进程安全序列:P4,P1,P5,P2,P3。故系统处于安全状态。
(2)可以分配,存在安全序列:P4,P1,P5,P2,P3。 (3)不可分配,系统进入不安全状态。
15 某系统有R1设备3台,R2设备4台,它们被P1、P2、P3和P4进程共享,且已知这4个进程均按以
下顺序使用设备:
→申请R1→申请R2→申请R1→释放R1→释放R2→释放R1
(1) 系统运行中可能产生死锁吗?为什么?
(2) 若可能的话,请举出一种情况,并画出表示该死锁状态的进程—资源图。 答:(1)系统四个进程需要使用的资源数为R1各2台,R2各1台。可见资源数不足,同时各进程申请资源在先,有可能产生死锁发生的四个条件,故系统可能产生死锁。
(2) 当三个进程执行完申请资源R1,开始执行申请资源R2时,第四个进程会因没有资源R1而被阻塞。
当三个进程执行完申请资源R2后,系统还剩1个R2资源。而这三个进程因执行申请第二个资源R1而全部被阻塞,系统进入死锁。
P1 P2 ● ● ● ●●●● P3
P4 假定某计算机系统有R1和R2两类可再使用资源(其中R1有两个单位,R2有一个单位),它们被进程P1,P2所共享,且已知两个进程均以下列顺序使用两类资源。
→申请R1→申请R2→申请R1→释放R1→释放R2→释放R1→
试求出系统运行过程中可能到达的死锁点,并画出死锁点的资源分配图(或称进程-资源图)。 答:当两个进程都执行完第一步(都占用R1) 时,系统进入不安全状态。这时无论哪个进程执行完第二步,死锁都会发生。可能到达的死锁点:进程P1占有一个R1和一个R2,而进程P2占有一个R1。或者相反。这时己形成死锁。进程---资源图为:
P1 P1 . . P1
P1 16 桌上有一只盘子,最多可以容纳两个水果,每次仅能放入或取出一个水果。爸爸向盘子中放苹果(apple),
22
《操作系统教程》(第三版)CH1应用题参考答案
妈妈向盘子中放桔子(orange),两个儿子专等吃盘子中的桔子,两个女儿专等吃盘子中的苹果。试用:
(1)信号量和P、V操作,(2)管程,来实现爸爸、妈妈、儿子、女儿间的同步与互斥关系。
答:(1)用信号量和P、V操作。
类似于课文中的答案,扩充如下:1) 同步信号量初值为2;2) 要引进一个互斥信号量mutex,用于对盘子进行互斥;3)盘子中每一项用橘子、苹果2个枚举值。
var
plate ARRAY[0,1] of (apple, orange);
flag0,flag1:boolean; mutex:semaphore;
sp:semaphore; /* 盘子里可以放几个水果 */ sg1,sg2:semaphore; /* 盘子里有桔子,有苹果?*/ sp := 2; /* 盘子里允许放入二个水果*/ sg1:=sg2:= 0; /* 盘子里没有桔子,没有苹果 */ flag0:=flag1:=false;mutex:=1; cobegin process son process father begin begin L3: P(sg1); L1: 削一个苹果; P(mutex); P(sp); if (flag0 & plate[0]= =桔子) then P(mutex); { x := plate[0];flag0:=false;} if (flag0==false) then else { x:= plate[1]; flag1:=false;} {plate [0]:=苹果; flag0:=true;} V(mutex); else { plate[1]:=苹果; flag1:=true; } V(sp); V(mutex); 吃桔子; V(sg2); goto L3; goto L1; end; end; process daughter process mother begin begin L4: P(sg2); L2: 剥一个桔子; P(mutex); P(sp); if (flag0 & plate[0]= =苹果) then P(mutex); { x := plate[0];flag0:=false;} if (flag0==false) then else { x:= plate[1]; flag1:=false;} {plate [0]:=桔子; flag0:=true;} V(mutex); else { plate[1]:=桔子; flag1:=true; } V(sp); V(mutex); 吃苹果; V(sg1); goto L4; goto L2; end; end; coend.
17 有P1、P2、P3三个进程共享一个表格F,P1对F只读不写,P2对F只写不读,P3对F先读后写。进程可同
时读F,但有进程写时,其他进程不能读和写。用(1)信号量和P、V操作,(2)管程编写三进程能正确工作的程序。
答:(1)信号量和P、V操作。
这是读--写者问题的变种。其中,P3既是读者又是写者。读者与写者之间需要互斥,写者与写者之间需要互斥,为提高进程运行的并发性,可让读者尽量优先。
23
var rmutex,wmutex:semaphore;
rmutex:=wmutex:=1; count:integer;count:=0; cobegin {
process P1
begin repeat
P(rmutex);
count:=count+1;
if count=1 then P(wmutex); V(rmutex); Read F; P(rmutex);
count:=count-1;
if count=0 then V(wmutex); V(rmutex); untile false; end process P2
begin repeat
P(wmutex); Write F; V(wmutex);
untile false;
process P3
begin repeat
P(rmutex);
count:=count+1;
if count=1 then P(wmutex); V(rmutex); Read F; P(rmutex);
count:=count-1;
if count=0 then V(wmutex); V(rmutex); P(wmutex); Write F; V(wmutex); untile false; end } coend
《操作系统教程》(第三版)CH1应用题参考答案
24