




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、进程通信进程通信进程通信-概念和类别概念和类别概念:进程之间的信息交换称为概念:进程之间的信息交换称为进程通信进程通信类别:进程通信按通信内容可分为类别:进程通信按通信内容可分为: 控制信息的传送控制信息的传送 大批量数据传送大批量数据传送 把进程间控制信息的交换称为把进程间控制信息的交换称为低级通信低级通信(信号量机制)(信号量机制);把进程间大批量数据的交换称为把进程间大批量数据的交换称为高级通信高级通信。进程通信进程通信-高级通讯工具高级通讯工具 高级进程通信机制可分为四大类: 1. 共享存储器系统(Shared-Memory System) 2. 消息传递系统(Message pass
2、ing system) 3. 管道(Pipe)通信:又名共享文件通信 4.客户机-服务器系统(Client-Server system)进程通信进程通信-共享存储器系统基于共享数据结构的通信方式:进程之间公用某些数据结构,如生产者-消费者中的缓冲区。程序员需要对进程间的同步做处理,效率比较低,只适用于传输少量数据。基于共享存储区的通信方式。在存储器中划出了一块共享存储区,各进程可通过对共享存储区中的数据的读和写来实现通信。适用于传输大量数据。进程通信进程通信-消息传递系统消息传递机制 : 进程间的数据交换以消息为单位,程序员利用系统的通信原语(要进行消息传递时执行send;当接收者要接收消息时
3、执行receive)实现通信。这种通信方式属于高级通信 。优点: 操作系统隐藏了通信的实现细节,简化了通信程序编制的复杂性。分类: 直接通信(消息缓冲通信):发送进程直接把消息发送给接收者,并将它挂在接收进程的消息缓冲队列上。接收进程从消息缓冲队列中取得消息。 间接通信(信箱通信):发送进程将消息发送到某种中间实体中(信箱),接收进程从中取得消息。 在网络中称为电子邮件系统。进程通信进程通信-管道(Pipe)通信管道(pipe文件)通信(也称共享文件通信): 连接读写进程的一个特殊文件,允许进程按先进先出方式传送数据,也能使进程同步执行操作。 实质:是一个共享文件,基本上可借助于文件系统的机制
4、实现,包括(管道)文件的创建、打开、关闭和读写。管道通信: 发送进程以字符流形式把大量数据送入管道,接收进程从管道中接收数据,所以叫管道通信。写进程共享文件读进程进程通信进程通信-客户机-服务器系统用途:在网络环境的各种应用领域。实现方法:套接字、远程过程调用和远程方法调用。进程通信进程通信-消息传递通信的实现方式消息传递通信的实现方式 直接通信方式(消息缓冲通信)直接通信方式(消息缓冲通信) 发送进程发消息时要指定接收进程的名字,反过来,发送进程发消息时要指定接收进程的名字,反过来,接收时要指明发送进程的名字;接收时要指明发送进程的名字;对称形式:一对一对称形式:一对一 发送原语:发送原语:
5、Send(receiver,message)Send(receiver,message) 接收原语:接收原语:Receiver(sender,message)Receiver(sender,message) 非对称形式:多对一非对称形式:多对一 发送原语:发送原语:Send(P,message)Send(P,message) 接收原语:接收原语:Receiver(id,message)Receiver(id,message) 进程通信进程通信-消息传递通信的实现方式消息传递通信的实现方式消息格式:(1)短定长消息格式(在单机系统环境中)(2)变长的消息格式(进程发送的消息的长度是可变的)进程的
6、同步方式进程的同步方式:(1)发送进程阻塞,接收进程阻塞(2)发送进程不阻塞,接收进程阻塞(3)发送进程和接收进程都不阻塞进程通信进程通信-消息传递通信的实现方式消息传递通信的实现方式通信链路:第一种方式(主要用于计算机网络中):由发送进程在通信之前用显式的“建立连接”命令请求系统为之建立一条通信链路,在链路使用完后拆除链路。第二种方式(主要用于单机系统中):发送进程无须明确提出建立链路的请求,只须利用系统提供的发送命令(原语),系统会自动地为之建立一条链路。注:根据通信方式的不同,又可以把链路分为两种(1)单向通信链路(2)双向通信链路进程通信进程通信-邮箱通信邮箱通信概念:邮箱通信属于间接
7、通信方式,即进程之间的通信需要通过某种中间实体来完成。该实体建立在随机存储器的公共缓冲区上,用来暂存发送进程发送给目标进程的消息,接收进程可以从该实体取出发送进程发送给自己的的消息,通常把这种实体称为邮箱。邮箱特点:(1)每一个邮箱有一个唯一的标识符;(2)消息在邮箱中可以安全保存,只允许核准的用户随时读取;(3)利用邮箱可以实现实时通信,又可以实现非实时通信。进程通信进程通信-信箱通信信箱通信信箱结构:信箱定义为一种数据结构,在逻辑上可以分为:1,信箱头,用以存放有关信箱的描述信息,如信箱标识符,信箱的拥有者,信箱口令,信箱的空格数等;2,信箱体,由若干个可以存放的信息(货消息头)的信箱格式
8、组成,信箱格的数目以及每个大小的是在创建信箱是确定的。进程通信进程通信-信箱通信信箱通信信箱通信原语:1,信箱的创建和撤销。进程可利用邮箱创建的原语来建立一个新的邮箱,创建者进程应该给出邮箱名字,邮箱属性(公用,私用或共享);对于共享邮箱,还应给出共享这的名字,当进程不再需要读邮件时,可用邮箱撤销原语将之撤消。2,消息的发送和接受。当进程之间要利用邮箱进行通信时,必须给使用共享邮箱,并利用系统提供的下述通信原语进行通信。Send(mailbox,message); 将一个消息发送到制定邮箱Receive(mailbox,message);从指定邮箱中接受一个消息。进程通信进程通信-信箱通信信箱
9、通信信箱的类型: 1,私用邮箱。用户进程可为自己建立一个新邮箱,并作为哦该进程的一部分。邮箱的拥有者有权从邮箱中读取消息,其他用户则只能将自己构成的消息发送到该邮箱中。这种私用邮箱可采用单项通信链路的邮箱来实现。当拥有该邮箱的进程结束时,邮箱也随之消失。 2,公用邮箱。有操作系统创建,并提供给系统中的所有核准进程使用。核准进程既可把消息发送给该邮箱中,也可行邮箱中读取发送给自己的消息,显然,公用邮箱应采用双向通信链路的邮箱来实现。通常,公用邮箱在系统运行期间始终存在。 3,共享邮箱。由某进程创建,在创建时或创建后指明它是可共享的,挺尸须指出共享进程(用户)的名字。邮箱的拥有者和共享者都有权从邮
10、箱中取走发送给自己的消息。进程通信进程通信-信箱通信信箱通信邮箱通信时发送进程和接收进程之间关系: 1,一对一关系。 2,多对一关系。 3,一对多关系。 4,多对多关系。3.2.2 3.2.2 直接通信方式直接通信方式一、直接通信方式的基本思想一、直接通信方式的基本思想二、实例二、实例消息缓冲队列通信机制消息缓冲队列通信机制一、直接通信方式的基本思想一、直接通信方式的基本思想3.2.2 3.2.2 直接通信方式直接通信方式 根据根据生产者生产者消费者消费者关系原理,利用内存关系原理,利用内存的公用消息缓冲池实现进程之间的信息交换。的公用消息缓冲池实现进程之间的信息交换。 发送者进程直接将消息送
11、入内存公用消息发送者进程直接将消息送入内存公用消息缓冲池,并将它挂接在接收者进程的缓冲池,并将它挂接在接收者进程的消息缓消息缓冲队列冲队列上,接收进程从消息缓冲队列中取走上,接收进程从消息缓冲队列中取走消息。消息。二、实例二、实例消息缓冲队列通信机制消息缓冲队列通信机制1 1、通信描述、通信描述进进程程 A A发发送送区区s se en nd d( (B B, ,a a) )进进程程 B B接接收收区区m mq qm mu ut te ex xs sm m公公用用消消息息缓缓冲冲池池P PC CB B( (B B) )a as se en nd de er r: :A As si iz ze
12、e: :5 5t te ex xt t: :H He el ll lo or re ec ce ei iv ve e( (b b) )bEmpheadN NU UL LL Li is se en nd de er r : :A As si iz ze e : : 5 5T Te ex xt t: :H He el ll lo on ne ex xt t: : 0 0进进程程 A A发发送送区区s se en nd d( (B B, ,a a) )进进程程 B B接接收收区区m mq qm mu ut te ex xs sm m公公用用消消息息缓缓冲冲池池P PC CB B( (B B) )a
13、as se en nd de er r: :A As si iz ze e: :5 5t te ex xt t: :H He el ll lo or re ec ce ei iv ve e( (b b) )bEmpheadN NU UL LL Ls se en nd de er r : :A As si iz ze e : : 5 5T Te ex xt t: :H He el ll lo on ne ex xt t: : 0 0s se en nd de er r: :A As si iz ze e : : 5 5t te ex xt t: :H He el ll lo o1 1、通信描述、
14、通信描述i i二、实例二、实例消息缓冲队列通信机制消息缓冲队列通信机制进进程程 A A发发送送区区s se en nd d( (B B, ,a a) )进进程程 B B接接收收区区m mq qm mu ut te ex xs sm m公公用用消消息息缓缓冲冲池池P PC CB B( (B B) )a as se en nd de er r: :A As si iz ze e: :5 5t te ex xt t: :H He el ll lo or re ec ce ei iv ve e( (b b) )bEmpheadN NU UL LL Lsendersender: :A Asizesize
15、 : : 5 5texttext: :HelloHello1 1、通信描述、通信描述i i二、实例二、实例消息缓冲队列通信机制消息缓冲队列通信机制s se en nd de er r : :A As si iz ze e : : 5 5T Te ex xt t: :H He el ll lo on ne ex xt t: : 0 0二、实例二、实例消息缓冲队列通信机制消息缓冲队列通信机制3.2.23.2.2 直直接接通通信信方方式式2 2、发送、接收原语、发送、接收原语发送原语发送原语-send(receiver-send(receiver,a)a)send(receiversend(rece
16、iver,a)a)原语用来发送消息原语用来发送消息, , receiver receiver 是接收者进程是接收者进程,a,a是发送区起始地址;是发送区起始地址;接收原语接收原语- receive(b)- receive(b) receive(b)receive(b)原语用来接收消息,原语用来接收消息, b b是接收区首地址;是接收区首地址;send(receiversend(receiver,a)a)二、实例二、实例消息缓冲队列通信机制消息缓冲队列通信机制3.2.23.2.2 直直接接通通信信方方式式2 2、发送、接收原语、发送、接收原语二、实例二、实例消息缓冲队列通信机制消息缓冲队列通信机
17、制3.2.23.2.2 直直接接通通信信方方式式3 3、实现、实现数据结构数据结构消息缓冲块消息缓冲块PCBPCB中有关通信的数据项中有关通信的数据项mq :mq :消息队列头指针消息队列头指针; ;mutex :mutex :消息队列互斥信号量,初值为消息队列互斥信号量,初值为1;1;sm sm 同步信号量同步信号量, ,用于消息队列中的消息计数用于消息队列中的消息计数, ,初值为初值为0;0;BufmutexBufmutex:缓冲池的互斥信号量,初值为:缓冲池的互斥信号量,初值为1;1;消息缓冲通信机制还应包含的内容:消息缓冲通信机制还应包含的内容:EmpheadEmphead:空缓冲队列
18、头指针;:空缓冲队列头指针;BufemptyBufempty:缓冲池的同步信号量,初值为:缓冲池的同步信号量,初值为n;n;二、实例二、实例消息缓冲队列通信机制消息缓冲队列通信机制3.2.23.2.2 直直接接通通信信方方式式3 3、实现、实现发送、接收原语的类发送、接收原语的类C C语言描述语言描述3.2.2 3.2.2 直接通信方式直接通信方式例例1 1:如下图所示的是高级通讯原语如下图所示的是高级通讯原语SENDSEND和和RECEIVERECEIVE不完整的框图。请填充适当的不完整的框图。请填充适当的P P,V V操作,并说明所用信号量的意义和初值。操作,并说明所用信号量的意义和初值。
19、对消息链表互斥访问的信号量对消息链表互斥访问的信号量S,S,初值为初值为1 1私有信号量私有信号量S1S1,表示当前消息链中消息的数目,表示当前消息链中消息的数目, 初值为初值为0 0发送者发送者申请一消息区申请一消息区消息送消息区消息送消息区消息挂入消息链消息挂入消息链V(S1)V(S1)接收者接收者从消息链摘下一消息从消息链摘下一消息消息送接收区消息送接收区释放消息区释放消息区发送者发送者申请一消息区申请一消息区消息送消息区消息送消息区消息挂入消息链消息挂入消息链V(S1)V(S1)接收者接收者从消息链摘下一消息从消息链摘下一消息消息送接收区消息送接收区释放消息区释放消息区P(S)V(S)
20、P(S1)P(S)V(S)3.2.2 3.2.2 直接通信方式直接通信方式例例1 1:3.2.3 3.2.3 管道通信管道通信 1 1实质:实质:利用外存进行数据通信利用外存进行数据通信 2 2通信描述通信描述: Write(fd1,buf,size) read(fd0,buf,size) 3 3Pipe操作的同步与互斥操作的同步与互斥 互斥互斥:即当一个进程正在对:即当一个进程正在对pipepipe执行读执行读/ /写操作时,写操作时,其它其它( (另一另一) )进程必须等待。进程必须等待。 同步同步:指当写:指当写( (输入输入) )进程把一定数量进程把一定数量( (如如4 KB)4 KB
21、)的数的数据写入据写入pipepipe,便去睡眠等待,便去睡眠等待, 直到读直到读( (输出输出) )进程取走进程取走数据后,再把他唤醒。当读进程读一空数据后,再把他唤醒。当读进程读一空pipepipe时,也应时,也应睡眠等待,直至写进程将数据写入管道后,才将之唤睡眠等待,直至写进程将数据写入管道后,才将之唤醒。醒。 确定对方是否存在,只有确定了对方已存在时,才确定对方是否存在,只有确定了对方已存在时,才能进行通信。能进行通信。3.2.33.2.3 管管道道通通信信进程通信进程通信-直接消息传递系统实例直接消息传递系统实例消息缓冲队列通信机制中的数据结构: (1)消息缓冲区。 在消息缓冲队列通
22、信方式中,主要利用的数据结构是消息缓冲区。它可描述如下: typedef struct message_buffer int sender; / 发送者进程标识符 int size; /消息长度 char*text; /消息正文 struct message_buffer*next; /指向下一个消息缓冲区的指针 进程通信进程通信-直接消息传递系统实例直接消息传递系统实例消息缓冲队列通信机制中的数据结构:(2)PCB中有关通信的数据项。在操作系统中采用了消息缓冲队列通信机制时,除了需要为进程设置消息缓冲队列外,还应在进程的PCB中增加消息队列队首指针,用于对消息队列进行操作,以及用于实现同步的
23、互斥信号量mutex和资源信号量sm。在PCB中应增加的数据项可描述如下:typedef struct processcontrol_block . struct message_buffer*mq; / 消息队列队首指针 semaphore mutex; / 消息队列互斥信号量 semaphore sm; / 消息队列资源信号量 .PCB;进程通信进程通信-直接消息传递系统实例直接消息传递系统实例发送原语: 发送进程在利用发送原语发送消息之前,应先在自己的内存空间设置一发送区a,把待发送的消息正文、发送进程标识符、消息长度等信息填入其中,然后调用发送原语,把消息发送给目标(接收)进程。发送原
24、语首先根据发送区a中所设置的消息长度a.size来申请一缓冲区i,接着,把发送区a中的信息复制到缓冲区i中。为了能将i挂在接收进程的消息队列mq上,应先获得接收进程的内部标识符j,然后将i挂在j.mq上。 由于该队列属于临界资源,故在执行insert操作的前后都要执行wait和signal操作。消息缓冲队列通信机制消息缓冲队列通信机制1 1、通信描述、通信描述进进程程 A A发发送送区区s se en nd d( (B B, ,a a) )进进程程 B B接接收收区区m mq qm mu ut te ex xs sm m公公用用消消息息缓缓冲冲池池P PC CB B( (B B) )a as
25、se en nd de er r: :A As si iz ze e: :5 5t te ex xt t: :H He el ll lo or re ec ce ei iv ve e( (b b) )bEmpheadN NU UL LL Li is se en nd de er r : :A As si iz ze e : : 5 5T Te ex xt t: :H He el ll lo on ne ex xt t: : 0 0进进程程 A A发发送送区区s se en nd d( (B B, ,a a) )进进程程 B B接接收收区区m mq qm mu ut te ex xs sm m公
26、公用用消消息息缓缓冲冲池池P PC CB B( (B B) )a as se en nd de er r: :A As si iz ze e: :5 5t te ex xt t: :H He el ll lo or re ec ce ei iv ve e( (b b) )bEmpheadN NU UL LL Ls se en nd de er r : :A As si iz ze e : : 5 5T Te ex xt t: :H He el ll lo on ne ex xt t: : 0 0s se en nd de er r: :A As si iz ze e : : 5 5t te ex xt t: :H He el ll lo o1 1、通信描述、通信描述i i消息缓冲队列通信机制消息缓冲队列通信机制进进程程 A A发发送送区区s se en nd d( (B B, ,a a) )进进程程 B B接接收收区区m mq qm mu ut te ex xs sm m公公用用消消息息缓缓冲冲池池P PC CB B( (B B) )a as se en nd de er r: :A As si iz ze e: :5 5t te ex xt t: :H He el ll lo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农业保险产品创新与农村保险服务风险控制优化报告
- 教育行业2025年质量评估与认证体系在学生心理健康教育中的应用报告
- 2025年人工智能自然语言处理技术在智能医疗诊断系统中的药物副作用预测报告
- 2023年系统集成项目经理继续教育D组考试真题
- 2023青海安全生产月知识模拟测试附答案
- 2023监测危重病人的大循环和微循环
- 2023年考研数学之线性代数讲义考点知识点概念定理总结
- 2023车位租赁合同(15篇)
- 《新编应用文写作》高校应用文写作课程全套教学课件
- 中职高考英语一轮练习(主谓一致)含答案
- 风电工程质量管理规程
- 树根桩施工方案40867
- 2025年轻型民用无人驾驶航空器安全操控(多旋翼)理论备考试题库(含答案)
- 年产3万吨生物基PTT聚合项目环评资料环境影响
- 辽宁教学课题申报书
- 超市项目可行性报告
- 新目标英语七年级上册语法总结课件资料讲解
- 火灾报警控制器、消防联动控制器、火灾报警控制器(联动型)调试检测检验批质量验收记录
- 中建高支模施工方案
- 新冠病毒的治疗方案
- 2015-2024年十年高考化学真题分类汇编专题44 化学反应速率(原卷版)
评论
0/150
提交评论