- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4.6 进程通信
共享主存通信 消息传递机制的分类 1)直接通信 发送或接收消息的进程必须指出信件发给谁或从谁那里接收消息 原语send(P,消息):把一个消息发送给进程P 原语receive(Q,消息):从进程Q接收一个消息 消息传递机制的分类 2)间接通信(通过信箱传递消息) 原语send(A,信件):把一封信件(消息)传送到信箱A 原语receive(A,信件):从信箱A接收一封信件(消息) 信箱是存放信件的存储区域,每个信箱可分成信箱特征和信箱体两部分。 信箱特征指出信箱容量、信件格式、指针等;信箱体用来存放信件 通信的3种组合 非阻塞发送,阻塞接收:发送进程发送完消息后继续前进;接收进程接收到消息后继续前进;未收到则阻塞等待 非阻塞发送,非阻塞接收:发送进程发送完消息后继续前进;接收进程在接收信件时若有,则接收后继续前进,若无信件,也继续前进 阻塞发送,阻塞接收:发送者进程在发送完消息后阻塞等待接收者进程发送回答消息后,才能继续前进;接收者进程在接收到消息前,阻塞等待,直到接收到消息后再向发送者进程发送一个回答消息。这种方式称之为双向通信 消息传递实现同步 ? 采用消息传递机制后,一个正在执行的进程可在任何时刻向另一个正在执行的进程发送消息;一个正在执行的进程也可在任何时刻向正在执行的另一个进程请求消息。 ? 一个进程在某一时刻的执行依赖于另一进程的消息或等待其他进程对发出消息的回答,那么,消息传递机制紧密地与进程的阻塞和释放相联系。消息传递就进一步扩充了并发进程间对数据的共享,提供了进程同步的能力。 消息传递解决进程互斥 消息传递解决生产者-消费者问题 4.6 进 程 通 信 进程之间相互交换信息的过程称为进程通信(IPC)。 在多进程环境下,进程之间的同步也是一种进程通信的方式。但是,进程同步的通信方式只适合通信的信息量为一个字或几个字的情况,不适合传递大量的数据。 当进程之间需要交换的数据量大时,为了提高效率,系统需要采用一些相应的通信机制来完成进程通信,这样的通信机制有共享存储区、消息传递和管道。 4.6.1 共享存储区通信机制 在进程通信中,最直接的方式是利用系统内存,在内存中申请一个共享存储区,通信进程双方利用该共享存储区进行通信,如图4.9所示。 图4.9 进程通过共享存储区通信 4.6.1 共享存储区通信机制(续) 共享存储区通信方式分为如下几步: 向系统共享存储区申请一个分区段,并指定关键字;若系统已为其他进程分配了该分区,则返回对应的关键字给申请者。 分区段连接到进程的虚地址空间,进程可通过对该区段的读、写来直接通信 通信结束后归还存储区 当进程通信结束后,通信进程需要将共享存储区归还操作系统。 共享存储区通信方式适合进程之间通信量大的情况下,其优点是高效、快速。 进程1的虚存空间 虚存段 进程2的虚存空间 虚存段 物理主存 共享主存 4.6.2 消息传递通信机制 消息,是一组信息,由消息头和消息体组成。 消息传递:一种高级的可以交换大量的信息的通信方式 就像人类将信装入信封中通信时直接将信封进行传递一样,进程之间的通信将通信的内容封装在消息中,进行消息传递。 至少需要两个基本的消息传递原语:send, receive 一般使用阻塞型receive和非阻塞型send 4.6.2 消息传递通信机制 1.消息结构及消息原语 消息中封装有通信的信息。消息的内容如下: sptr:发送进程标志; nptr:指向消息队列中下一个消息的指针; size:消息长度; text:消息正文。 消息由消息头和消息体组成。消息头包括发送进程标志、指向消息队列中下一个消息的指针和消息长度。消息正文是消息体。 4.6.2 消息传递通信机制(续) 进程之间通过消息传递通信的信息,每当发送进程需要发送数据时,将发送的数据封装到消息的正文中,并形成消息结构。 接收进程接收消息。消息队列可以有多个,如果存在多个消息队列,则对应每个消息队列都有一个消息队列头结构,这些消息队列头结构构成消息队列头表。消息队列头表中记录了每个消息队列的队首指针及相应信息,即通过消息队列头表可以找到每个消息队列和消息队列的长度。 4.6.2 消息传递通信机制(续) 2.消息通信中的两种类型 在利用消息的进程通信时,发送进程和接收进程可以直接发送和接收消息,也可以借助信箱发送和接收消息。因此,消息通信中存在直接通信与间接通信两种类型。 create_mailbox(box); send(box,null); void Pi( ) { //i=1,2,…,n message m
您可能关注的文档
最近下载
- 基于智能化技术的供水管网漏点判定与修复管理模式.pptx
- 2023-2024学年沪科版(2019)高中信息技术必修二第三单元项目五《规划并连接数字家庭系统的网络——组建小型信息系统网络(一)》说课稿.docx VIP
- 北京市城镇供水厂生产安全事故隐患目录.pdf VIP
- 业主委员会委员候选人推荐表.docx VIP
- NB-T35003-2023水电工程水情自动测报系统技术规范.pdf VIP
- 2025年高考英语陕西卷含解析及答案.docx VIP
- 2025年管道直饮水项目可行性研究报告.docx
- 地理信息安全在线培训考试题目完整版答案.docx
- 幼儿园区域活动的实施策略.pptx
- 10kV及以下变电所设计规范.pdf VIP
文档评论(0)