版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2.6进程通信2013级05班1.进程通信的类型 陈海昊 P4P162.消息传递通信的实现方式 张志成 P17353.直接消息传递系统实例 荣玉华 P3648 进程通信之进程通信的类型2.6 进程通信 Process Communication概念:进程间的信息交换。低级通信缺点:(1)效率低;(2)通信对用户不透明。高级通信特点:效率高;用户利用OS提供的通信命令进行数据的传输;通信实现细节对用户透明。高级通信机制可归结为三大类: 共享存储器系统 (Shared-Memory System) 消息传递系统(Message Passing System) 管道通信(Pipe Communica
2、tion)一、进程通信的类型The type of process communication2.6 进程通信 Process Communication1 共享存储器系统(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)非对称寻址方式。接受进程可能需要与多个发送进程通信通信,无法事先指定发送进程send(P,me
8、ssage);发送一个消息给进程Preceive(id)接受来自任何进程的消息,id变量可设置为进行通信的发送方进程id或名字直接消息传递系统2)消息的格式字符流:发送方发送的数据没有一定的格式,接收方不需要保留各次发送之间的分界报文:是网络环境下采用的消息格式 报头(header):包括数据传输时所需的控制信息。如发送进程名,报文长度、数据类型、发送时间等 正文( text):消息内容。分为定长和变长两种直接消息传递系统3)进程的同步方式等接收者回信后才继续向前执行,称为阻塞发送发送完消息后不等回信继续执行,称为不阻塞发送直到收到发送进程的消息。称为阻塞接收不要求进程等待,当需要信件时,去查
9、找并接收信件,需要时再发送回答信件。称为非阻塞接收直接消息传递系统3)进程的同步方式(1)发送进程阻塞,接受进程阻塞(主要用于进程之间紧密同步,发送进程和接受进程之间无缓冲)(2)发送进程不阻塞,接受进程阻塞(应用最广泛的进程同步方式)(3)发送进程和接受进程均不阻塞(较常见的进程同步方式)直接消息传递系统4)通信链路(communication link):在发送进程和接收进程之间为信息传送而建立的一条通路根据建立方式分为:显示建立:由发送进程利用建立命令建立,用完后用删除命令拆除。(网络中) 隐式建立:利用发送命令(原语),系统自动建立。(单机中)直接消息传递系统根据连接方式分为:点点连接
10、:一条链路只有两个结点。 多点连接:一条链路连接多个结点。根据通信方向分为:单向:发送进程 接收进程。 双向:进程 进程根据链路的容量分为:无容量:链路上没有缓冲区,不能暂存信息。有容量:链路上有缓冲区,能暂存信息。间接通信方式信箱通信属于间接通信方式,即进程之间的通信,需要通过某种中间实体来完成。发送者向信箱发送消息;接收者到信箱取消息。用于联系不十分紧密的进程之间。1)信箱的结构 信箱头格子1格子2格子3格子4信箱头:用以存放有关信箱的描述信息,如信箱标识符,信箱的拥有者,信箱口令,信箱的空格数等 信箱体:由若干个可以存放消息的信箱格组成间接通信方式2)信箱通信原语信箱的创建和撤消 进程利
11、用信箱创建原语建立一个新信箱。消息的发送与接收 当进程之间要利用邮箱进行通信时,必须要用共享信箱,并利用系统提供的下述通信原语进行通信。Send(mailbox , message); 将一个消息发送到指定邮箱Receive(mailbox); 从指定邮箱中接受一个消息间接通信方式3)邮箱的类型私用信箱(private mailbox) :由用户进程自己创建,并作为该进程的一部分。拥有者可从中读,其它进程只能向其中发送。拥有者进程结束,信箱消失。 公用信箱(public mailbox) :由OS创建,允许系统中所有核准用户读、放。 共享信箱(shared mailbox) :由某进程创建,指
12、明共享属性及共享进程名。创建者和共享者有权从信箱中取走消息。间接通信方式发送者进程和接收者进程之间的关系一对一:专用的通信链路,两个进程间建立私用的通信连接,不受其他进程的干扰和影响。多对一:允许提供服务的进程与多个用户进程交互,多个向一个发信息。用于现代操作系统 (客户/服务器)一对多:一个发送者和多个接收者的通信关系。发送进程可利用广播形式,向接收者发送消息。多对多:如公用信箱,允许多个进程都能象信箱中投递消息,也可从信箱中取走属于自己的消息。进程与线程的关系和区别1.定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位线程是进程的一
13、个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源进程与线程的关系和区别2.关系 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。进程与线程的关系和区别3.区别 进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下
14、不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。进程与线程的关系和区别1) 简而言之,一个程序至少有一个进程,一个进程至少有一个线程.2) 线程的划分尺度小于进程,使得多线程程序的并发性高。3) 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。4) 线程在执行过程中与进程还是有区别的。每个独
15、立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。5) 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。谢谢观看直接消息传递系统实例制作人:荣玉华直接消息传递系统实例 消息缓冲队列通信机制,是在物理上实现“消息传递系统”的一种通信机制。首先由Hansan提出,并在RC4000系统上实现。 在一个消息定长的简单直接通信消息系统中,进程间通过两个基本操作进行通信。 在这种通信机制
16、中,发送进程利用send原语将消息直接发送给接收进程;接收进程则利用receive原语接收信息。 Send(A,a):发送者用以发送消息。A为接收者标识符,a为消息的发送区始址。 Receive(b):接收者用以接收当前已到达的消息。b为消息的接收区始址。若当前无消息到达,则接收者进入等待状态直到到达一个消息。二、消息缓冲队列通信机制2.6 进程通信 Process Communication1)消息缓冲区: Typedef struct message_buffer 定义结构体 int sender ; 发送者进程标识符 int size ; 消息长度 char *text;消息正文 str
17、uct message_buffer *next ; 指向下一个消息缓冲区的指针 1.消息缓冲队列通信机制中的数据结构 为保证消息缓冲区的互斥,协调发送进程和接收进程的同步,在接收进程的PCB中增加的有关数据项。Typdef struct processcontrol_block . 定义结构体 struct message_buffer *mq ; 消息队列队首指针 semaphore mutex ; 消息队列互斥信号量,初值为1 semaphore sm ; 消息队列私有信号量,记录消息个数,初值为0; PCB2)PCB中有关通信的数据项 互斥使用缓冲队列,即发送进程把消息写入缓冲区、把缓
18、冲区挂入消息队列时,应禁止其他进程对该缓冲队列的访问,同理,当接收进程正从消息队列中取消息时,应禁止其他进程对该队列的访问。应设mutex-互斥信号量 消息缓冲队列是按接收进程排列,每个接收进程拥有自己的消息队列。因此同一时间存在多个消息队列;且这些队列长度不固定。 当缓冲队列无消息时,接收进程不能接收到任何消息。Sm为接收进程的私用信号量(初值为0)2. 过程说明A的PCB.Send(B, a).Sender:ASIZE:消息长度TEXT:消息正文B的PCB. mq Mutex sm.Receive(b).Sender:ASIZE:消息长度TEXT:消息正文.发送区a:接收区b发送进程 A消
19、息消息.Sender:ASIZE:消息长度TEXT:消息正文接收进程 BSend(receiver,m) Begin 向系统申请一个消息缓冲区; 把m送入新申请的消息缓冲区, wait(mutex); 把消息缓冲区挂入接收进程的消息队列。 signal(mutex); signal(Sm);End;Receive(n) Begin wait(Sm); Wait(mutex); 摘下消息队列中的消息n, Signal(mutex); 将消息n从缓冲区复制到接收区; 释放缓冲区;End; 发送进程是否可以发送消息,则取决于是否申请到缓冲区。具体见课本P743 发送原语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) enda为发送进程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 年产xx少数民族乐器项目建议书
- 年产xxx玻璃马赛克项目可行性研究报告(立项备案)
- 航空配件项目建设规划投资计划书
- 年产xx多用途乘用车项目建议书
- 区域地理 世界地理 第三讲 世界的陆地与海洋
- 2024年航空制造和材料专用设备项目资金申请报告代可行性研究报告
- 第六章自然灾害复习课件高中地理人教版(2019)必修一
- 小班体育游戏教案:勇敢的鸡宝宝
- 脑血管手术血压管理
- 3.2.1三圈环流(气压带和风带)课件高二上学期人教版(2019)地理选择性必修一
- 12项细胞因子-感染科相关
- 艺术教育专业大学生职业生涯规划书
- 30道炼化工程师岗位常见面试问题含HR问题考察点及参考回答
- 风力发电职业生涯规划与管理
- 2023年英语四级听力真题(第一套)题目-原文与答案
- 第一节-接入互联网-教案
- 第二单元 走进互联网 第四节 网络通讯与交流 课件 2023-2024学年 甘肃教育出版社 初中信息技术七年级上册
- 国家开放大学《可编程控制器应用实训》形考任务1(实训一)参考答案
- 85、团队建设与团队管理
- 第一章 风险原理
- 进化生物学期末总复习
评论
0/150
提交评论