1 / 51
文档名称:

管程和条件变量81.ppt

格式:ppt   大小:634KB   页数:51页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

管程和条件变量81.ppt

上传人:落意心冢 2024/3/26 文件大小:634 KB

下载得到文件列表

管程和条件变量81.ppt

相关文档

文档介绍

文档介绍:该【管程和条件变量81 】是由【落意心冢】上传分享,文档一共【51】页,该文档可以免费在线阅读,需要了解更多关于【管程和条件变量81 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。?(1) 为什么要引入管程把分散在各进程中的临界区集中起来进行管理;防止进程有意或无意的违法同步操作,便于用高级语言来书写程序,也便于程序正确性验证。什么是管程?(2)管程是由局部于自己的若干公共变量及其说明和所有访问这些公共变量的过程所组成的软件模块管程有以下属性?共享性:?安全性:?互斥性:管程的基本形式TYPE<管程名>=MONITOR<管程变量说明>;define<(能被其他模块引用的)过程名列表>;use<(要引用的模块外定义的)过程名列表>;procedure<过程名>(<形式参数表>);begin<过程体>;end;……procedure<过程名>(<形式参数表>);begin<过程体>;end;begin<管程的局部数据初始化语句>;end;管程的结构conditionc1wait(c1)…)Urgentqueuesignal局部数据条件变量过程1过程k出口初始化代码入口管程等待调用的进程队列管程等待区域…管程的示例TYPESSU=MONITORvarbusy:boolean;nobusy:semaphore;definerequire,return;usewait,signal;procedurerequire;beginifbusythenwait(nobusy);/*调用进程加入等待队列*/busy:=ture;end;procedurereturn;beginbusy:=false;signal(nobusy);/*从等待队列中释放进程*/end;begin/*管程变量初始化*/busy:=false;end;管程的条件变量(1)条件变量:当调用管程过程的进程无法运行时,用于阻塞进程的一种信号量同步原语wait:当一个管程过程发现无法继续时,它在某些条件变量condition上执行wait,这个动作引起调用进程阻塞管程的条件变量(2)另一个进程可以通过对其伙伴在等待的同一个条件变量condition上执行同步原语signal操作来唤醒等待进程。条件变量与P、V操作中信号量的区别?Hoare管程数据结构(2)-count对每个管程,引入信号量next(初值为0),凡发出signal操作的进程应该用P(next)挂起自己,直到被释放进程退出管程或产生其他等待条件。进程在退出管程的过程前,须检查是否有别的进程在信号量next上等待,若有,则用V(next)唤醒它。next-count(初值为0),用来记录在next上等待的进程个数。