计算机操作系统 教学课件 作者 刘循 朱敏 文艺 第4章进程同步与进程通信.pptVIP

计算机操作系统 教学课件 作者 刘循 朱敏 文艺 第4章进程同步与进程通信.ppt

  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文档。上传文档
查看更多
对进程i和进程j,算法代码如下: turn: integer; turn: = i; f_Pi; /* 创建进程Pi */ f_Pj; /* 创建进程Pj */ ? cobegin Pi: /* 对进程i */ begin …… while turn = j do nothing; critical section; turn = j; end; Pi:/* 对进程i */ begin …… flag[i] = true; while flag[j] do nothing; critical section; flag[i] = false; …… end; ? Pj: /* 对进程j */ begin …… flag[j] = true; while flag[i] do nothing; critical section; flag[j] = false; …… end; 4.3.1 整型信号量 1.整型信号量定义 设s为一个需要初始化值的正整型量。对s的访问只能通过P、V操作。 s称为整型信号量,其初值可为1或0。 V操作的原语定义如下: V(s) { s = s + 1; } 4.6.2 消息传递通信机制(续) 进程之间通过消息传递通信的信息,每当发送进程需要发送数据时,将发送的数据封装到消息的正文中,并形成消息结构。 接收进程接收消息。消息队列可以有多个,如果存在多个消息队列,则对应每个消息队列都有一个消息队列头结构,这些消息队列头结构构成消息队列头表。消息队列头表中记录了每个消息队列的队首指针及相应信息,即通过消息队列头表可以找到每个消息队列和消息队列的长度。 4.6.2 消息传递通信机制(续) 2.消息通信中的两种类型 在利用消息的进程通信时,发送进程和接收进程可以直接发送和接收消息,也可以借助邮箱发送和接收消息。因此,消息通信中存在直接通信与间接通信两种类型。 (1)直接通信 在直接通信方式下,发送进程将发送的数据封装到消息正文后,发送进程必须给出接收进程的标志,然后用发送原语将消息发送给接收进程。 发送消息的原语send格式为: send(接收进程标志,消息队列首指针)。 接收进程在接收消息之前,会在自己进程的存储空间中设置一个接收区,然后用接收原语接收。接收原语格式为: receive(发送进程标志,接收区首地址指针)。 当接收进程接收多个发送进程发送来的消息时,则在接收原语中可以不写发送进程标志,发送进程标志处会写上一个通用标记。 4.6.2 消息传递通信机制(续) 发送进程与接收进程之间直接传递消息,需要发送进程与接收进程之间协调,才能做到可靠地发送和接收消息,否则,消息容易丢失。因此,在直接通信中隐含着发送进程与接收进程之间的同步问题。 当发送进程调用send原语发送消息后,有两种选择。 ? 发送进程阻塞等待接收进程发回的确认信息,在接收进程接收到消息后,接收进程会向发送进程回送确认信息。当发送进程接收到确认信息后,发送进程发送完成,被唤醒,继续执行自己的后继程序。在后继程序处理中,对发送成功的消息进行处理,通常情况下会删除已经发送的消息内容,释放存储区。需要注意的是发送进程阻塞等待时间的最长值需要设置。 4.6.2 消息传递通信机制(续) ? 发送进程发送完消息后,不阻塞等待接收进程的回送信息,而是继续执行自己的程序。期间,会接收到接收进程的回送信息。收到回送消息,则删除原来的发送信息。如果限定时间到还没有收到确认消息,或重发或放弃。 相应地,接收进程调用receive原语也有两种选择。 ? 调用receive原语并一直阻塞等待发送来的消息,直到接收到消息。此种方式常与发送进程的第二种情况匹配。如果发送进程一直阻塞等待接收进程,则接收进程就不必等待发送进程,这样效率更高。 ? 调用receive原语后,不阻塞等待发送来的消息,继续执行本身的程序。当需要接收消息时,再去查看消息,回送接受信息给发送进程。此种情况常与发送进程的第一种情况匹配。 4.6.2 消息传递通信机制(续) (2)间接通信 间接通信是指发送进程与接收进程之间通过邮箱来进行通信。邮箱是一个共享数据结构,发送进程将消息发送到邮箱,接收进程从邮箱接收消息。与直接通信比较,间接通信灵活性更大,不需要发送进程与接收进程同步。 邮箱可以是一对一方式使用,也可以是一对多、多对一、多对多方式使用。 一对一的邮箱是发送

您可能关注的文档

文档评论(0)

时间加速器 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档