操作系统Chap3.4管程.pptVIP

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

*Dijkstra的信号量与PV操作属于分散式同步机制,如果采用这种同步设施来构造操作系统,则对于共享变量及信号量变量的操作将分散于整个系统中;如果采用这种同步设施编写并发程序,则对于共享变量及信号量的操作将分散于各个进程中。其缺点是:易读性差,要了解对于一组共享变量及信号量的操作是否正确,则必须通读整个系统或者并发程序;不利于修改和维护,因为程序的局部性很差,所以任意一组变量或任意一段代码的修改都可能影响全局;正确性难以保证,因为操作系统或并发程序的规模通常都很大,要保证这样一个复杂的系统没有逻辑错误是很困难的。*条件型变量是一个指针,它可以指向空,或者指向由进程控制块构成的队列的头部,初始为空。对于条件变量,可以执行wait和signal两个操作,含义:wait(c):如果紧急等待队列非空,则唤醒第一个等待者,否则释放管程的互斥权。执行此操作进程的进程控制块进入c链的尾部。Signal(c):如果c链为空,则相当于空操作,执行次操作的进程继续;否则唤醒第一个等待者,执行此操作的进程控制块进入紧急等待队列的尾部。在进程进入和离开管程时,应当分别执行如下操作:进入管程:申请管程的互斥权。离开管程:如果紧急等待队列非空,则唤醒第一个等待者,否则释放管程的互斥权,包含各种队列的管程如图4.13所示。*如果A进程的signal在(1)先A.signal(x)后B.wait(x),那么A.signal(x)时候x_count0不成立,什么也不做。(2)先B.wait(x)后A.signal(x),那么在B.wait(x)时,x_count++到1,且此时条件型变量是一个指针,它可以指向空,或者指向由进程控制块构成的队列的头部,初始为空。对于条件变量,可以执行wait和signal两个操作,含义:wait(c):如果紧急等待队列非空,则V(IM.next)唤醒第一个等待者,否则释放管程的互斥权。执行此操作进程的进程控制块进入c链的尾部。//IM.next为紧急队列信号,IM.mutex为管程互斥权。Signal(c):如果c链为空,则相当于空操作,执行次操作的进程继续;否则唤醒第一个等待者,执行此操作的进程控制块进入紧急等待队列的尾部。在进程进入和离开管程时,应当分别执行如下操作:进入管程:申请管程的互斥权。离开管程:如果紧急等待队列非空,则唤醒第一个等待者,否则释放管程的互斥权,包含各种队列的管程如图4.13所示。3.4管程3.4.1管程和条件变量3.4.2管程的实现3.4.3管程解决进程同步问题C.A.R.Hoare昵称TonyHoare,1980年图灵奖Quicksort算法HoareLogicCommunicatingSequentialProcesses//并发进程理论,CSP进程代数/CSP电子书下载在2000年,Hoare由于其在计算机科学和教育方面的杰出贡献被英国皇家授予爵士爵位。管程C.A.R.Hoare:Monitors:AnOperatingSystemStructuringConcept.Commun.ACM,17(10):549-557(1974)3.4.1管程和条件变量为什么要引入管程把分散在各进程中的临界区集中起来进行管理;防止进程有意或无意的违法同步操作,便于用高级语言来书写程序,也便于程序正确性验证。管程定义和属性管程的定义管程是由局部于自己的若干公共变量及其说明和所有访问这些公共变量的过程所组成的软件模块。管程的属性?共享性:?安全性:?互斥性:管程定义和属性?共享性: 管程中的移出过程可被所有要调用管程的过程的进程所共享。?安全性: 管程的局部变量只能由该管程的过程访问,不允许进程或其他管程来直接访问,一个管程的过程也不应该访问任何非局部于它的变量。?互斥性:在任一时刻,共享资源的进程可访问管程的管理该资源的过程,但最多只有一个调用者能真正地进入管程,任何其他调用者必须等待直到管程可用。管程的形式type管程名=monitor{局部变量说明;条件变量说明;初始化语句;define管程内定义的,管程外可调用的过程或函数名列表;use管程外定义的,管程内将调用的过程或函数名列表;过程名/函数名(形式参数表){ 过程/函数体;}…过程名/函数名(形式参数表){ 过程/函数体;

文档评论(0)

趁早学习 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档