进程通信01要点课件.ppt

上传人:牧羊曲112 文档编号:1797968 上传时间:2022-12-19 格式:PPT 页数:48 大小:1.94MB
返回 下载 相关 举报
进程通信01要点课件.ppt_第1页
第1页 / 共48页
进程通信01要点课件.ppt_第2页
第2页 / 共48页
进程通信01要点课件.ppt_第3页
第3页 / 共48页
进程通信01要点课件.ppt_第4页
第4页 / 共48页
进程通信01要点课件.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《进程通信01要点课件.ppt》由会员分享,可在线阅读,更多相关《进程通信01要点课件.ppt(48页珍藏版)》请在三一办公上搜索。

1、2.6进程通信,2013级05班,1.进程通信的类型 陈海昊 P4P162.消息传递通信的实现方式 张志成 P17353.直接消息传递系统实例 荣玉华 P3648,进程通信之进程通信的类型,2.6 进程通信 Process Communication,概念:进程间的信息交换。低级通信缺点:(1)效率低;(2)通信对用户不透明。高级通信特点:效率高;用户利用OS提供的通信命令进行数据的传输;通信实现细节对用户透明。,高级通信机制可归结为三大类: 共享存储器系统 (Shared-Memory System) 消息传递系统(Message Passing System) 管道通信(Pipe Comm

2、unication),一、进程通信的类型The type of process communication,2.6 进程通信 Process Communication,1 共享存储器系统(Shared-Memory System),1)基于共享数据结构的通信方式producer-consumer中的缓冲区,低效,不透明。系统只提供了一共享存贮器,适于少量通信。2)基于共享存储区的通信方式系统提供:内存的共享存储区。通信过程:(1)向系统申请一个或多个分区(2)获得分区获后即可读/写.特点:高效,速度快。,单机、多机系统、网络中的主要进程通信方式,进程间的数据交换以消息(message)( “

3、报文”)为单位。通过内存中开设的缓冲区,进行消息的传递。 用户利用一组通信命令实现通信。根据实现方式的不同,可分为直接通信和间接通信。1) 直接通信方式 一般在一台机器的多进程间,直接以接收者进程的内部标识为目的标识发送消息。2)间接通信: 建立一个通信参与者共享的逻辑实体信箱,发送者向信箱发送消息;接收者到信箱取消息。用于联系不十分紧密的进程之间。,2 消息传递系统(Message Passing System),管道通信系统,所谓“管道”,是用于连接一个读进程和一个写进程以实现他们之间通信的一个共享文件,又名pipe文件发送进程发送进程以字符流形式将大量数据送入管道,接收进程可从管道接收数

4、据,二者利用管道进行通信,所以被称为管道通信管道通信是一种单双工的通信系统。,1)互斥:管道可看作是临界资源。对管道的操作是互斥的。2)同步:当写进程把一定数量数据写入pipe后,便去等待,直到读出进程取走数据后,把它唤醒。反之亦然。3)对方是否存在:只有确定对方存在时,才可通信。,管道通信机制应能提供三方面的协调功能:,管道的分类,1)无名管道进程的亲缘关系一般指的是父子关系.管道一般用于两个不同进程之间的通信.当一个进程创建了一个管道,并调用fork创建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样提供了两个进程之间数据流动的一种方式.2)有名管道有名管道也是一种半双工的

5、通信方式,但是它允许无亲缘关系进程间的通信.但是由于其长期存在于系统之中,使用不当容易出错所以普通用户一般不建议使用,客户机-服务器系统,前面所说的共享内存,消息传递等技术,虽然也可以用于实现不同计算机进程的双向通信,但客户机-服务器系统的通信机制,在网络环境的各种应用领域已成为当前主流的通信实现机制。实现方法:1)套接字 2)远程过程调用和远程方法调用,套接字,一个套接字是一个通信表示类型的数据结构,通常套接字包括两类:1)基于文件型一个套接字关联到一个特殊的文件,通信双方通过对这个特殊文件的读写实现通信,原理类似于管道2)基于网络型通信双方运行在不同主机的网络环境下,被分配了一对套接字一个

6、属于发送进程一个属于接收进程,接收方一旦接到请求就会接受并完成连接并实现进程间的通信,通信结束后系统会关闭接收方的套接字来撤销连接,套接字与管道通信的区别,1)套接字体系是全双工而管道通信是半双工2)套接字机制不但可以单机的不同进程通信,而且使得跨网机器间进程可以通信。3)套接字明确地将客户端与服务器区分开来,套接字可以实现多个客户端连到同一服务器。,远程过程调用和远程方法调用,远程过程调用是一个通信协议,它允许运行于一台主机系统上的进程调用另一台主机系统上的进程,如果涉及的软件采用面向对象编程,那么远程过程调用也可以被称为远程方法调用远程过程的调用过程详见课本P70,陈海浩,消息传递实现方式

7、 以及进程线程对比,制作人:张志成,消息传递实现方式,消息传递的通信方式,直接消息传递系统(直接通信方式),信箱通信(间接通信方式),1.直接通信原语2.消息的格式3.进程的同步方式4.通信链路,1.信箱通信结构2.信箱通信原语3.信箱通信类型,直接消息传递系统,1) 直接通信原语(direct Communication way),(1)对称寻址方式,该方式要求发送接受进程必须以显式方式提供对方标识符。,send(receiver , message); 发送一个消息给接受进程receive(sender , message); 接受发送方发来的消息,直接消息传递系统,(2)非对称寻址方式。

8、,接受进程可能需要与多个发送进程通信通信,无法事先指定发送进程,send(P,message);发送一个消息给进程Preceive(id)接受来自任何进程的消息,id变量可设置为进行通信的发送方进程id或名字,直接消息传递系统,2)消息的格式,字符流:发送方发送的数据没有一定的格式,接收方不需要保留各次发送之间的分界报文:是网络环境下采用的消息格式 报头(header):包括数据传输时所需的控制信息。如发送进程名,报文长度、数据类型、发送时间等 正文( text):消息内容。分为定长和变长两种,直接消息传递系统,3)进程的同步方式,等接收者回信后才继续向前执行,称为阻塞发送发送完消息后不等回信

9、继续执行,称为不阻塞发送直到收到发送进程的消息。称为阻塞接收不要求进程等待,当需要信件时,去查找并接收信件,需要时再发送回答信件。称为非阻塞接收,直接消息传递系统,3)进程的同步方式,(1)发送进程阻塞,接受进程阻塞(主要用于进程之间紧密同步,发送进程和接受进程之间无缓冲)(2)发送进程不阻塞,接受进程阻塞(应用最广泛的进程同步方式)(3)发送进程和接受进程均不阻塞(较常见的进程同步方式),直接消息传递系统,4)通信链路(communication link):在发送进程和接收进程之间为信息传送而建立的一条通路,根据建立方式分为:显示建立:由发送进程利用建立命令建立,用完后用删除命令拆除。(网

10、络中) 隐式建立:利用发送命令(原语),系统自动建立。(单机中),直接消息传递系统,根据连接方式分为:点点连接:一条链路只有两个结点。 多点连接:一条链路连接多个结点。根据通信方向分为:单向:发送进程 接收进程。 双向:进程 进程根据链路的容量分为:无容量:链路上没有缓冲区,不能暂存信息。有容量:链路上有缓冲区,能暂存信息。,间接通信方式,信箱通信属于间接通信方式,即进程之间的通信,需要通过某种中间实体来完成。发送者向信箱发送消息;接收者到信箱取消息。用于联系不十分紧密的进程之间。,1)信箱的结构,信箱头,格子1,格子2,格子3,格子4,信箱头:用以存放有关信箱的描述信息,如信箱标识符,信箱的

11、拥有者,信箱口令,信箱的空格数等 信箱体:由若干个可以存放消息的信箱格组成,间接通信方式,2)信箱通信原语,信箱的创建和撤消 进程利用信箱创建原语建立一个新信箱。消息的发送与接收 当进程之间要利用邮箱进行通信时,必须要用共享信箱,并利用系统提供的下述通信原语进行通信。,Send(mailbox , message); 将一个消息发送到指定邮箱Receive(mailbox); 从指定邮箱中接受一个消息,间接通信方式,3)邮箱的类型,私用信箱(private mailbox) :由用户进程自己创建,并作为该进程的一部分。拥有者可从中读,其它进程只能向其中发送。拥有者进程结束,信箱消失。 公用信箱

12、(public mailbox) :由OS创建,允许系统中所有核准用户读、放。 共享信箱(shared mailbox) :由某进程创建,指明共享属性及共享进程名。创建者和共享者有权从信箱中取走消息。,间接通信方式,发送者进程和接收者进程之间的关系,一对一:专用的通信链路,两个进程间建立私用的通信连接,不受其他进程的干扰和影响。多对一:允许提供服务的进程与多个用户进程交互,多个向一个发信息。用于现代操作系统 (客户/服务器)一对多:一个发送者和多个接收者的通信关系。发送进程可利用广播形式,向接收者发送消息。多对多:如公用信箱,允许多个进程都能象信箱中投递消息,也可从信箱中取走属于自己的消息。,

13、进程与线程的关系和区别,1.定义,进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源,进程与线程的关系和区别,2.关系,一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有

14、独立的执行序列。,进程与线程的关系和区别,3.区别,进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。,进程与线程的关系和区别,1) 简而言之,一个程序至少有一个进程,一个进程至少有一个线程.2) 线程的划分尺度小于进程,使得多线程

15、程序的并发性高。3) 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。4) 线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。5) 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。,谢谢观看,直接消息传递系统实例,制作人:荣玉华,直接消息传递系统实例,消息缓冲队列通信机制,是在物理上实现“

16、消息传递系统”的一种通信机制。首先由Hansan提出,并在RC4000系统上实现。 在一个消息定长的简单直接通信消息系统中,进程间通过两个基本操作进行通信。 在这种通信机制中,发送进程利用send原语将消息直接发送给接收进程;接收进程则利用receive原语接收信息。 Send(A,a):发送者用以发送消息。A为接收者标识符,a为消息的发送区始址。 Receive(b):接收者用以接收当前已到达的消息。b为消息的接收区始址。若当前无消息到达,则接收者进入等待状态直到到达一个消息。,二、消息缓冲队列通信机制,2.6 进程通信 Process Communication,1)消息缓冲区: Type

17、def struct message_buffer 定义结构体 int sender ; 发送者进程标识符 int size ; 消息长度 char *text;消息正文 struct message_buffer *next ; 指向下一个消息缓冲区的指针 ,1.消息缓冲队列通信机制中的数据结构,为保证消息缓冲区的互斥,协调发送进程和接收进程的同步,在接收进程的PCB中增加的有关数据项。Typdef struct processcontrol_block . 定义结构体 struct message_buffer *mq ; 消息队列队首指针 semaphore mutex ; 消息队列互斥

18、信号量,初值为1 semaphore sm ; 消息队列私有信号量,记录消息个数,初值为0; PCB,2)PCB中有关通信的数据项, 互斥使用缓冲队列,即发送进程把消息写入缓冲区、把缓冲区挂入消息队列时,应禁止其他进程对该缓冲队列的访问,同理,当接收进程正从消息队列中取消息时,应禁止其他进程对该队列的访问。应设mutex-互斥信号量 消息缓冲队列是按接收进程排列,每个接收进程拥有自己的消息队列。因此同一时间存在多个消息队列;且这些队列长度不固定。 当缓冲队列无消息时,接收进程不能接收到任何消息。Sm为接收进程的私用信号量(初值为0),2. 过程说明,A的PCB,.Send(B, a).Send

19、er:ASIZE:消息长度TEXT:消息正文,B的PCB. mq Mutex sm.,.Receive(b).Sender:ASIZE:消息长度TEXT:消息正文.,发送区a:,接收区b,发送进程 A,消息,消息,.,Sender:ASIZE:消息长度TEXT:消息正文,接收进程 B,Send(receiver,m) Begin 向系统申请一个消息缓冲区; 把m送入新申请的消息缓冲区, wait(mutex); 把消息缓冲区挂入接收进程的消息队列。 signal(mutex); signal(Sm);End;,Receive(n) Begin wait(Sm); Wait(mutex); 摘下

20、消息队列中的消息n, Signal(mutex); 将消息n从缓冲区复制到接收区; 释放缓冲区;End;,发送进程是否可以发送消息,则取决于是否申请到缓冲区。具体见课本P74,3 发送原语,procedure send(receiver,a) begin getbuf(a.size,i) i.sender:=a.sender i.size:=a.size i.text:=a.text i.next:=0 getid(PCB.receiver.j) wait(j.mutex) insert(j.mq.I) signal(j.mutex) signal(j.sm) end,a为发送进程在自己的内存

21、空间中设置的一发送区。把消息正文、发送进程标识符、消息长度等信息填入a中。根据a.size申请一缓冲区i,把a中信息复制到i中,获得接收进程的内部标识符j,将i挂在j.mq上。因为消息队列为临界资源,对其操作要求互斥。,4 接收原语,procedure receive(b) begin j:=internal name wait(j.sm) wait(j.mutex) remove(j.mq.i) signal(j.mutex) b.sender:=i.sender b.size:=i.size b.text:=i.text end,接收进程调用接收原语,在自己的消息缓冲队列mq中,摘下第一个

22、消息缓冲区(如i),将其复制到以b为首址的指定消息接收区内。,重要问题,1.低级通信和高级通信 低级通信:效率低;通信不透明,只为进程通信提供了共享存储器。 高级通信:使用方便;高效地传输大量数据。2.消息在传递中的两种方式 直接通信 间接通信直接通信:发送进程利用OS所提供的发送命令(原语),直 接把消息发送给目标进程。间接通信:发送和接收进程,都通过共享中间体(称为邮箱)的方式经行消息的发送和接受,完成进程间的通信。,重要问题,3.管道通信含义所谓“管道”,是用于连接一个读进程和一个写进程以实现他们之间通信的一个共享文件,又名pipe文件发送进程发送进程以字符流形式将大量数据送入管道,接收进程可从管道接收数据,二者利用管道进行通信,所以被称为管道通信,谢谢大家!,作者:荣玉华,班级:五班,THANKS,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号