ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:33.39KB ,
资源ID:4814485      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4814485.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第三章作业参考答案.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第三章作业参考答案.docx

1、第三章作业参考答案第三章 作业参考答案P181 第3题:答:现对进程语句进行编号,以方便描述。P1: P2:begin begin y:=1; x:=1; y:=y+3; x:=x+5; V(S1); P(S1); z:=y+1; x:=x+y; P(S2); V(S2); y:=z+y z:=z+x; end. end.、和是不相交语句,可以任何次序交错执行,而结果是唯一的。接着无论系统如何调度进程并发执行,当执行到语句时,可以得到x=10,y=4。按Bernstein条件,语句的执行结果不受语句的影响,故语句执行后得到z=5。最后,语句和并发执行,这时得到了两种结果为:语句先执行:x=10

2、,y=9,z=15。语句先执行:x=10,y=19,z=15。 此外,还有第三种情况,语句被推迟,直至语句后再执行,于是依次执行以下三个语句:z:=z+x;z:=y+1; y:=z+y;这时z的值只可能是y+1=5,故y=z+y=5+4=9,而x=10。第三种情况为:x=10,y=9,z=5。P181 第5题:解:设信号量empty,mutex;empty:=100;mutex:=1;parbegin读者进入:beginP(empty);P(mutex);登记;P(mutex);End;读者离开:begin P(mutex);撤消登记;V(mutex);V(empty);End;Parend;

3、P181 第6题:答:实质上是两个进程的同步问题,设信号量S1和S2分别表示可拣白子和黑子,不失一般性,若令先拣白子。Main( ) int S1=1, S2=0; CobeginP1( );P2( ); CoendP182 第15题:Dijkstra临界区软件算法描述如下:var flag:array0n of (idle,want-in,in_cs);turn:integer;tune:0 or 1 oror,n-1;process Pi(i=0,1,n-1)var j;integer; begin repeatrepeat flagi:=want_in; while turni do i

4、f flagturn=idle then turn:=i; flagi:=in_cs; j:=0; while (jn)&(j=i or flagjin_cs) do j:=j+1; until jn; critical section; flagi:=idle; until false;end.试说明该算法满足临界区原则。答:为方便描述,把Dijkstra程序的语句进行编号:repeat flagi:=want_in; while turni do if flagturn=idle then turn:=i; flagi:=in_cs; j:=0; while (jn)&(j=i or fl

5、agjin_cs) do j:=j+1; until jn; critical section; flagi:=idle; (1) 满足互斥条件当所有的Pj都不在临界区中,满足flagjin_cs (对于所有j,ji)条件时,Pi才能进入它的临界区,而且进程Pi不会改变除自己外的其他进程所对应的flagj的值。另外,进程Pi总是先置自己的flagi为in_cs后,才去判别Pj进程的flagj的值是否等于in_cs,所以,此算法能保证n个进程互斥地进入临界区。(2) 不会发生无休止等待进入临界区由于任何一个进程Pi在执行进入临界区代码时先执行语句,其相应的flagi的值不会是idle。注意到fl

6、agi=in_cs并不意味着turn的值一定等于i。我们来看以下情况,不失一般性,令turn的初值为0,且P0不工作,所以,flagturn=flag0=idle。但是若干个其他进程是可能同时交替执行的,假设让进程Pj(j=1,2,.,n-1)交错执行语句后(这时flagj=want_in),再做语句(第一个while语句),来查询flagturn的状态。显然,都满足turni,所以,都可以执行语句,让自己的turn为j。但turn仅有一个值,该值为最后一个执行此赋值语句的进程号,设为k、即turn=k(1kn-1)。接着,进程Pj(j=1,2,.,n-1)交错执行语句,于是最多同时可能有n-

7、1个进程处于in_cs状态,但不要忘了仅有一个进程能成功执行语句,将turn置为自己的值。假设P1,P2,Pm是一个已将flagi置为in_cs(i=1,2,m)(mn-1)的进程集合,并且已经假设当前turn=k(1km),则Pk必将在有限时间内首先进入临界区。因为集合中除了Pk之外的所有其他进程终将从它们执行的语句(第二个while循环语句)退出,且这时的j值必小于n,故内嵌until起作用,返回到起始语句重新执行,再次置flagi=want_in,继续第二轮循环,这时的情况不同了,flagturn=flagk必定idle(而为in_cs)。而进程Pk发现最终除自身外的所有进程Pj的fla

8、gjin_cs,并据此可进入其临界区。P183 第21题:公园有一个恐龙博物馆和一个花园,有m个旅客和n辆车,每辆车仅能乘一个旅客。旅客在博物馆逛了一会,然后,排队乘坐旅行车,当一辆车可用时,它载入一个旅客,再绕花园行驶任意长的时间。若n辆车都已被旅客乘坐游玩,则想坐车的旅客需要等待。如果一辆车已经空闲,但没有游玩的旅客了,那么,车辆要等待。试用信号量和P、V操作同步m个旅客和n辆车子。答:这是一个汇合机制,有两类进程:顾客进程和车辆进程,需要进行汇合、即顾客要坐进车辆后才能游玩,开始时让车辆进程进入等待状态。var scl,sck,sc,kx,xc,mutex:semaphore; sck

9、:= kx:= sc:= xc:=0; sc1:=n;mutex:=1; sharearea:一个登记车辆被服务乘客信息的共享区;cobeginprocess 顾客i(i=1,2,)begin P(scl); /*车辆最大数量信号量 P(mutex); /*封锁共享区,互斥操作 在共享区sharearea登记被服务的顾客的信息:起始和到达地点,行驶时间 V(sck); /*释放一辆车,即顾客找到一辆空车 P(kx); /*车辆要配备驾驶员,顾客等待被载, 上车; V(sc); /*顾客进程已汇合到车辆进程,即顾客坐进车里 P(xc); /*待游玩结束后后,顾客等待下车 V(scl); /*空车

10、辆数加1endProcess 车辆j(j=1,2,)begin L: P(sck); /*车辆等待有硕客来使用 在共享区sharearea登记那一辆车被使用,并与顾客进程汇合; V(mutex); /*这时可开放共享区,让另一顾客雇车 V(kx); /*允许顾客用此车辆 P(sc); /*车辆等待顾客上车 车辆载着顾客开行到目的地; v(xc); /*允许顾客下车 goto L;endcoendP184 第24题:24.系统有A、B、C、D共4种资源,在某时刻进程P0、P1、P2、P3和P4对资源的占有和需求情况如表,试解答下列问题:ProcessAllocationClaimAvailabl

11、eA B C DA B C D A B C D P00 0 3 20 0 4 4 1 6 2 2P11 0 0 02 7 5 0 P21 3 5 43 6 10 10P30 3 3 2 0 9 8 4 P40 0 1 40 6 6 10(1) 系统此时处于安全状态吗(2) 若此时P2发出request2(1、2、2、2),系统能分配资源给它吗为什么答:(1)系统处于安全状态,存在安全序列:P0,P3,P4,P1,P2。 (2)不能分配,否则系统会处于不安全状态。P185第26题:答:1.由于系统目前还有=40个单元,P4进程到达,把25个单元分给它。这时系统还余15个单元,可把15个单元分给P

12、3,它执行完后会释放60个单元。于是可供P1(还要45个单元),P2(还要20个单元),P4(还要35个单元)任何一个执行。安全序列为: P1,P2,P3,P4,P3,P1,P2,P4 P1,P2,P3,P4,P3,P1,P4,P2 P1,P2,P3,P4,P3,P2,P1,P4 P1,P2,P3,P4,P3,P2,P4,P1 P1,P2,P3,P4,P3,P4,P1,P2 P1,P2,P3,P4,P3,P4,P2,P1进程到达,P4最大需求60,最初请求35。如果把35个单元分给P4,系统还余5个单元,不再能满足任何一个进程的需求,系统进入不安全状态。P185第31题:解:semaphone

13、 wait, mutex1, mutex2; mutex1=mutex2=1; wait=1;int counter1, counter2; counter1=0; counter2=0;cobegin process P东( )P(mutex1); counter1+; if(counter1=1) P(wait);V(mutex1);过独木桥; P(mutex1); counter1-; if(counter1=0) V(wait); V(mutex1); process P西( )P(mutex2); counter2+; if(counter2=1) P(wait);V(mutex2)

14、;过独木桥; P(mutex2); counter2-; if(counter2=0) V(wait); V(mutex2); coendP185第32题:解:semaphone wait, mutex1, mutex2, bridge; mutex1=mutex2=1; bridge=k; wait=1;int counter1, counter2; counter1=0; counter2=0;cobegin process P东( )P(mutex1); counter1+; if(counter1=1) P(wait);V(mutex1);P(bridge);过独木桥;V(bridge

15、); P(mutex1); counter1-; if(counter1=0) V(wait); V(mutex1); process P西( )P(mutex2); counter2+; if(counter2=1) P(wait);V(mutex2);P(bridge);过独木桥;V(bridge); P(mutex2); counter2-; if(counter2=0) V(wait); V(mutex2); coendP185第33题:解:semaphone wait, mutex1, mutex2; mutex1=mutex2=1; wait=1;int counter1, cou

16、nter2; counter1=0; counter2=0;semaphone s1, s2; s1=3; s2=0;cobegin process P东( )P(s1);P(mutex1); counter1+; if(counter1=1) P(wait);V(mutex1);过独木桥;V(s2); P(mutex1); counter1-; if(counter1=0) V(wait); V(mutex1); process P西( ) P(s2);P(mutex2); counter2+; if(counter2=1) P(wait);V(mutex2);过独木桥;V(s1); P(m

17、utex2); counter2-; if(counter2=0) V(wait); V(mutex2); coendP186第34题:解:semaphone wait, mutex1, mutex2; mutex1=mutex2=1; wait=1;int counter1, counter2; counter1=0; counter2=0;semaphone stop; stop=1;cobegin process P东( )P(stop);P(mutex1); counter1+; if(counter1=1) P(wait);V(mutex1);V(stop);过独木桥; P(mute

18、x1); counter1-; if(counter1=0) V(wait); V(mutex1); process P西( ) P(stop);P(mutex2); counter2+; if(counter2=1) P(wait);V(mutex2);V(stop);过独木桥; P(mutex2); counter2-; if(counter2=0) V(wait); V(mutex2); coendP185第36题:解:36.答:当两个进程都执行完第一部(都占用R1)时,系统进入不安全状态。这时无论哪个进程执行完第二步,死锁都会发生。可能达到死锁点:进程P1占有一个R1和一个R2,而进程P2占有一个R1;或者相反,这时已经形成死锁。如图所示:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1