第3章进程管理4-进程同步.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
⑴设5个信号量c[1]~c[5],初值均为1,分别表示第i号筷子被拿(i=1,2,3,4,5)。 eat(i): 第i个哲学家要吃饭 begin P(c[i]); P(c[i+1 mod 5]); eating; V(c[i]); V(c[i+1 mod 5]); end 注:这个过程能保证两邻座不同时吃饭,但会出现5个哲学家一人(左手)拿一只筷子,谁也吃不到饭的死锁情况。 ⑵解决的思路如下: 让奇数号哲学家先取右手的筷子,让偶数号哲学家先取左手的筷子。这样就防止相邻座位的哲学家同时拿筷子的可能。除非某位哲学家一直吃下去,否则不会有人会饿死。 eat(i): begin if (i mod 2 == 0) then { P(c[i]); P(c[i+1 mod 5]); eating; V(c[i]); V(c[i+1 mod 5]); } else { P(c[i+1 mod 5]); P(c[i]); eating; V(c[i+1 mod 5]); V(c[i]); } end 假设Pc和Pp对公用缓冲区buf做了互斥措施 如按上述描述并发执行进程Pc和Pp,则会造成CPU时间的浪费(因Pc和Pp中有二个反复测试语句),这是OS设计要求不允许的。且CPU时间的浪费主要是由于Pc和Pp的执行互相制约所引起, Pc的输出结果是Pp的执行条件,而Pp的执行结果也是Pc的执行条件,这种现象在OS和用户进程中大量存在,这与“进程互斥”是不同的,上节介绍的并发进程的互斥时其执行的顺序可以是任意的。 上例中Pc和Pp进程的执行需解决进程间的直接制约,以最大限度的减少CPU时间的浪费。 上例中Pc和Pp进程的执行需解决进程间的直接制约,以最大限度的减少CPU时间的浪费。 上例中Pc和Pp进程的执行需解决进程间的直接制约,以最大限度的减少CPU时间的浪费。 上例中Pc和Pp进程的执行需解决进程间的直接制约,以最大限度的减少CPU时间的浪费。 上例中Pc和Pp进程的执行需解决进程间的直接制约,以最大限度的减少CPU时间的浪费。 wait等待合作进程发来的消息 signal向合作进程发送消息 上例中Pc和Pp进程的执行需解决进程间的直接制约,以最大限度的减少CPU时间的浪费。 wait等待合作进程发来的消息 signal向合作进程发送消息 利用wait和signal描述了进程同步的一种实现方法。 一个进程Pi的私用信号量semi是从制约进程发送来的进程Pi的执行条件所需要的消息。 互斥时使用的信号量为公用信号量。 设进程PA和PB通过缓冲区队列传递数据,PA为发送进程,PB为接收进程。发送数据时调用发送过程deposit(data),接收数据时调用过程remove(data),且数据的发送和接收满足条件: * 描述发送过程deposit和接收过程remove。 由题意知,进程PA调用的过程deposit(data)和进程PB调用的过程remove(data)必须同步执行,因过程deposit(data)的执行结果是过程remove(data)的执行条件,而当缓冲队列全部装满数据时, remove(data)的执行结果又是deposit(data)的执行条件,满足同步的定义。 x为局部变量,表示缓冲区号 buf(x)置标志位,为便于区分和搜索空缓冲区及非空 x为局部变量,表示缓冲区号 buf(x)置标志位,为便于区分和搜索空缓冲区及非空 把并发进程的同步、互斥问题一般化,即得抽象的一般模型,即生产者-消费者问题。 如计算进程和打印进程共享缓冲区的例子中,计算进程把数据送入缓冲区,打印进程从缓冲区中取数据,则计算进程可看作数据资源的生产者,打印进程可看作是消费者。 把一个长度为n(n0)的有界缓冲区与一群生产者进程和一群消费者进程联系起来。 因有限缓冲区是临界资源,则生产者进程和消费者进程之间必须互斥执行。 因有限缓冲区是临界资源,则生产者进程和消费者进程之间必须互斥执行。 Company Name 第3章 进程管理 --进程同步 同步进程举例 直接制约 同步定义 私用信号量 PV原语实现进程同步 生产者-消费者问题 哲学家进餐问题 * * 1.同步进程举例 Pc Pp buffer * Pc: A:local buf repeat buf?buf until buf=空 计算 得到计算结果 buf?计算结果 goto A Pp: B:local pri repeat pri?buf until pri≠空 打印buf中的数据 清除buf中的数据 goto B * 2.直接制约 一组在异步环境下的并发进程,各自

文档评论(0)

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

分享好文档!

1亿VIP精品文档

相关文档