进程同步例题精选.pdfVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程同步例题精选

2003.试题一.4.关于临界区问题(critical section problem)是一个算法(假设只有进程P0 和P1 可能进入该临界区),如下(i 为0 或1 ),该算法_____ A 、 不能保证进程互斥进入临界区,且会出现“饥饿”(Starvation ) B、 不能保证进程互斥进入临界区,但不会出现“饥饿” C、 保证进程能互斥进入临界区,但会出现“饥饿” D、 保证进程互斥进入临界区,不会出现“饥饿” reapeat retry: if(turn≠-1) turn:=i; if(turn≠i) go to retry; turn:=-1; critical Section(临界区) turn=0; remainder Section(其他区域) until false; 解:应该选A。首先考虑不能保持互斥:P0 令turn =0 ,然后P1 执行retry 发现turn≠-1 ,所 以P1 令turn =1 ;然后或者P0 或者P1 先后令turn =-1 ,然后都进入临界区。如果某个进 程 P0 (或P1 )从临界区出来(这时turn =0 )又要进入,则令turn =i ,则它又能进入,重 复该过程则可能导致另外的一个进程饥饿。 2004.试题5.假设缓冲区buf1 和缓冲区buf2 无限大,进程p1 向buf1 写数据,进程p2 向buf2 写数据,要求buf1 数据个数和buf2 数据个数的差保持在(m,n)之间(mn,m,n 都是正数). 分析 :题中没有给出两个进程执行顺序之间的制约关系,只给出了一个数量上的制约关系, 即m=|buf1 数据个数-buf2 数据个数|=n .不需要考虑缓冲区的大小,只需要考虑两个进 程的同步和互斥.p2 向buf2 写数据比p1 向buf1 写数据的次数最少不超过m 次,最多不能 超过n 次,反之也成立.所以是一个生产者和消费者问题。 将等式展开得:(1)m=(buf1 数据个数-buf2 数据个数)=n; (2)m=(buf2 数据个数-buf1 数 据个数)=n; 由于m,n 都是正数,等式只有一个成立,不妨设(1)成立.在进程p1 和p2 都没 有运行时,两个缓冲区数据个数之差为0,因此,p1 必须先运行,向buf1 至少写m+1 个数据 后再唤醒p2 运行.信号量s1 表示p1 一次写入的最大量,初值为n(这时buf2 数据个数为0 ), s2 表示p2 一次写入的最大量,初值为-m (这时buf1 数据个数为0 ). begin var mutex1=1,mutex2=1,s1=n,s2=-m:semaphore; cobegin process p1 begin repeat get data; p(s1); p(mutex1); 写数据到buf1; v(mutex1); v(s2); end process p2 begin repeat; get data; p(s2); p(mutex2); //两个进程的互斥信号量应该用同一个mutex 即可

文档评论(0)

tazhiq2 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档