内容发布更新时间 : 2024/12/24 9:55:43星期一 下面是文章的全部内容请认真阅读。
系统此时处于安全状态吗?
若此时P2 发出request2 ( 1 、2 、2 、2 ) ,系统能分配资源给它吗?为什么?
答:( l )系统处于安全状态,存在安全序列:P0, P3 , P4 , P1 , P2 。
( 2 )不能分配,否则系统会处于不安全状态。 28 把死锁检测算法用于下面的数据,并请问: Available=(1,0,2,0)
( l )此时系统处于安全状态吗?
( 2 )若第二个进程提出资源请求request2( 0 , 0 , 1 , 0 ) 系统能分配资源给它吗?
(3)执行(2)之后,若第五个进程提出资源请求request5( 0 ,0 ,1 ,0 )系统能分配资源给它吗?
答:( l )此时可以找出进程安全序列:P4 , P1 , P5 , P2 , P3 。故系统处于安全状态。
( 2 )可以分配,存在安全序列:P4 , P1 , P5, P2 , P3 。 ( 3 )不可分配,系统进入不安全状态。
29 )考虑一个共有巧0 个存储单元的系统,如下分配给三个进程,P1 最大需求70 ,己占有25 ; 以P2 最大需求60 ,己占有40 ; P3 最大需求60 ,己占有45 。使用银行家算法,以确定下面的任何一个请求是否安全。(l ) P4 进程到达,P4 最大需求60 ,最初请求25 个。(2 ) P4 进程到达,P4 最大需求60 ,最初请求35 。如果安全,找出安全序列;如果不安全,给出结果分配情况。 答:
( l )由于系统目前还有150-25-40-45=40 个单元,P4 进程到达,把25 个单元分给它。这时系统还余15 个单元,可把15 个单元分给P3 ,它执行完后会释放60 个单元。于是可供P1 (还要45 个单元), P2 (还要20 个单元), P4(还要35 个单元)任何一个执行。
安全序列为:
(1)P4进程到达,P4最大需求60,最初请求35 。如果把35 个单元分给P4 ,系统还余5个单元,不再能满足任何一个进程的需求,系统进入不安全状态。 30 有一个仓库,可存放X 、Y 两种产品,仓库的存储空间足够大,但要求:( l )每次只能存入一种产品X或Y , ( 2 )满足-N<X 产品数量-Y 产品数量<M 。其中,N 和M 是正整数,试用信号量与P 、V 操作实现产品X 与Y 的入库过程。 答:本题给出的表达式可分解为制约条件: -N < X 产品数量-Y 产品数量 X 产品数量-Y 产品数量<M
也就是说,X 产品的数量不能比Y 产品的数量少N 个以上,X 产品的数量不能比Y 产品的数量多M 个以上。可以设置两个信号量来控制X 、Y 产品的存放数量:
SX 表示当前允许X 产品比Y 产品多入库的数量,即在当前库存量和Y 产品不入库的情况下,还可以允许SX个X产品入库;初始时,若不放Y而仅放X产品,则SX最多为M-1个。
sy 表示当前允许Y 产品比x 产品多入库的数量,即在当前库存量和x 产品不入库的情况下,还可以允许sy 个Y 产品入库.初始时,若不放X 而仅放Y 产品,则sy 最多为N -1 个。当往库中存放入一个X 产品时,则允许存入Y 产品的数量也增加1 ,故信号量sy 应加1 :当往库中存放入一个Y 产品时,则允许存入X 产品的数量也增加1 ,故信号量sx 应加1 . var mutex : semaphore = 1 /*互斥信号量*/ sx , sy : semaphore;
sx = M-1 ; sy = = N - l ; cobegin {
process X {repeat P(sx ) ;
P (mutex ) ; 将X 产品入库; V(mutex ) ; V ( sy ) ;
until false }
process Y { repeat P ( sy ) ; P (mutex ) ; 将Y 产品入库; V (mutex ) ; V ( px ) ; until false } }
coend .
31 有一个仓库可存放A 、B 两种零件,最大库容量各为m 个。生产车间不断地取A 和B 进行装配,每次各取一个.为避免零件锈蚀,按先入库者先出库的原则。有两组供应商分别不断地供应A 和B ,每次一个。为保证配套和合理库存,当某种零件比另一种零件超过n ( n < m )个时,暂停对数量大的零件的进货,集中补充数量少的零件.试用信号量与P 、V 操作正确地实现它们之间的同步关系。
答:按照题意,应满足以下控制关系:A 零件数量-B 零件数量≤n ; B 零件数量-A 零件数量≤n : A 零件数量≤m ; B 零件数量≤m .四个控制关系分别用信号量sa 、sb 、empty1 和empty2 实施。为遵循先入库者先出库的原则,A 、B 零件可以组织成两个循形队列,并增加入库指针in1 、in2 和出库指针out1 、out2 来控制顺序。并发程序编制如下: Var empty1,empty2,full1,full2:semaphore; Mutex ,sa,sb:semaphore; In1,in2,out1,out2:integer;
Buffer1,buffer2:array[0?m-1]of item; Empty1:=empty2:=m; Sa:=sb:=n;
In1:=in2=out1:=out2:=0; Cobegin {
Process producerA {repeat P(empty1); P(sa); P(mutex);
Buffer1[in1]:=A零件; In1:=(in1+1)mod m; V(mutex); V(sb); V(full1); Untile false; }
Process producer B {repeat P(empty2); P(sb); P(mutex);
Buffer2[in2]:=B零件; In2:=(in2+1)mod m; V(mutex); V(sa); V(full2); Untile false; }
Process take {repeat P(full1); P(full2); P(mutex);
Take from buffer1[out1] and buffer2[out2]中的A,B零件; Out1:=(out1+1)mod m; Out2:=(out2+1)mod m; V(mutex); V(empty1); V(empty2);
把A和B装配成产品; Until false } } Coend.
32 进程Al 、A2 、?、An1 通过m 个缓冲区向进程B1 、B2 、? 、Bn2 不断地发送消息.发送和接收工作符合以下规则: ( l )每个发送进程每次发送一个消息,写进一个缓冲区,缓冲区大小与消息长度相等;
( 2 )对每个消息,Bl 、BZ 、二、BnZ 都需接收一次,并读入各自的数据区内; ( 3 )当M 个缓冲区都满时,则发送进程等待,当没有消息可读时,接收进程等待.
试用信号量和PV 操作编制正确控制消息的发送和接收的程序。
答:本题是生产者一消费者问题的一个变形,一组生产者A1 , A2 ,? An1 和