- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
管程(monitor) 参看P51 OS设计中引入了信号量以后,互斥实现起来似乎很容易,果真是这样吗? 答案是否定的! 在生产者~消费者问题中,曾提到:wait(mutex)、wait(empty)两个语句不能对调,否则系统死锁。 说明系统的编制人员使用信号量时要特别小心。 很小的错误将产生极大的麻烦。 因为出现的错误与资源竞争、死锁、不可预测、不可再现有关。 1、问题提出 用信号量机制编制并发程序,对共享变量、信号量的操作(同步、互斥)被分散在各个进程中。缺点: 易读性差:因为要了解对一组变量及信号量的操作,需要读懂全部并发的程序。 难以修改和维护:对一组变量和代码的修改,必须对使用它的全部程序进行修改(因为同步、互斥分散在所有相关并发程序中。 正确性难以保证:OS通常很复杂,同步、互斥过于分散,很难保证逻辑上的正确性。 既然分散的同步操作有缺点,人们就想到把同步机制集中到一个模块中,这就是早期(1971)的秘书进程思想。 Dijkstra(1971):提出“秘书”进程的思想。 Hansen和Hoare(1973):推广为“管程”。 2. 管程的引入 管程:一种同步机制,是编程的构件。 管程定义: 3、管程的结构和特性 管程有四部分组成 ① 名称:为每个共享资源设立一个管程 ② 数据结构说明:一组局部管程的控制变量 ③ 操作原语: 对控制变量和临界资源进行操作 的一组原语,是访问该管程的唯一途径。这些原语本身是互斥的,任一时刻只允许一个进程去调用,其余需要访问的进程就等待。 ④ 初始化代码:对控制变量进行初始化的代码 例如,X代表某临界资源,变量busy表示X的状态:忙、或闲。定义一个条件变量nonbusy(等待条件不忙) 。当进入管程的进程R/W该资源时,发现资源X的状态为忙(busy为“忙”),则该进程: 进入等待该资源的阻塞队列→或称之进入X的等待条件不忙队列→或称之进入nonbusy条件队列。并释放管程的互斥权。 当进入管程的另一进程释放与某条件变量相关的资源时,应该唤醒在该条件上等待的一个进程。 5、多个进程出现在管程中 当一个进入管程的进程执行唤醒操作时(如P唤醒Q),管程中便存在两个同时处于活动状态的进程。 1) 处理方法有三种: 当P唤醒Q时 ① P等待Q继续,直到Q退出或等待;(Hoare方法); ② Q等待P继续,直到P等待或退出;(Hansan方法 ); 2)多个进程出现在管程中 如果进程P唤醒进程Q,则P等待Q继续; 如果进程Q在执行又唤醒进程R,则Q等待R续;…… 这时,在管程内部,由于执行唤醒操作,可能会出现多个等待进程,这些等待的进程进入紧急等待队列。 紧急等待队列优先级高于入口等待队列的优先级。 6、条件变量上的wait、signal操作 条件变量的定义: Var 变量1, 变量2, … ,变量n : condition 对条件变量可执行wait和signal操作。对于条件变量y : y. wait将自己阻塞在y条件队列中; y . Signal可以将y队列中的一个进程唤醒。 例,某资源多进程共享,每次只能一个进程访问。 资源状态:用变量busy表示, 取值T、F 定义一个条件变量:nonbusy 一个进程申请使用资源: If busy then nonbusy.wait 另一个进程释放该资源: nonbusy.signal唤醒一个等不忙条件的进程。 *** 对条件变量操作进一步说明 7、利用管程解决“生产者/消费者”问题 定义管程名:PC 共享的数据结构: 环形缓冲buffer ,大小为n 条件变量 notfull、notempty 环形缓冲区中产品计数:count 设两个过程:put(item)、get(item) Producer调用→PC. put(item) →生产的产品送缓冲区 consumer调用→PC. get(item) →从缓冲区取一个产品 进入管程的Producer如果发现缓冲区满:count≧n →执行notfull.wait把自己阻塞入等待不满条件队列。 进入管程的consumer如果发现缓冲区空:count≤0→执行notempty.wait把自己阻塞入等待不空条件队列。 type pc= moniter Var in,out , count :integer; buffer:array [0,…,n-1] of item; (有界缓冲区) notempty,notfull:Condition;(不空、不满两个条件) procedure entry put(item) begin if C
您可能关注的文档
- MonitoringTransitionManagement+chn概述.ppt
- MOOC发展现状概述.ppt
- mooc介绍概述.ppt
- Moodle_2.0概述.ppt
- Moodle_2.2学习平台系统管理功能介绍概述.ppt
- moodle使用概述.ppt
- 制作经验分享(版)概述.ppt
- MOV-电动执行器Owen概述.ppt
- MP4设计方案概述.ppt
- MPA公共管理学第三讲评估概述.ppt
- [第九章]公共事业伦理解决方案.ppt
- [第三章投入与产出(新)解决方案.ppt
- [另]税务会计学盖地[已修正]解决方案.ppt
- [龙湖]成本管理与房地产开发成本控制解决方案.ppt
- [名校联盟]福建省莆田八中高二生物《隔离与物种的形成》解决方案.ppt
- [名校联盟]广东省佛山市中大附中三水实验中学高中政治必修四《+价值判断与价值选择》解决方案.ppt
- [名校联盟]辽宁省朝阳县柳城高级中学高考语文复习:高考材料作文审题立意方法汇总解决方案.ppt
- [名校联盟]山东语文记叙文答题考点、技巧、格式汇总解决方案.ppt
- [名校联盟]四川省泸县第九中学高二数学必修3第三章+概率+小结与复习解决方案.ppt
- [企业会计.解决方案.ppt
最近下载
- TCQAE.32025信息技术生僻字处理第3部分服务机构要求.pdf
- 医学影像检查技术学教案(本科).doc
- TCQAE.22025信息技术生僻字处理第2部分业务系统要求.pdf
- TCQAE.12025信息技术生僻字处理第1部分软件产品要求.pdf
- 《信息技术 生僻字处理要求 第 3 部分:服务机构》.PDF
- 《信息技术 生僻字处理要求 第 2 部分:业务系统》.PDF
- 国际结算(史燕平)第三章 国际结算方式--汇款方式与托收方式.ppt VIP
- 《信息技术 生僻字处理要求 第1部分:软件产品》.PDF
- 2025年青岛版(2024)小学科学三年级上册(全册)教学设计(附目录P150).docx
- 国际结算中的票据.pptx
文档评论(0)