- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1.消息传递的概念 消息传递(Message passing)作为当前应用最为广泛的一种进程间通信机制,为进程间信息传递和交换的实现提供了很好的保障 消息是一组信息,由消息头和消息体组成。 send(destination, message) receive(source, message) 3.4.6 消息传递 * 2.同步 阻塞send:发送进程阻塞,知道消息被接收进程接收 非阻塞send:发送进程发送消息并再继续操作 阻塞receive:接收者阻塞直到请求的消息到达 非阻塞receive:接收者收到一条有效消息或一条空消息 组合形式: 阻塞send,阻塞receive 非阻塞send,阻塞receive 非阻塞send,非阻塞receive 3.4.6 消息传递 * 3.寻址方式 (1)直接寻址(Direct addressing)方式 (2)间接寻址(Indirect addressing)方式 在间接选址方式下,消息传递并不是在发送进程和接收进程之间直接进行,而是通过一个被称为信箱(Mailbox)的共享的数据结构完成 利用信箱进行通信,发送进程和接收进程存在如下的对应关系:一对一、多对一、一对多和多对多 3.4.6 消息传递 * 图3.14 间接的进程通信 3.4.6 消息传递 * 3.互斥 send(mbox, msg)原语表示向信箱mbox中发送msg消息 receive(mbox, msg)表示从信箱mbox中取走msg消息 消息可以看成是进程访问临界区的钥匙,收到消息拿到钥匙的前提下才能进入临界区,否则只能等待 3.4.6 消息传递 * 2.记录型信号量 整型信号量机制没有满足让权等待的原则,可能使进程处于饥饿的忙等状态。 假设s为一个记录型数据结构,其中一个分量为整形量value,另一个为信号量队列queue。value通常是一个具有非负初值的整型变量,queue是一个初始状态为空的进程队列,当一个进程必须等待信号量时,就加入到进程队列中去。 3.4.3 信号量机制 * wait和signal操作定义如下: wait(s):信号量s减l,若结果小于0,则调用 wait(s)的进程被设置成等待信号量s的状态。 signal(s):将信号量s加1,若结果不大于0,则释放一个等待信号量s的进程。 3.4.3 信号量机制 * 分析得出以下结论: (1)若信号量s.value值为正,则该值表示在对进程进行阻塞之前对信号量s可以实施的wait()操作个数,即系统中某类资源实际可用数目; (2)若信号量s.value值为负,则其绝对值表示阻塞队列s.queue中等待的进程个数; (3)每次wait()操作,意味着进程请求一个单位的该类资源,使系统中可供分配的该类资源数减少一个,每次signal()操作,表示执行进程释放一个单位资源,使系统中可供分配的该类资源数增加一个。 3.4.3 信号量机制 * 3.二元信号量 假设s为一个记录型数据结构,其中一个分量为value,它仅能取值0和1,另一个分量为信号量队列queue。 一个二元信号量的值只能是0或者1 3.4.3 信号量机制 * P-V同步缺点: 对于共享变量及信号量变量的操作将被分散于各个进程中,有几个缺点: (1)易读性差,因为要了解对于一组共享变量及信号量的操作是否正确,则必须通读整个系统或者并发程序 (2)不利于修改和维护,因为程序的局部性很差,所以任一组变量或一段代码的修改都可能影响全局 (3)正确性难以保证,因为操作系统或并发程序通常很大,要保证这样一个复杂的系统没有逻辑错误是很难的 管程的引入 信号量机制的引入解决了进程同步的描述问题,但信号量的大量同步操作分散在各个进程中不便于管理,还有可能导致系统死锁。 如:生产者消费者问题中将P、V颠倒可能死锁。 Dijkstra于1971年提出:把所有进程对某一种临界资源的同步操作都集中起来,构成一个所谓的秘书进程。凡要访问该临界资源的进程,都需先报告秘书,由秘书来实现诸进程对同一临界资源的互斥使用。 1.管程的定义 管程是由一个或多个过程、一个初始化序列和数据组成的软件模块,是一种程序设计语言结构成分,具有和信号量同等的表达能力。进程可以通过调用管程实现对资源的请求和释放。 百度百科:管程 (英语:Monitors,也称为监视器)定义了一个数据结构和能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据。 3.4.4 管程 * 管程的基本思想 将共享变量和对它们的操作集中在一个模块
您可能关注的文档
- 参考文献条目的编排格式及参考解析.ppt
- 初中物理自主招生复习专题(电学一)解析.doc
- 参考系与坐标系解析.ppt
- 初中物理总复习笔记精简版(全是填空题较好)解析.doc
- 参考议论文解析.doc
- 初中物理总复习电学专题---多种方法测电阻解析.ppt
- 初中物理作图题专题复习解析.ppt
- 初中现代文阅读理解题精选及答案共16篇解析.doc
- 初中校园消防安全课件解析.ppt
- 初中信息技术计算机安全解析.ppt
- 2025年大学《整合科学》专业题库——整合科学与信息技术的交叉应用.docx
- 2025年大学《卢旺达语》专业题库—— 卢旺达语言心理学研究.docx
- 2025年大学《海洋科学与技术》专业题库—— 海洋溢油事故的应急处置与防范.docx
- 2025年大学《考古学》专业题库—— 考古学在文化传播中的作用.docx
- 2025年大学《生态学》专业题库—— 生态系统弹性与稳定性的关系研究.docx
- 国泰综合证券品类信息型号信息用户手册.pdf
- 2025年大学《自然地理与资源环境》专业题库—— 地下水资源利用与管理.docx
- 蒙泰集团集采(电商)平台供应商注册指导书.pdf
- 2022年9月3日中级会计《财务管理》考试真题(带答案).pdf
- 2025年大学《皮金语》专业题库—— 皮金语专业的学术论文发表.docx
原创力文档


文档评论(0)