操作系统习题答案.pdf
《操作系统习题答案.pdf》由会员分享,可在线阅读,更多相关《操作系统习题答案.pdf(89页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、CH3应用题参考答案1、有三个并发进程:R 负责从输入设备读入信息块,M 负责对信息块加工处理;P 负责打印输出信息块。今提供;1 )一个缓冲区,可放置K 个信息块;2 )二个缓冲区,每个可放置K 个信息块;试用信号量和P、V 操作写出三个进程正确工作的流程。答:1 )v ar B :array 0 ,k-l of it em;s read:s emaphore:=k;s manage:s emaphore:=0 ;s w rit e:s emaphore:=0 ;rpt r:int eger:=0 ;mpt r:int eger:=0 ;w pt r:int eger:=0 ;x :it e
2、mcobeginproces s reader;proces s manager;proces sw rit er;beginLI:read a mes s age int oxbegin;L2 :P(s manage)*beginL3 :P(s w nt e);P(s read);x:=B s w rit e;B rpt r:=x;w pt r:=(w pt r+l)mod k;Rpt r:=(rpt r+l)mod k;V(s read);V(s manage);print t he mes s age in x;Got o LI;got o L3;E nd;end;coend2 )v a
3、r A ,B :array 0 ,E nd;k-1 of it em;mpt r:=manage t hex:=B mpt r;(mpt r+1)mod k;mes s age in x;B mpt r:=x;V(s w rit e);got o L2;s Pu t l:s emaphore:=k;SPu t 2:s emaphore:=k;s get l:s emaphore:=0 ;s get 2 :s emaphore:=0 ;pu t l:int eger:=0 ;pu t 2:int eger:=0 ;get l:int eger:=0 ;get 2 :int eger:=0 ;co
4、beginproces s reader;proces s Writ er;beginbeginLI:read a mes s age int o x ;P(s get Z);P(SPu t l);=B get 2;A pu t l:=x ;get 2:=(get 2 +1 )mod k;Pu t l:=(pu t l+l)mod k;V(s pu t 2);V(s get l);print t he mes s age in x;Got o LI;got o L3;proces s n manager;beginL2 :P(s get l);L3 :x :=A get l;x :get l:
5、(get l+1 )mod k;V(s pu t l);manage t he mes s age int o x;P(s pu t 2);Pu t 2:=(pu t 2+1)mod k;V(s get 2);Got o L2;E nd;C oend2设有n 个进程共享一个互斥段,如果:(1 )每次只允许一个进程进入互斥段;(2 )每次最多允许m 个进程(m 簇 n)同时进入互斥段。试问:所采用的信号量初值是否相同?信号量值的变化范围如何?答:所采用的互斥信号量初值不同。1)互斥信号量初值为1 ,变化范围为-n+1 ,1 。当没有进程进入互斥段时,信号量值为1 ;当有1个进程进入互斥段但没有进
6、程等待进入互斥段时,信号量值为0 ;当有1个进程进入互斥段且有一个进程等待进入互斥段时,信号量值为-1 ;最多可能有n-l 个进程等待进入互斥段,故此时信号量的值应为-(n-1 )也就是-n+l。2 )互斥信号量初值为m,变化范围为-n+m,m。当没有进程进入互斥段时,信号量值为m;当有1个进程进入互斥段但没有进程等待进入互斥段时,信号量值为m-1 :当有m 个进程进入互斥段且没有一个进程等待进入互斥段时,信号量值为0 :当有m 个进程进入互斥段且有一个进程等待进入互斥段时,信号量值为一1 ;最多可能有n-m 个进程等待进入互斥段,故此时信号量的值应为-(n-m)也就是-n+m.3有两个优先级
7、相同的进程Pl和 P2,各自执行的操作如下,信号量S1 和 S2 初值均为0。试问P l、P 2 并发执行后,x、y、z的值各为多少?Pl:P2:B eginbeginx:=l;Y:=l;Y:=y+3;x:=x+5;V(S1);P(S1);Z:=Y+1;X:X+Y;P(s 2);V(S2);Y:=z+y;z:=z+x;E ndend答:现对进程语句进行编号,以方便描述.P1 :P2 :beginbeginy :=1 ;x :=1 ;y :=y+3 ;x :x+5 ;V(S1);P(S1);Z:Y+1 ;x :X+Y ;P(s 2);V(S2);Y:=z+y;z :=Z+X;E ndend、和是
8、不相交语句,可以任何次序交错执行,而结果是唯一的。接着无论系统如何调度进程并发执行,当执行到语句时,可以得到X=1 0 ,y =4 o按B erns t ein条件,语句的执行结果不受语句的影响,故语句执行后得到z =5 o最后,语句和并发执行,这时得到了两种结果为:语句先执行:x =1 0 ,y =9 ,z=1 5 0语句先执行:x =1 0 ,y =1 9 ,z =1 5此外,还有第三种情况,语句被推迟,直至语句后再执行,于是依次执行以下三个语句:7:二 z +X:z :=y +1 ;y :=Z 十 y ;这时z的值只可能是y +1=5 ,故y =Z+Y=5 +4=9,而x =10。第三种
9、情况为:x =1 0 ,丫=9 ,Z=5 o4有一阅览室,读者进入时必须先在一张登记表上登记,该表为每一座位列出一个表目,包括座号、姓名,读者离开时要注销登记信息;假如阅览室共有1 0 0个座位。试用:1 )信号量和P、V操作;2 )管程,来实现用户进程的同步算法。答:1 )使用信号量和P、v操作:v ar n am e :ar r ay 1 1 00o f A;A=r e c o r dn u m be r :in t e ge r ;n am e:s t r in g;e n dfo r i:=1 t o 1 00 d o A i.n u m be r :i;A i.n am e :n u
10、 l l;m u t e x ,s e at c o u n t :s e m ap ho r e ;i:in t e ge r ;m u t e x :=1 ;s e at c o u n t :=1 00;c o be gin(p r o c e s s r e ad e r!(v ar r e ad e n am e:s t r in g)(i=l ,2 ,)(P(s e at c o u n t );P(m u t e x );fo r i:=1 t o 1 00 d o i+if A i.n am e=n u l l t he n A i.n am e:r e ad e r n am
11、 e;r e ad e r ge t t he s e at n u m be r=i;n u m be rV(m u t e x )进入阅览室,座位号i,座下读书;P(m u t e x );A in am e:n u l l ;V(m u t e x );V(s e at c o u n t);离开阅览室;)c o e n d2 )使用管程操作:TYPE r e ad bo o k=m o n i t o rVAR R:condition;I,seatcount:integer;name:array 1:1 00 of string;DEFINE rcadercome,readerleav
12、e;USE check,wait,signal,release;Procedure readercome(readername)begincheck(IM);if seatcount1 00 wait(R,IM)seatcount:=seatcount+1 ;for i=l to 1 00 do i+if namei=null then namei:=readername;get the seat number=i;release(IM);endprocedure readerleave(readername)begincheck(IM);seatcount一 一;for i=1 to 1 0
13、0 do i+if name i readername then name i:null;release(IM);endbeginseatcount:=1 00;name:=null;endcobegin(process readeri(i=1 ,2.)beginreadercome(readername);read the book;readerleave(readername);leave the readroom;end)coend.5.在一个盒子里,混装了数量相等的黑白围棋子 现在用自动分拣系统把黑子、白子分开,设分拣系统有二个进程P 1 和 P2,其中P 1 拣白子;P 2 拣黑子。
14、规定每个进程每次拣一子;当一个进程在拣时,不允许另一个进程去拣;当一个进程拣了一子时,必须让另一个进程去拣.试写出两进程P 1和P 2能并发正确执行的程序。答1 :实质上是两个进程的同步问题,设信号量s i和s 2分别表示可拣白子和黑子,不失一般性,若令先拣白子。v ar SI,S2 :s e m ap ho r e;S1 :=1;S2 :=0;c o be gin(p r o c e s s Plbe ginr e p e atP(SI);拣白子V(S2 );u n t il fal s e ;e n dp r o c e s s P2be ginr e p e atP(S2 );拣黑子V(
15、SI);u n t il fal s e ;e n d)c o e n d .答2 :TYPE p ic k u p-c he s s =MONITORVAR fl ag:bo o l e an ;S-bl ac k ,s-w hit e :c o d it io n ;DEFINE p ic k u p-bl ac k ,p ic k u p-w hit e ;USE w ait,s ign al ,c he c k ,r e l e as e ;p r o c e d u r e p ic k u p-bl ac k ;be ginc he c k(IM);if fl ag t he n
16、w ait(s-bl ac k,IM);fl ag:=t r u e;p ic k u p a bl ac k;s ign al(S-w hit e,IM);r e l e as e (IM);e n dp r o c e d u r e p ic k u p-w hit e ;be ginc he c k (IM);if n o t fl ag t he n w ait(S-w hit e,IM);fl ag:=fal s e ;p ic k u p a w hit e ;s ign al (S-bl ac k,IM);r e l e as e (IM);e n dbe ginfl ag:=
17、t r u e ;e n dm ain ()c o be ginp r o c e s s -B();p r o c e s s -W();c o e n d)p r o c e s s-B()be ginp ic k u p-c he s s,p ic k u p-bl ac k ();o t he r ;e n dp r o c e s s-W()be ginp ic k u p-c he s s,p ic k u p-w hit e();o t he r ;e n d6管程的同步机制使用条件变量和w ait及s ign al ,尝试为管程设计一种仅仅使用一个原语操作的同步机制。答:可以采
18、用形如w ait u n t il V条件表达式的同步原语。如w ait u n t il(n u m be r s u m +n u m be r 0、S=0、S 0表示还有共享资源可供使用。S阅表示共享资源正被进程使用但没有进程等待使用资源。S C oB、D、CD、E、BA、E、BECCDE、A、把语句编号,P1r e p e atk:=k X 2 ;k:=k+l ;u n t i l f al s e ;1 )K的初值为5 ,以便于描述:P2r e p e atp r i n t k ;k:=0 ;u n t i l f al s e ;故P l执行两个循环后,2 3 o2 )语句并发执
19、行有以下情况:、,这时的打印值为:、,这时的打印值为:、,这时的打印值为:、,这时的打印值为:、,这时的打印值为:、,这时的打印值为:由472 346462 32 3P 2并发执行,共享了变量K,故产生了2)K 结果不唯一。1 1证明信号量与管程的功能是等价的:(1)用信号量实现管程;(2 )用管程实现信号量。答:(1)用信号量实现管程;Ho a r e是用信号量实现管程的一个例子,详见课文内容。下面介绍另一种简单方法:每一个管程都对应一个m u t ex ,其初值为1 ,用来控制进程互斥调用管程。再设一个初值为0的信号量,用来阻塞等待资源的进程。相应的用信号量实现的管程库过程为:Va r m
20、 u t ex,c:s em a p h o r e;m u t ex:=1 ;c:=0 ;v o i d en t er-m o n i t o r ()/*进入管程代码,保证互斥P (m u t ex );)v o i d 1 ea v e-m o n i t o r-n o r m a l 1 y ()/*不发信号退出管程V(m u t ex );v o i d lea v e-w i t h-s i g a l(c)/*在条件c上发信号并退出管程,释放一个等待 c条件的进程。注意这时没有开放管程,因为刚刚被释放的进程己在管程中。V(c );)v o i d w a i t (c)/*等
21、待条件c ,开放管程(V(m u t ex );P (c);)(2 )用管程实现信号量。TYP E s em a p h o r e=m o n i t o rVA R S;c o n di t i o n ;C:i n t eg er ;D E F I N E P ,V;USE c h ec k,w a i t ,s i g n a l,r elea s e;p r o c edu r e Pb eg i nc h ec k(I M );C:=C-l:i f C 0 t h en w a i t (S,I M );r elea s e(I M );en dp r o c edu r e Vb
22、 eg i nc h ec k(I M ):C :=C +1 ;i f C WO t h en s i g n a l(S,I M );r elea s e(I M );en db eg i nC:=初值;E n d.1 2 证明消息传递与管程的功能是等价的:(1)用消息传递实现管程;(2 )用管程实现消息传递。答:(1 )用消息传递实现管程;用消息传递可以实现信号量(见1 3 (2 ),用信号量可以实现管程(见1 1(1),那么,把两种方法结合起来,就可以用用消息传递实现管程。(2)用管程实现消息传递。TYP E m a i lb o x=m o n i t o rVA R r ,k,c o
23、 u n t:i n t eg er ;b u ffer :a r r a y 0*n-l o f m es s a g e;fu ll,em p t y:c o n di t i o n ;D E F I N E a dd,g et ;USE c h ec k,w a i t ,s i g n a l,r elea s e;p r o c edu r e a dd(r );b eg i nc h ec k(I M );i f c o u n t=n t h en w a i t (fu ll,I M );b u ffer r:=m es s a g e;r:=(r+1)m o d nc o
24、u n t:=c o u n t +1 ;i f c o u n t =1 t h en s i g h a l(em p t y ,I M );r elea s e(I M );en dp r o c edu r e g et (m );b eg i nc h ec k(I M );i f c o u n t =0 t h en w a i t (em p t y ,I M );m:=b u ffer k J;c o u n t :二 c o u n t-1 ;i f c o u n t =n-l t h en s i g n a l(fu ll,I M );r elea s e(I M )
25、;en db eg i nr:=0 ;k:=0 ;c o u n t:=0 ;en d1 3 证明信号量与消息传递是等价的:(1 )用信号量实现消息传递;(2)用消息传递实现信号量。答:(1 )用信号量实现消息传递;1)把消息队列组织成一个共享队列,用一个互斥信号量管理对该队列的入队操作和出队操作.2 )发送消息是一个入队操作,当队列存储区满时,设计一个同步信号量阻塞s en d操作。3 )接收消息是一个出队操作,当队列存储区空时,设计另一个同步信号量阻塞r ec ei v e 操作。(2 )用消息传递实现信号量。1)为每一个信号量建立一个同步管理进程,它包含了一个计数器,记录信号量值;还为此
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 习题 答案
限制150内