4-2 进程的同步与进程通信.ppt

  1. 1、本文档共89页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4-2 进程的同步与进程通信

* 《计算机操作系统》- 第4章 */144 管程的定义 管程是临界资源监控器。 在保护临界资源前提下,控制对临界资源的访问 define定义的过程,可以被进程或其他管程模块引用,而未定义的过程则仅在管程内部使用。 管程要引用模块外定义过程,必须用use说明。 type 管程名 = monitor 管程变量说明; define 能被其他模块引用的过程名列表; use (要引用的模块外定义的)过程名列表; procedure 过程名(形式参数表); begin 过程体; end; … procedure 过程名(形式参数表); begin 过程体; end; … begin 管程的局部数据初始化语句; end; * 《计算机操作系统》- 第4章 */144 若干进程互斥共享1个临界资源时,管程的定义 管程中用define子句声明(可以在模块外引用):申请get和释放put两个过程,分别表示进入管程过程和退出管程过程。 管程中用use子句声明(模块外定义的操作): PP(condition)和VV(condition) 两个原子操作 操作PP(condition)表示进入管程的进程在不能访问临界资源时,在条件condition上阻塞等待临界资源。 操作VV(condition)表示访问完临界资源的进程释放临界资源时,唤醒在条件condition上阻塞等待所释放的临界资源的进程。 * 《计算机操作系统》- 第4章 */144 type MS = MONITOR var busy; var condition; define get, put; use PP,VV; procedure get /* 进入管程的过程调用 */ begin if busy then PP(condition); /* 如果临界资源忙时,进程调用PP阻塞*/ busy:=true; end; procedure put /* 退出管程的过程调用 */ begin busy:=false; /* 将临界资源的状态设置为闲 */ VV(condition); /* 唤醒阻塞等待所释放临界资源的进程 */ end; begin /* 管程变量初始化 */ busy:=false; end; * 《计算机操作系统》- 第4章 */144 4.5.2 Hoare和Hansen观点 现象:在管程中的进程,在某一条件变量condition上执行操作VV后,如果在管程中有进程处于阻塞等待该进程释放的临界资源,则执行操作VV的进程会唤醒该阻塞进程。执行操作VV的进程和被唤醒的进程,会同时调用管程中的过程。因此,执行操作VV(condition)的进程正调用管程的退出过程,而被操作VV(condition)唤醒的过程正调用管程的进入过程。而根据管程的互斥访问条件,不允许两个进程同时访问管程中的进程。 为了防止这种现象的发生,Hoare和Hanse提出了两种不同的观点。 * 《计算机操作系统》- 第4章 */144 Hoare观点 操作VV是管程的过程中的最后一个操作。 如果一个阻塞进程P1在阻塞等待被唤醒时,进程P2发出了唤醒进程P1的操作VV,则进程P1被唤醒后立即恢复在管程中执行,同时进程P2用操作PP阻塞自己。当进程P1访问完管程中的临界资源,结束对管程中的过程调用或被其它条件阻塞时,进程P2才被进程P1用操作VV唤醒并恢复调用管程中的过程。 * 《计算机操作系统》- 第4章 */144 Hansen观点 进程P1在阻塞等待被唤醒时,进程P2发出了唤醒进程P1的操作VV,进程P2继续执行的同时,条件被保存。当进程P2离开管程时,进程P1才会通过重新检查条件来试图恢复在管程中的执行。 * 《计算机操作系统》- 第4章 */144 4.5.3 管程的应用 Hansen管程方法实现生产者—消费者问题 在管程中定义变量notfull和notempty作为调用管程中过程的条件,认为只要生产者可以生产,则notfull的值为true;只要消费者可以消费,则notempty的值为true。 用Hansen管程方法实现读者—写者问题 用两个计数器rc和wc分别对读者进程和写者进程计数; 用R和W表示允许读和写的条件; * 《计算机操作系统》- 第4章 */144 本章目录 4.1 进程并发 4.2 临界区管理 4.3 信号量机制 4.4 用信号量解决经典进程同步问题 4.5 管程 4.6 进程通信 4.7 线程的同步和通信 * 《计算机

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档