- 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.4 进程通信(communication) 进程通信:指进程间的信息交换。 低级通信:进程之间控制信息的交换称为低级通信。 一般只传送一个和几个字节的信息,达到控 制进程执行速度的作用。(进程的同步和互斥) 高级通信:用户可以直接利用操作系统所提供的一组通信命令,高效地传送大量数据的一种通信方式。 第二页,共三十二页。 3.4 进程通信 3.4.1 概念 3.4.2 进程通信类型 3.4.3 消息缓冲通信的实现 3.4.4 信箱通信的实现 3.4.5 进程通信的实例—管道 第三页,共三十二页。 3.4.1 概念 所谓进程通信是指进程之间可直接以较高的效率传递较多数据的信息交换方式。 P.V操作实现的是进程之间的低级通讯,所以P.V为低级通讯原语。它只能传递简单的信号,不能传递交换大量信息。如果要在进程间传递大量信息则要用Send / Receive原语(高级通讯原语) 第四页,共三十二页。 一、单机系统中进程间通信的四种形式 P62 主从式、会话式、 消息或邮箱机制、 共享存储区方式 二、高级通讯机制类型 1 共享存储器系统(Shared-Memory System) 2 消息传递系统(Message passing System) 3 管道(pipe)通信系统(共享文件方式) 3.4.2 进程通信类型 第五页,共三十二页。 1、共享存储器系统 基于共享数据结构的通信方式 诸进程公用某些数据结构,进程通过它们交换信息。如生产者-消费者问题中的有界缓冲区。 (低效,只适于传递少量数据) 第六页,共三十二页。 基于共享存储区的通信方式 为了传送大量数据,在存储区中划出一块共享存储区,诸进程可通过对共享存储区进行读或写数据实现通讯。 向系统申请共享存储区中的一个分区 指定该分区的关键字 如果已经给其他进程分配了这样的存储区, 将使用分区的描述符返回给申请者 4 申请者将申请到的共享分区挂到本进程上 第七页,共三十二页。 2、消息传递系统 进程间的数据交换以消息为单位,程序员利用系统的通信原语实现通信。操作系统隐藏了通信的实现细节,简化了通信程序编制的复杂性。因而得到广泛应用。 ?直接通信方式(消息缓冲机制) ?间接通信方式(信箱通信方式) 因其实现方法的不同,又可分为 第八页,共三十二页。 直接通信:发送进程直接把消息发送给接收者,并将它挂在接收进程的消息缓冲队列上。接收进程从消息缓冲队列中取得消息。 间接通信:发送进程将消息发送到某种中间实体中(信箱),接收进程从中取得消息。 第九页,共三十二页。 思考 两种方式的主要区别? 前者需要两进程都存在,后者不需要。 第十页,共三十二页。 3、管道通信 所谓管道,是指用于连接一个读进程和一个写进程的文件,称pipe文件。向管道提供输入的进程(称写进程),以字符流的形式将大量数据送入管道,而接受管道输出的进程(读进程)可从管道中接收数据。该方式首创于UNIX,它能传送大量数据,被广泛采用。 发送进程 接收进程 字符流方式写入读出 先进先出顺序 第十一页,共三十二页。 两通信进程必须满足下列条件 在发送进程把消息写入缓冲区和把缓冲区挂入消息队列时, 应禁止其他进程对缓冲区消息队列的访问。同理,接收进程取消息时也禁止其他进程访问缓冲区消息队列 2 当缓冲区中没有信息存在时,接收进程不能接收到任何消息 3.4.3 消息缓冲通信的实现 发送进程 在自己的内存空间设置一个 把要发送的消息填入发送区 发送区 接收区 接收进程 在自己的内存 空间设置一个 公用缓冲区 第十二页,共三十二页。 在操作系统空间设置一组缓冲区。 当发送进程需要发送消息时,执行send系统调用,产生访管中断,进入操作系统。 操作系统为发送进程分配一个空缓冲区,并将所发送的消息从发送进程copy到缓冲区中,然后将该载有消息的缓冲区连接到接收进程的消息链链尾,如此就完成了发送过程。 发送进程返回到用户态继续执行。 具体实现过程 第十三页,共三十二页。 在以后某个时刻,当接收进程执行到receive接收原语时,也产生访管中断进入操作系统。 由操作系统将载有消息的缓冲区从消息链中取出,并把消息内容copy到接收进程空间,之后收回缓冲区,如此就完成了消息的接收,接收进程返回到用户态继续进行 第十四页,共三十二页。 PCB ...... Send(R, M) ...... SIZE:消息长度 TEXT:消
原创力文档


文档评论(0)