- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
12025/5/13第3章进程管理3.1进程的引入3.2进程的结构3.3进程控制3.4进程的同步与互斥3.5进程间通信3.6进程调度3.7死锁3.8线程
进程通信概述22025/5/13进程通信就是进程之间的信息交换,交换的信息量可多可少。010203进程互斥与同步是一种进程通信,通过修改信号量,进程之间可建立起联系,相互协调运行和协同工作。信号量上的PV操作是最简单的进程通信。
进程通信的类型32025/5/13低级通信机制交换信息量少,如P、V原语,软中断信号;适用于集中式操作系统。高级通信机制:交换信息量大消息传递(messagepassing)通信机制;共享内存(sharedmemory)通信机制;管道(Pipe)通信:共享文件(sharedfile)通信机制;既适用于集中式操作系统,又适用于分布式操作系统一般,进程通信是指进程之间可直接以较高的效率传递较多数据的信息交换方式。
消息传递42025/5/13消息传递机制进程间的数据交换以消息为单位,程序员利用系统的通信原语(要进行消息传递时执行send;当接收者要接收消息时执行receive)实现通信。这种通信方式属于高级通信。优点操作系统隐藏了通信的实现细节,简化了通信程序编制的复杂性。分类直接通信(消息缓冲通信):发送进程直接把消息发送给接收者,并将它挂在接收进程的消息缓冲队列上。接收进程从消息缓冲队列中取得消息。间接通信(信箱通信):发送进程将消息发送到某种中间实体中(信箱),接收进程从中取得消息。 在网络中称为电子邮件系统。
直接通信方式(消息缓冲通信)消息传递通信的直接通信方式52025/5/130504020301发送进程发消息时要指定接收进程的名字,反过来,接收时要指明发送进程的名字;发送原语:Send(receiver,message)接收原语:Receiver(sender,message)对称形式:一对一非对称形式:多对一(顾客/服务员)
消息缓冲通信的实现62025/5/13在操作系统空间设置一组缓冲区;当发送进程需要发送消息时,执行send系统调用,产生访管中断,进入操作系统;操作系统为发送进程分配一个空缓冲区,并将所发送的消息从发送进程copy到缓冲区中,然后将该载有消息的缓冲区连接到接收进程的消息链链尾,如此就完成了发送过程;发送进程返回到用户态继续执行;在以后某个时刻,当接收进程执行到receive接收原语时,也产生访管中断进入操作系统。由操作系统将载有消息的缓冲区从消息链中取出,并把消息内容copy到接收进程空间,之后收回缓冲区,如此就完成了消息的接收,接收进程返回到用户态继续进行。123456
消息缓冲实现图示72025/5/13
消息缓冲区结构82025/5/13structmessageBuffer{intsender;//发送者IDintsize;//消息长度chartext[20];//消息正文structmessageBuffer*next;//消息队列指针}
PCB中有关通信的数据项92025/5/13structPCB{…mq:pointer;//消息队列首指针mutex:semaphore;//消息队列互斥信号量sm:semaphore;//消息队列资源信号量}
P、V操作实现的
发送原语和接收原语102025/5/13Receive(b){获得接收进程PCB的指针q;P(q.sm);P(q.mutex);从q.mq中取下第一个消息缓冲区i;V(q.mutex);将i中的内容复制到接收区b中,并释放i}Send(R,a){根据R找接收进程,如果没找到出错返回;getbuf(a.size,i);/*根据消息长度a.size,申请一个空缓冲区i把消息从发送区a中复制到空缓冲区i中;获得接收进程PCB的指针q;P(q.mutex);将i挂到消息队列q.mq的队尾;V(q.mutex);V(q.sm);}sm初值:0
消息传递通信的间接通信方式112025/5/13间接通信方式(信箱通信)发送进程发消息时不指定接收进程的名字,而是指定一个中间媒介,即信箱。进程间通过信箱实现通信发送原语:send(MB,Message),接收原语:receive(MB,M
文档评论(0)