第三章进程管理通信.ppt

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

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原语(高级通讯原语) 1、共享存储器系统 基于共享数据结构的通信方式 诸进程公用某些数据结构,进程通过它们交换信息。如生产者-消费者问题中的有界缓冲区。 (低效,只适于传递少量数据) 基于共享存储区的通信方式 为了传送大量数据,在存储区中划出一块共享存储区,诸进程可通过对共享存储区进行读或写数据实现通讯。 2、消息传递系统 进程间的数据交换以消息为单位,程序员利用系统的通信原语实现通信。操作系统隐藏了通信的实现细节,简化了通信程序编制的复杂性。因而得到广泛应用。 直接通信:发送进程直接把消息发送给接收者,并将它挂在接收进程的消息缓冲队列上。接收进程从消息缓冲队列中取得消息。 思考 两种方式的主要区别? 前者需要两进程都存在,后者不需要。 3、管道通信 所谓管道,是指用于连接一个读进程和一个写进程的文件,称pipe文件。向管道提供输入的进程(称写进程),以字符流的形式将大量数据送入管道,而接受管道输出的进程(读进程)可从管道中接收数据。该方式首创于UNIX,它能传送大量数据,被广泛采用。 3.4.3 消息缓冲通信的实现 具体实现过程 在操作系统空间设置一组缓冲区。 当发送进程需要发送消息时,执行send系统调用,产生访管中断,进入操作系统。 操作系统为发送进程分配一个空缓冲区,并将所发送的消息从发送进程copy到缓冲区中,然后将该载有消息的缓冲区连接到接收进程的消息链链尾,如此就完成了发送过程。 发送进程返回到用户态继续执行。 在以后某个时刻,当接收进程执行到receive接收原语时,也产生访管中断进入操作系统。 由操作系统将载有消息的缓冲区从消息链中取出,并把消息内容copy到接收进程空间,之后收回缓冲区,如此就完成了消息的接收,接收进程返回到用户态继续进行 消息缓冲区结构 type messageBuffer=record sender ;//发送者ID size ;//消息长度 text ;//消息正文 next ;//消息队列指针 end PCB中有关通信的数据项 type PCB=record … mq ; //消息队列首指针 mutex; //消息队列互斥信号量 sm ; //消息队列资源信号量 end 3.4.4 信箱通信的实现 1.? 信(邮)箱 信箱是一种数据结构,逻辑上它分成两部分:信箱头和由若干格子组成的信箱体。 Send实现 send(MailBox,M):把信件M送到指定的信箱MailBox中 步骤: 查找指定信箱MailBox ; 若信箱未满,则把信件M送入信箱且唤醒“等信件”者; 若信箱已满置发送信件进程为“等信箱”状态; Receive实现 receive( MailBox ,X):从指定信箱MailBox中取出一封信,存放到指定的地址X中 步骤: 查找指定信箱MailBox ; 若信箱中有信,则取出一封信存于X中且唤醒“等信箱”者; 若信箱中无信件则置接收信件进程“等信件”状态; 为了协调双方的通信,管道通信机制必须提供以下三方面的协调能力: ?互斥。一个进程正在对pipe进行读/写操作时,另一进程必须等待。 ?同步。当写(输入)进程把一定数量的数据写入pipe后,便去睡眠等待,直到读(输出)进程取走数据将其唤醒;当读进程读一空pipe,也应睡眠等待,直至写进程将数据写入管道,才将其唤醒。 ?对方是否存在。只有确定对方已存在时,才能进行管道通信,否则会造成因对方不存在而无限期等待。 一、单机系统中进程间通信的四种形式 P62 主从式、会

文档评论(0)

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

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

1亿VIP精品文档

相关文档