- 1、本文档共46页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统复习指南剖析
* 解:(1)缓冲区是一互斥资源,因此设互斥信号量mutex; (2)同步问题:P1、P2因为奇数的放置与取用而同步,设同步信号量odd;P1、P3因为偶数的放置与取用而同步,设同步信号量even;P1、P2、P3因为共享缓冲区,设同步信号量empty。 P1、P2、P3的活动描述如下: semaphore mutex=1,odd=0, even=0, empty=N; 进程P1 while(true) { number=produce(); wait(empty); wait(mutex); put(); signal(mutex); if(number%2==0) signal(even); else signal(odd); } 进程P2 while(true) { wait(odd); wait(mutex); getodd(); signal(mutex); signal(empty); countodd(); } 进程P3 while(true) { wait(even); wait(mutex); geteven(); signal(mutex); signal(empty); counteven(); } * 18、什么是死锁?产生死锁的原因是什么?死锁产生的必要条件有哪些? 答:两个或两个以上的进程在保持部分资源的同时等待本组其他进程占有的资源而形成的一种循环等待僵局叫死锁。 死锁产生的原因是资源竞争以及进程推进顺序不当。 死锁产生的必要条件是:互斥条件、不剥夺条件、占有并等待条件和环路等待条件。 * 19、请详细说明可通过哪些途径预防死锁? 答:预防死锁是通过破坏死锁产生的必要条件来预防死锁发生的,具体如下: 剥夺资源法:当进程阻塞时,剥夺该进程已获得的全部资源; 全部分配法:当给进程分配资源时一次性地分配给进程所需要的全部资源,如资源不够分配,则进程一个资源都不分配; 有序资源分配法:要求进程申请同类资源时采用全部分配的方法,而申请不同类资源时,按资源类别的序号从小到大的顺序申请。 * 20、系统中有3种类型的资源(A,B,C,)和5个进程P1,P2,P3,P4,P5,A资源总数为10,B为8,C为8,在T0时刻系统状态如下表。系统采用银行家算法实施死锁避免策略。试问: a: T0时刻此系统是否安全,若是,给出一个安全序列。 b: 此时若进程P2请求资源(1,1,0),是否能实施资源分配,为什么? c: 在此基础上,若进程P1请求资源(2,0,1),能否实施资源分配,为什么? * ? 最大资源需求量 已分配资源数量 A B C A B C P1 7 7 3 0 2 0 P2 3 3 4 2 1 0 P3 9 1 2 3 0 2 P4 2 3 3 2 1 2 P5 4 3 4 0 1 2 解:依题意可得Available(3,3,2) a: T0时刻是安全的,安全序列为(P4,p2,p3,p5,p1)。(过程略) b: 若进程P2请求资源Req(1,1,0),按银行家算法判断如下: * 1)判断Req(1,1,0)=Need2(1,2,4),表示Req为合法请求; 2)判断Req(1,1,0)=Available(3,3,2),表示Req为可满足的请求; 3)试探性分配 Available-=Req; 变为(2,2,2) Alloc2+=Req; 变为(3,2,0) Need2-=Req; 变为(0,1,4) 4)判断新状态的安全性 新状态是安全的,可找到安全序列(P4,p2,p3,p5,p1)(具体过程在此略去),因此可分配资源,Available变为(2,2,2), * c: 若进程P1请求资源Req(2,0,1),按银行家算法判断如下: 1)判断Req(2,0,1)=Need1(7,5,3),表示Req为合法请求; 2)判断Req(2,0,1)=Available(2,2,2),表示Req为可满足的请求; 3)试探性分配 Available-=Req; 变为(0,2,1) Alloc1+=Req; 变为(2,2,1) Need1-=Req; 变为(5,5,2) 4)判断新状态的安全性 新状态是不安全的,因为可利用资源只能满足P4后就不能满足任何进程的全部资源需求了,即找不到安全序列,此时系统进入不安全状态。 因此,不能满足进程P1的资源请求Req(2,0,1)。 * 21、某系统同
文档评论(0)