- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
假定系统有3个并发进程get 、copy 和put共享缓冲器B1和B2。进程get负责从输入设备上读信息,每读出一条记录后放到B1中。进程copy从缓冲器B1中取出一条记录拷贝后存入B2。进程put取出B2中的记录打印输出。B1和B2每次只能存放一条记录。要求3个进程协调完成任务,使打印出来的与读入的记录个数、次序完全一样。请用记录型信号量写出并发程序。(北大1990年试题) 解: 设置4个信号量,其中empty1对应空闲的缓冲区1,其初值为1;full1对应缓冲区1中的记录,其初值为0; empty2对应空闲的缓冲区2,其初值为1;full2对应缓冲区2中的记录,其初值为0。相应进程描述为: get( ){ while(1){ 从输入设备读入一条记录; P(empty1); 将记录存入缓冲区1; V(full1); } } copy( ){ while(1){ P(full1); 从缓冲区1中取出一条记录; V(empty1); P(empty2); 将取出的记录存入缓冲区2 ; V(full2); } } put( ){ while(1){ P(full2); 从缓冲区2中取出一条记录; V(empty2); 将取出的记录打印出来; } } Main( ){ parbegin(get,copy,put); } 例 一台计算机有10台磁带机被n个进程竞争,每个进程最多需要3台磁带机,那么n最多为_____时,系统没有死锁的危险? 解:n最大为4。 例 在银行家算法中,若出现下述的资源分配情况: Process Max Allocation Available P0 0 0 4 4 0 0 3 2 1 6 2 2 P1 2 7 5 0 1 0 0 0 P2 3 6 10 10 1 3 5 4 P3 0 9 8 4 0 3 3 2 P4 0 6 6 10 0 0 1 4 试问: 1)该状态是否安全? 2)若进程P2提出请求Request(1,2,2,2)后,系统能否将资源分配给它? 3)如果系统立即满足P2的上述请求,系统是否立即进入死锁状态? 解: 1)利用安全性算法对上面的状态进行分析(如下表所示),找到了一个安全序列{P0,P3,P4,P1,P2}或{P0,P3,P1,P4, P2},故系统是安全的。 资源情况 进程 Work Need Allocation Work+Allocation Finish A B C D A B C D A B C D A B C D P0 1 6 2 2 0 0 1 2 0 0 3 2 1 6 5 4 True P3 1 6 5 4 0 6 5 2 0 3 3 2 1 9 8 6 True P4 1 9 8 6 0 6 5 6 0 0 1 4 1 9 9 10 True P1 1 9 9 10 1 7 5 0 1 0 0 0 2 9 9 10 True P2 2 9 9 10 2 3 5 6 1 3 5 4 3 12 14 14 True 2) P2发出请求向量Request(1,2,2,2)后,系统按照银行家算法进行检查: Request2(1,2,2,2)≤Need2(2,3,5,6); Request2(1,2,2,2)≤Available(1,6,2,2); 系统先假定可为P2分配资源,并修改Available,Allocation2和Need2向量: Availabe=(0,4,0,0)Allocation2=(2,5,7,6) Need2=(1,1,3,4) 进行安全性检查:此时对所有进程,条件Needi≦ Available(0,4,0,0)都不成立,即Available不能满足任何进程的请求,故系统进入不安全状态。因此,当进程P2提出请求Request(1,2,2,2)后,系统不能将资源分配给它。 3)系统立即满足进程P2的请求(1,2,2,2)后,并没有马上进入死锁状态。因为,此时上述进程并没有申请新的资源,并未因得不到资源而进入阻塞状态。只有当上述进程提出新的请求,并导致所有没执行完的多个进程因得不到资源而阻塞时,系统才进入死锁状态。 例2:已知某分页系统,主存容量为64K,页面大小为1K,对一个4页大的作业,其0、1、2、3页分别被分配到主存的2、4、6、7块中。 (1)将十进制的逻辑
文档评论(0)