孙钟秀操作系统PPTch3-3.4管程

孙钟秀操作系统PPTch3-3.4管程

ID:46277077

大小:932.50 KB

页数:53页

时间:2019-11-22

孙钟秀操作系统PPTch3-3.4管程_第1页
孙钟秀操作系统PPTch3-3.4管程_第2页
孙钟秀操作系统PPTch3-3.4管程_第3页
孙钟秀操作系统PPTch3-3.4管程_第4页
孙钟秀操作系统PPTch3-3.4管程_第5页
资源描述:

《孙钟秀操作系统PPTch3-3.4管程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、操作系统教程(第4版)第三章并发进程主讲教师:王慧娇E-mail:whj@guet.edu.cn手机:13978321977QQ:248886622答疑时间:周二14:00-15:303.4管程3.4.1管程和条件变量3.4.2霍尔方法实现管程3.4.3汉森方法实现管程把分散在各进程中的临界区集中起来进行管理;防止进程有意或无意的违法同步操作,便于用高级语言来书写程序,也便于程序正确性验证。3.4.1什么是管程为什么要引入管程管程实现的基本思想在进程共享主存的前提下,如果能集中和封装对一个共享资源的所有访问,包括所需的同步操作,即把相关的共享变量

2、及其操作集中在一起统一控制和管理。把分散在各进程中的临界区集中起来管理,并把共享资源用数据结构抽象地表示出来,由于临界区是访问共享资源的代码段,建立一个“秘书”程序管理到来的访问。管程定义和属性管程的定义管程是由局部于自己的若干公共变量及其说明和所有访问这些公共变量的过程所组成的软件模块管程的组成局部于管程的共享变量的说明;对该数据结构进行操作的一组过程;对局部于管程的数据的初始化语句管程的属性•共享性:•安全性:•互斥性:TYPE<管程名>=MONITOR{局部变量说明;条件变量说明;初始化语句;define<管程内定义、管程外可以调用的过程或

3、函数名列表>;use<管程外定义、管程内将要调用的过程或函数名列表>;<过程名/函数名>(<形式参数表>){<过程体>;}……<过程名/函数名>(<形式参数表>){<过程体>;}}管程的基本形式管程的结构conditionc1wait(c1)…conditioncnwait(cn)urgentqueuesignal局部数据条件变量过程1过程k出口初始化代码入口管程等待调用的进程队列管程等待区域…管程的条件变量当进程在资源不能满足而无法继续运行时被阻塞,同时开放管程。解决方法:引入条件变量的同步机制条件变量:用于区分等待原因的一种信号量,对管程内的

4、过程是全局的,只能通过下面的两个原语访问。管程的条件变量同步原语wait和signalwait(x):挂起调用进程并释放管程,直至另一个进程在条件变量上执行signal()signal(y):如果有其他进程因对条件变量执行wait()而被挂起,便释放之;如果没有进程在等待,那么信号不被保存。条件变量与P、V操作中信号量的区别?管程的问题讨论使用signal释放等待进程时,可能出现两个进程同时停留在管程内。假定进程P执行signal操作,条件变量队列中有一个进程Q在等待,当进程P执行signal操作后,进程Q被释放,对它们可作如下处理:进程P等待直

5、至进程Q退出管程,或者进程Q等待另一个条件进程Q等待直至进程P退出管程,或者进程P等待另一个条件霍尔采用了第一种办法汉森选择了两者的折衷,规定管程中的过程所执行的signal操作是过程体的最后一个操作管程与进程作比较•管程定义的是公用数据结构,而进程定义的是私有数据结构;•管程把共享变量上的同步操作集中起来,而临界区却分散在每个进程中;•管程是为管理共享资源而建立的,进程主要是为占有系统资源和实现系统并发性而引入的;•管程是被欲使用共享资源的进程所调用的,管程和调用它的进程不能并行工作,而进程之间能并行工作,并发性是其固有特性;•管程是语言或操作

6、系统的成分,不必创建或撤销,而进程有生命周期,由创建而产生至撤销便消亡。3.4.2管程实现:Hoare方法霍尔方法使用P和V操作原语来实现对管程中过程的互斥调用,及实现对共享资源互斥使用的管理。不要求signal操作是过程体的最后一个操作,且wait和signal操作可被设计成可以中断的过程。Hoare管程数据结构(1)1.mutex对每个管程,使用用于管程中过程互斥调用的信号量mutex(初值为1)。进程调用管程中的任何过程时,应执行P(mutex);进程退出管程时应执行V(mutex)开放管程,以便让其他调用者进入。为了使进程在等待资源期间,

7、其他进程能进入管程,故在wait操作中也必须执行V(mutex),否则会妨碍其他进程进入管程,导致无法释放资源。Hoare管程数据结构(2)2.next和next-count对每个管程,引入信号量next(初值为0),凡发出signal操作的进程应该用P(next)挂起自己,直到被释放进程退出管程或产生其他等待条件。进程在退出管程的过程前,须检查是否有别的进程在信号量next上等待,若有,则用V(next)唤醒它。next-count(初值为0),用来记录在next上等待的进程个数。Hoare管程数据结构(3)3.x-sem和x-count引入信

8、号量x-sem(初值为0),申请资源得不到满足时,执行P(x-sem)挂起。由于释放资源时,需要知道是否有别的进程在等待资源,用计数器x

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。