1、2.6 进程通信(communication)进程通信:指进程间的信息交换。按通信内容可以划分为2种低级通信:进程之间控制信息的交换称为低级通信。一般只传送一个和几个字节的信息,达到控 制进程执行速度的作用。(进程的同步和互斥)信号量机制作为同步工具是卓有成效的,但作为通讯工具则不够理想,(效率低。通讯对用户不透明。)高级通信:用户可以直接利用操作系统所提供的一组通信命令,高效地传送大量数据的一种通信方式。1ppt课件 进程的同步与互斥是一种通讯方式,一进程的同步与互斥是一种通讯方式,一进程可通过修改变量或信号量告知另一进程,进程可通过修改变量或信号量告知另一进程,它是否可以继续执行下去,利用
2、生产者它是否可以继续执行下去,利用生产者消费者算法,生产者进程可以传送一批数据消费者算法,生产者进程可以传送一批数据给消费进程,或者说生产者通过缓冲区与消给消费进程,或者说生产者通过缓冲区与消费者进行通讯,但费者进行通讯,但P P、V V操作只能操作只能传递信号传递信号,信号本身不包含任何数据,而进程不当还容信号本身不包含任何数据,而进程不当还容易导致进程死锁,因此,称这些同步机构为易导致进程死锁,因此,称这些同步机构为低级通讯机构低级通讯机构.2ppt课件进程通信的类型进程通信的类型高级通讯机制类型1 共享存储器系统(Shared-Memory System)2 消息传递系统(Message
3、 passing System)3 管道(pipe)通信系统4.4.客户客户-服务器系统(服务器系统(Client Server SystemClient Server System)3ppt课件1 共享存储器系统 共享存储器系统共享存储器系统:相互通讯的进程通过:相互通讯的进程通过共享数据共享数据结构结构和和存储区存储区进行通讯,因而可进一步分为:进行通讯,因而可进一步分为:基于共享数据结构的通讯方式基于共享数据结构的通讯方式;(低效,只适;(低效,只适于传递少量数据)于传递少量数据)基于共享存储区的通讯方式基于共享存储区的通讯方式。为了传送大量数为了传送大量数据,在存储区中划出一块共享存储
4、区,诸进程可据,在存储区中划出一块共享存储区,诸进程可通过对共享存储区进行读或写数据实现通讯。通过对共享存储区进行读或写数据实现通讯。1向系统申请共享存储区中的一个分区2指定该分区的关键字3如果已经给其他进程分配了这样的存储区,将使用分区的描述符返回给申请者4 申请者将申请到的共享分区挂到本进程上返回4ppt课件2 2 进程通信的例进程通信的例管道管道 管道(管道(pipepipe)通讯由)通讯由UNIXUNIX首创的首创的一种借助文件和文件系统形成的一种通信方式,。由于其有效性,一些系统继由于其有效性,一些系统继UNIXUNIX之后相继引之后相继引入了管道技术,如入了管道技术,如pc-dos
5、pc-dos,管道通信将成为,管道通信将成为进程通讯的一种重要方式。进程通讯的一种重要方式。消息缓冲通信机构是以内存缓冲区为基础。消息缓冲通信机构是以内存缓冲区为基础。管道是以文件系统为基础。管道是以文件系统为基础。有名管道有名管道无名管道无名管道5ppt课件 管道 是指用于连接一个读进程和一个写进程,以实现它们之间通信的共享方式,又称pipe文件。向管道(共享文件)提供输入的发送进程(即写进程),以字符流形式将大量的数据送入管道;而接收管道输出的接收进程(即读进程),可从管道接收数据,由于发送和接收都是利用管道进行通信的,故称为管道通信。6ppt课件3 消息传递系统在消息传递系统中,进程间的
6、数据交换是以消息(message,在计算机网络中又称报文)为单位。程序员直接利用系统提供的一组通讯命令(原语)来实现通讯。因其实现方法的不同,又可分为 直接通信方式(消息缓冲机制)间接通信方式(信箱通信方式)7ppt课件 4.4.客户客户-服务器系统(服务器系统(Client Server SystemClient Server System)用于网络环境的各种应用领域:实现方法有三类:套接字远程过程调用远程方法调用 8ppt课件(1)套接字(Socket)起源于BSD UNIX,UNIX的网络通信接口。最初是用于同一台主机的多个进程的通信。套接字是通信标识类型的数据结构,包含通信目的地址,端
7、口号,传输层协议,进程的网络地址及系统调用。9ppt课件套接字的两种类型基于文件型同一台及其环境下,原理类似于管道基于网络型采用非对称方式通信应用于不同主机的网络环境一对套接字:发送者、接受者10ppt课件(2)远程过程调用和远程方法调用RPC 是远程过程调用(Remote Procedure Call)的缩写形式。RPC 是指计算机 A 上的进程,调用另外一台计算机 B 上的进程,其中 A 上的调用进程被挂起,而 B 上的被调用进程开始执行,当值返回给 A 时,A 进程继续执行。调用方可以通过使用参数将信息传送给被调用方,而后可以通过传回的结果得到信息。而这一过程,对于开发人员来说是透明的。
8、11ppt课件远程过程调用包含如下步骤:1.客户过程以正常的方式调用客户存根;2.客户存根生成一个消息,然后调用本地操作系统;3.客户端操作系统将消息发送给远程操作系统;4.远程操作系统将消息交给服务器存根;5.服务器存根调将参数提取出来,而后调用服务器;6.服务器执行要求的操作,操作完成后将结果返回给服务器存根;7.服务器存根将结果打包成一个消息,而后调用本地操作系统;8.服务器操作系统将含有结果的消息发送给客户端操作系统;9.客户端操作系统将消息交给客户存根;10.客户存根将结果从消息中提取出来,返回给调用它的客户存根。12ppt课件2.6.2 消息传递通信的实现方式直接通信方式:发送进程
9、直接将消息发送给接收进程,并将它挂在接收进程的消息缓冲队列上。接收进程从消息缓冲队列中取得消息。故称为消息缓冲机制。间接通信方式:发送进程将消息发送到某个中间实体(一般称为信箱)中,接收进程从中取得消息,所以称为信箱通讯方式,相应地系统称为电子邮件系统。13ppt课件消息缓冲机制(直接通信)发送进程在自己的内存空间设置一个把要发送的消息填入发送区发送区接收区接收进程在自己的内存空间设置一个公用缓冲区两通信进程必须满足下列条件两通信进程必须满足下列条件1在发送进程把消息写入缓冲区和把缓冲区挂入消息队列时,在发送进程把消息写入缓冲区和把缓冲区挂入消息队列时,应禁止其他进程对缓冲区消息队列的访问。同
10、理,接收进程应禁止其他进程对缓冲区消息队列的访问。同理,接收进程取消息时也禁止其他进程访问缓冲区消息队列取消息时也禁止其他进程访问缓冲区消息队列2 当缓冲区中没有信息存在时,接收进程不能接收到任何消息当缓冲区中没有信息存在时,接收进程不能接收到任何消息14ppt课件 消息的一般形式消息的一般形式 消息缓冲通讯技术由消息缓冲通讯技术由Hansen Hansen 首先提出的,首先提出的,基本思想是:根据基本思想是:根据“生产者生产者消费者关系消费者关系”原理,利用公用消息缓冲区实现进程间的信息原理,利用公用消息缓冲区实现进程间的信息交换。交换。发送进程先申请一个消息缓冲区,写入消发送进程先申请一个
11、消息缓冲区,写入消息后把该消息缓冲区送入接收进程的消息队列息后把该消息缓冲区送入接收进程的消息队列中,通知接收进程。接收进程从消息队列中摘中,通知接收进程。接收进程从消息队列中摘下一消息缓冲区,取出所需要的信息。下一消息缓冲区,取出所需要的信息。15ppt课件消息的一般形式消息的一般形式:发送消息的进程名发送消息的进程名 接收消息的进程名接收消息的进程名 消息长度消息长度 消息正文消息正文 16ppt课件 消息缓冲通讯机构包含下列内容:消息缓冲通讯机构包含下列内容:消息缓冲区是一个数据结构消息缓冲区是一个数据结构 用用Pascal Pascal 描述为:描述为:type msg=recorod
12、type msg=recorod sender sender:消息发送者名消息发送者名 sizesize:消息长度消息长度 TextText:消息正文消息正文 NextNext:下一个消息的链指针下一个消息的链指针17ppt课件 发送进程和接收进程发送进程和接收进程发送原语发送原语SendSend()和接收原语()和接收原语receivereceive()()设公用信号量设公用信号量mutexmutex,并置初值为,并置初值为1 1设设SMSM为接收进程的私用信号量,置初值为为接收进程的私用信号量,置初值为0 0Send(m)begin 向系统申请一个消息缓冲区 P(mutex)使用公用缓冲区
13、 将发送区消息m送入新申请的消息缓冲区 把消息缓冲区挂入接收进程的消息队列 V(mutex)释放缓冲区 V(SM)向接收进程发送消息 endReceive(m)begin P(SM)等待接的消息的个数 P(mutex)使用公用缓冲区 摘下消息队列中的消息m 将消息队列m从缓冲区复制到接收区 释放缓冲区 V(mutex)释放公用缓冲区 end18ppt课件信箱通信信箱通信(间接通信)(间接通信)1 1 信(邮)箱信(邮)箱 信箱是一种数据结构,逻辑上它分成两部分:信箱是一种数据结构,逻辑上它分成两部分:信箱信箱头头和由若干格子组成的和由若干格子组成的信箱体信箱体。信箱中每个格子存放一封信,信箱中
14、格子的数目和每信箱中每个格子存放一封信,信箱中格子的数目和每格的大小在创建信箱时确定。格的大小在创建信箱时确定。进程间的通信要满足如下条件:进程间的通信要满足如下条件:a.a.发送进程发送消息时,邮箱中至少要有一个空格存放发送进程发送消息时,邮箱中至少要有一个空格存放该消息。该消息。b.b.接收进程接收消息时,邮箱中至少要有一个消息存接收进程接收消息时,邮箱中至少要有一个消息存在。在。19ppt课件发送进程A 邮箱头邮箱头 邮箱体邮箱体接收进程接收进程B BDeposite(m)Remove(m)邮箱通信结构邮箱通信结构邮箱头:邮箱名称、邮箱大小、拥有该邮箱的进程名邮箱体:存放消息使用邮箱的时
15、候应该满足:1发送进程发送消息时,邮箱中至少要有一个空格能存放该消息2接收进程接收消息时,邮箱中至少有一个消息存在信箱结构信箱结构20ppt课件 信箱可由OS创建,也可由用户进程创建,创建者是信箱的拥有者,据此可把信箱分为:私用信箱,公用信箱,共享信箱。在利用信箱通信时,在发送进程和接收进程之间,存在着四种关系:一对一关系:即可以为发送进程和接收进程建立一条专用的通信链路;多对一关系:允许提供服务的进程与多个用户进程进行交互,也称客户/服务器交互;一对多关系:允许一个发送进程与多个接收进程交互,使发送进程用广播的形式,发送消息;多对多关系:允许建立一个公用信箱,让多个进程都能向信箱投递消息,也
16、可取走属于自己的消息。21ppt课件 该发送进程调用过程该发送进程调用过程deposit(m)deposit(m)将消息发送将消息发送到邮箱,接收进程调用过程到邮箱,接收进程调用过程remove(m),remove(m),将消息将消息m m从邮箱中取出。从邮箱中取出。FromnumFromnum发送进程的私用信号量。记录信箱发送进程的私用信号量。记录信箱空格,初值为空格,初值为n n Mesnum Mesnum接收进程的私用信号量。记录信箱接收进程的私用信号量。记录信箱有消息的个数有消息的个数 初值为初值为0 022ppt课件FromnumFromnum记录信箱空格,初值为记录信箱空格,初值为
17、n nMesnumMesnum记录信箱有消息的个数记录信箱有消息的个数 初初值为值为0 0Deposit(m);Begin local x P(fromnum)空格数减空格数减1 选择空格选择空格x 将消息将消息m放入空格放入空格x中中 置格置格x的标志为满的标志为满V(mesnum)向接收进程发送消息向接收进程发送消息end 消息个数消息个数1Remove(m)being local x P(mesnum)消息个数减消息个数减1 选择满格选择满格x 把满格把满格x中的消息取出放中的消息取出放m中中 置格置格x标志为空标志为空 V(fromnum)空格个数加空格个数加1 end返回23ppt课件
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。