进程管理6进程通信.ppt_第1页
进程管理6进程通信.ppt_第2页
进程管理6进程通信.ppt_第3页
进程管理6进程通信.ppt_第4页
进程管理6进程通信.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,3.6 进程通信(communication),进程通信:指进程间的信息交换。 按通信内容可以划分为2种 低级通信:进程之间控制信息的交换称为低级通信。 一般只传送一个和几个字节的信息,达到控 制进程执行速度的作用。(进程的同步和互斥) 信号量机制作为同步工具是卓有成效的,但作为通讯工具则不够理想,(效率低。通讯对用户不透明。) 高级通信:用户可以直接利用操作系统所提供的一组通信命令,高效地传送大量数据的一种通信方式。,2,进程的同步与互斥是一种通讯方式,一进程可通过修改变量或信号量告知另一进程,它是否可以继续执行下去,利用生产者消费者算法,生产者进程可以传送一批数据给消费进程,或者说生产者通过缓冲区与消费者进行通讯,但P、V操作只能传递信号,信号本身不包含任何数据,而进程不当还容易导致进程死锁,因此,称这些同步机构为低级通讯机构.,3,进程通信的类型 一、单机系统中进程间通信的四种形式 P62 主从式、会话式、消息或邮箱机制、共享存储区方式 二、高级通讯机制类型 1 共享存储器系统(Shared-Memory System) 2 消息传递系统(Message passing System) 3 管道(pipe)通信系统,4,1 共享存储器系统,共享存储器系统:相互通讯的进程通过共享数据结构和存储区进行通讯,因而可进一步分为: 基于共享数据结构的通讯方式;(低效,只适于传递少量数据) 基于共享存储区的通讯方式。为了传送大量数据,在存储区中划出一块共享存储区,诸进程可通过对共享存储区进行读或写数据实现通讯。,向系统申请共享存储区中的一个分区 指定该分区的关键字 如果已经给其他进程分配了这样的存储区, 将使用分区的描述符返回给申请者 4 申请者将申请到的共享分区挂到本进程上,返回,5,2 消息传递系统,在消息传递系统中,进程间的数据交换是以消息(message,在计算机网络中又称报文)为单位。程序员直接利用系统提供的一组通讯命令(原语)来实现通讯。 因其实现方法的不同,又可分为,直接通信方式(消息缓冲机制) 间接通信方式(信箱通信方式),6,直接通信方式: 发送进程直接将消息发送给接收进程,并将它挂在接收进程的消息缓冲队列上。接收进程从消息缓冲队列中取得消息。故称为消息缓冲机制。 间接通信方式: 发送进程将消息发送到某个中间实体(一般称为信箱)中,接收进程从中取得消息,所以称为信箱通讯方式,相应地系统称为电子邮件系统。,7,消息缓冲机制(直接通信),发送进程,在自己的内存空间设置一个,把要发送的消息填入发送区,发送区,接收区,接收进程,在自己的内存 空间设置一个,公用缓冲区,两通信进程必须满足下列条件 在发送进程把消息写入缓冲区和把缓冲区挂入消息队列时, 应禁止其他进程对缓冲区消息队列的访问。同理,接收进程取消息时也禁止其他进程访问缓冲区消息队列 2 当缓冲区中没有信息存在时,接收进程不能接收到任何消息,8,消息的一般形式 消息缓冲通讯技术由Hansen 首先提出的,基本思想是:根据“生产者消费者关系”原理,利用公用消息缓冲区实现进程间的信息交换。 发送进程先申请一个消息缓冲区,写入消息后把该消息缓冲区送入接收进程的消息队列中,通知接收进程。接收进程从消息队列中摘下一消息缓冲区,取出所需要的信息。,9,消息的一般形式: 发送消息的进程名 接收消息的进程名 消息长度 消息正文,10,消息缓冲通讯机构包含下列内容: 消息缓冲区是一个数据结构 用Pascal 描述为: type msg=recorod sender: 消息发送者名 size: 消息长度 Text: 消息正文 Next: 下一个消息的链指针,发送进程和接收进程 发送原语Send()和接收原语receive() 设公用信号量mutex,并置初值为1 设SM为接收进程的私用信号量,置初值为0,Send(m) begin 向系统申请一个消息缓冲区 P(mutex) 使用公用缓冲区 将发送区消息m送入新申请的消息缓冲区 把消息缓冲区挂入接收进程的消息队列 V(mutex) 释放缓冲区 V(SM) 向接收进程发送消息 end,Receive(m ) begin P(SM) 等待接的消息的个数 P(mutex) 使用公用缓冲区 摘下消息队列中的消息m 将消息队列m从缓冲区复制到接收区 释放缓冲区 V(mutex) 释放公用缓冲区 end,12,邮箱通信(间接通信),1 信(邮)箱 信箱是一种数据结构,逻辑上它分成两部分:信箱头和由若干格子组成的信箱体。 信箱中每个格子存放一封信,信箱中格子的数目和每格的大小在创建信箱时确定。 进程间的通信要满足如下条件: a.发送进程发送消息时,邮箱中至少要有一个空格存放该消息。 b.接收进程接收消息时,邮箱中至少要有一个消息存在。,13,信箱可由OS创建,也可由用户进程创建,创建者是信箱的拥有者,据此可把信箱分为:私用信箱,公用信箱,共享信箱。 在利用信箱通信时,在发送进程和接收进程之间,存在着四种关系: 一对一关系:即可以为发送进程和接收进程建立一条专用的通信链路; 多对一关系:允许提供服务的进程与多个用户进程进行交互,也称客户/服务器交互; 一对多关系:允许一个发送进程与多个接收进程交互,使发送进程用广播的形式,发送消息; 多对多关系:允许建立一个公用信箱,让多个进程都能向信箱投递消息,也可取走属于自己的消息。,14,发送进程 A,接收进程 B,Deposite(m),Remove(m),邮箱通信结构,邮箱头:邮箱名称、邮箱大小、拥有该邮箱的进程名,邮箱体:存放消息,使用邮箱的时候应该满足: 发送进程发送消息时,邮箱中至少要有一个空格能存放该消息 接收进程接收消息时,邮箱中至少有一个消息存在,15,该发送进程调用过程deposit(m)将消息发送到邮箱,接收进程调用过程remove(m),将消息m从邮箱中取出。 Fromnum发送进程的私用信号量。记录信箱空格,初值为n Mesnum接收进程的私用信号量。记录信箱有消息的个数 初值为0,16,Fromnum记录信箱空格,初值为n Mesnum记录信箱有消息的个数 初值为0 Deposit(m); Begin local x P(fromnum) 空格数减1 选择空格x 将消息m放入空格x中 置格x的标志为满 V(mesnum) 向接收进程发送消息 end 消息个数1,Remove (m) being local x P(mesnum) 消息个数加1 选择满格x 把满格x中的消息取出放m中 置格x标志为空 V(mesnum) 空格个数加1 end,返回,17,3.6.5 进程通信的例管道 管道(pipe)通讯由UNIX首创的一种借助文件和文件系统形成的一种通信方式,。由于其有效性,一些系统继UNIX之后相继引入了管道技术,如pc-dos,管道通信将成为进程通讯的一种重要方式。 消息缓冲通信机构是以内存缓冲区为基础。 管道是以文件系统为基础。 有名管道 无名管道,18,管道 是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享方式,又称pipe文件。 向管道(共享文件)提供输入的发送进程(即写进程),以字符流形式将大量的数据送入管道;而接收管道输出的接收进程(即读进程),可从管道接收数据,由于发送和接收都是利用管道进行通信的,故称为管道通信。,19,为了协调双方的通信,管道通信机制必须提供以下三方面的协调能力: 互斥。一个进程正在对pipe进行读/写操作时,另一进程必须等待。 同步。当写(输入)进程把一定数量的数据写入pipe后,便去睡眠等待,直到读(输出)进程取走数据将其唤醒;当读进程读一空pipe,也应睡眠等待,直至写进程将数据写入管道,才将其唤醒。 对方是否存在。只有确定对方已存在时,才能进行管道通信,否则会造成因对方不存在而无限期等待。,20,管道通信的思想 (1)发送进程可以源源不断的从pipe一端写入数据流,在规定的pipe文件的最大长度(如4096字节)范围内,每次写入的信息长度是可变的 (2)接收进程在需要时可以从pipe的另一端读出数据,读出单位长度也是可变的,21,1 Pipe的建立和使用方式 pipe 文件在使用之前,必须先由使用者建立并打开, 建立pipe的主要工作是在系统打开文件表中建立该pipe的两个表目, 一个表目用于控制该pipe的写操作(写入端) 另一表目用于控制该pipe的读操作(读出端)此时,pipe本身还是个空白文件。,22,系统文件 write(Fd1,buf,size) 功能:把buf中的长度为size字符的消息送入管道入口fd1 fd1pipe入口 buf:存放消息的空间 size :要写入的字符长度 系统文件 read(fd0,buf,size) fd0Pipe的出口 功能:从pipe出口fd0读出size字符的消息置入 buf中。,23,pipe只允许建立者及其子进程使用。一进程及其所有子孙构成一个进程族,同族中的多个进程可共享一个pipe,为了避免混乱,通常一个pipe为两个进程专用,且一个进程只用其写入端,另一进程只用其读出端。,pipe(fd),写入端,读出端,fd1,write(fd1,buf,size),fd0,read(fd0,buf,size),管道按先进现出方式FIFO传送消息,且只能单向传送消息,24,1 Pipe文件的读写操作的同步与互斥 如同消息缓冲一样,在对pipe文件进行读写操作过程中要对发送进程和接送进程实施正确的同步与互斥以确保通信的正确

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论