Chapter 7 进程互斥和同步.ppt

  1. 1、本文档共89页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Chapter 7 进程互斥和同步

设key[S]=1时表示类名为S的临界区可用,key[S]=0时表示类名为S的临界区不可用。 则,unlock(key[S])只用一条语句 即可实现。即: key[S]←1 问题分析 用加锁法解决进程互斥的问题时,一个进程能否进入临界区是依靠自己的测试。 建立一个信号量步骤: 说明所建信号量所代表的意义 赋初值 建立相应的数据结构以便指向那些 等待使用该临界区的进程。 用信号量实现两并发进程PA,PB互斥的描述如下: 1) 设sem为互斥信号量,其取值范围为(1,0,-1)。 其中sem=1 表示进程PA和PB都未进入类名为S的临界区, sem=0 表示进程PA或PB已进入类名为S的临界区, sem=-1 表示进程PA和PB中,一个进程已进入临界区,而另一个进程等待进入临界区。 同步的消息实现机制 如果对一个消息或事件赋以唯一的消息名,则可用过程: wait (消息名) 表示进程等待合作进程发来的消息,而用过程 signal (消息名) 表示向合作进程发送消息。 几种通信方式都可用于大量数据传送,而且,由于其通信方式不同,需要使用不同的控制方式来达到通信进程之间同步或互斥的目的。 习题一 Dining-Philosophers Problem Shared data semaphore chopstick[5]; Initially all values are 1 Dining-Philosophers Problem Philosopher i: do { P(chopstick[i]) P(chopstick[(i+1) % 5]) … eat … V(chopstick[i]); V(chopstick[(i+1) % 5]); … think … } while (1); 习题二: 设有8个程序prog1,prog2,…prog8.它们在并发系统中执行时有如图2。1所示的制约关系,试用P,V操作实现这些程序间的同步。 程序清单 BEGIN INTEGER S13,S14,S15,S23,S24,S25; INTEGER S36,S48,S57,S68,S78; S13=S14=S15:=0; S23=S24=S25:=0; S36:=0; S48:=0; S57:=0; S68:=0; S78:=0; COBEGIN Prog1: BEGIN do all work; v(s13); v(s14); v(s15); END; prog2: BEGIN do all work; v(s23); v(s24); v(s25); END; Prog3: BEGIN P(S13); P(S23); do all work; v(36); END; Prog4: BEGIN P(S14); P(S24); do all work; v(48); END; Prog5: BEGIN P(S15); P(S25); do all work; v(57); END; prog6: BEGIN P(S36) DO ALL WORK V(S68) END PROG7: BEGIN P(S57) DO ALL WORK V(S78) END PROG8: BEGIN

文档评论(0)

3471161553 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档