




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.4管程,3.4.1管程和条件变量3.4.2管程的实现3.4.3管程解决进程同步问题,3.4.1管程和条件变量,为什么要引入管程?把分散在各进程中的临界区集中起来进行管理;防止进程有意或无意的违法同步操作,便于用高级语言来书写程序,也便于程序正确性验证。,管程定义和属性,管程的定义管程是由局部于自己的若干公共变量及其说明和所有访问这些公共变量的过程所组成的软件模块。管程的属性共享性:安全性:互斥性:,管程的形式,type管程名=monitor局部变量说明;条件变量说明;初始化语句;define管程内定义的,管程外可调用的过程或函数名列表;use管程外定义的,管程内将调用的过程或函数名列表;过程名/函数名(形式参数表);过程名/函数名(形式参数表);,管程的结构,管程的条件变量,条件变量-是出现在管程内的一种数据结构,且只有在管程中才能被访问,它对管程内的所有过程是全局的,只能通过两个原语操作来控制它。wait()-挂起调用进程并释放管程,直到另一个进程在该条件变量上执行signal()。signal()-如果存在其他进程由于对条件变量执行wait()而被挂起,便释放之;如果没有进程在等待,那么,信号不被保存。条件变量与P、V操作中信号量的区别?,管程问题讨论,使用signal释放等待进程时,可能出现两个进程同时停留在管程内。解决方法:执行signal的进程等待,直到被释放进程退出管程或等待另一个条件被释放进程等待,直到执行signal的进程退出管程或等待另一个条件霍尔采用第一种办法,汉森选择两者的折衷,规定管程中的过程所执行的signal操作是过程体的最后一个操作。,管程与进程作比较,管程定义的是公用数据结构,而进程定义的是私有数据结构;管程把共享变量上的同步操作集中起来,而临界区却分散在每个进程中;管程是为管理共享资源而建立的,进程主要是为占有系统资源和实现系统并发性而引入的;管程是被欲使用共享资源的进程所调用的,管程和调用它的进程不能并行工作,而进程之间能并行工作,并发性是其固有特性;管程是语言或操作系统的成分,不必创建或撤销,而进程有生命周期,由创建而产生至撤销便消亡。,3.4.2管程的实现:Hoare方法,霍尔方法使用P和V操作原语来实现对管程中过程的互斥调用,及实现对共享资源互斥使用的管理。不要求signal操作是过程体的最后一个操作,且wait和signal操作可被设计成可以中断的过程。,Hoare管程数据结构(1),1.mutex对每个管程,使用用于管程中过程互斥调用的信号量mutex(初值为1)。进程调用管程中的任何过程时,应执行P(mutex);进程退出管程时应执行V(mutex)开放管程,以便让其他调用者进入。为了使进程在等待资源期间,其他进程能进入管程,故在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引入信号量x-sem(初值为0),申请资源得不到满足时,执行P(x-sem)挂起。由于释放资源时,需要知道是否有别的进程在等待资源,用计数器x-count(初值为0)记录等待资源的进程数。执行signal操作时,应让等待资源的诸进程中的某个进程立即恢复运行,而不让其他进程抢先进入管程,这可以用V(x-sem)来实现。,Hoare管程数据结构(4),每个管程定义如下数据结构:typedefstructInterfaceModule/*InterfaceModule是结构体的名字*/semaphoremutex;/*进程调用管程过程前使用的互斥信号量*/semaphorenext;/*发出signal的进程挂起自己的信号量*/intnext_count;/*在next上等待的进程数*/;mutex=1;next=0;next_count=0;/*初始化语句*/,Hoare管程的enter()操作,voidenter(InterfaceModule,Hoare管程的leave()操作,voidleave(InterfaceModule,Hoare管程的wait()操作,voidwait(semaphore,Hoare管程的signal()操作,voidsignal(semaphore,3.4.3使用管程解决进程同步问题,1霍尔管程解决五个哲学家就餐问题(1)typedining_philosophers=monitorenumthinking,hungry,eatingstate5;condself5;intself_count5;InterfaceModuleIM;for(inti=0;i5;i+)/*初始化,i为进程号*/statei=thinking;definepickup,putdown;useenter,leave,wait,signal;,霍尔管程解决五个哲学家就餐问题(2),voidpickup(inti)/*i=0,1,.,4*/enter(IM);statei=hungry;test(i);if(statei!=eating)wait(selfi,self_counti,IM);leave(IM);voidputdown(inti)/*i=0,1,2,.,4*/enter(IM);statei=thinking;test(i-1)%5);test(i+1)%5);leave(IM);,霍尔管程实现五个哲学家就餐问题(3),voidtest(intk)/k=0,1,.,4if(state(k-1)%5!=eating),2管程解决生产者-消费者问题(1),typeproducer_consumer=monitoritemBk;/*缓冲区个数*/intin,out;/*存取指针*/intcount;/*缓冲中产品数*/condnotfull,notempty;/*条件变量*/intnotfull_count,notempty_count;InterfaceModuleIM;defineappend,take;useenter,leave,wait,signal;,管程解决生产者-消费者问题(2),voidappend(itemx)enter(IM);if(count=k)/*缓冲已满*/wait(notfu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 液晶显示器件彩膜制造工测试考核试卷及答案
- 化学浆料处理方法流程考核试卷及答案
- 金属焊接接缝密封工艺考核试卷及答案
- 塑胶场地紫外线防护施工技术规范考核试卷及答案
- 古建琉璃工综合考核试卷及答案
- 茶叶采摘机操作工数字化技能考核试卷及答案
- 河北省石家庄精英新华学校2025-2026学年上册七年级开学数学试卷(含部分答案)
- 医院技术面试题目及答案
- 三端集成稳压器等多领域知识测试卷
- 2025-2026学年赣美版(2024)小学美术三年级上册《团花剪纸》教学设计
- 2025年工地安全员培训考试试题及答案
- 文明有礼+课件-2025-2026学年统编版道德与法治八年级上册
- 供水设备运行维护与保养技术方案
- 木雕工艺课件
- 2025年2个清单28个问题查摆整改措施
- 摩擦力影响因素实验报告范本
- 教育系统应急知识培训课件
- 基坑防护课件
- 2025年黑龙江省龙东地区中考英语真题含答案
- 医疗器械生产质量管理规范2025版
- 学堂在线 军事理论 章节测试答案
评论
0/150
提交评论