




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作系统概念进程同步问题实例1本章主要内容经典同步问题生产者-消费者问题:缓冲区问题嗜睡理发师问题吸烟者问题吃水果问题21经典同步问题有限缓冲问题读者-作者问题哲学家进餐问题3有限缓冲问题(生产者-消费者问题)do{ … produceaniteminnextp … wait(empty); wait(mutex); … addnextptobuffer … signal(mutex); signal(full);}while(1);do{ wait(full); wait(mutex); … removeanitemfrombuffertonextc … signal(mutex); signal(empty); … consumetheiteminnextc …}while(1);4读者-作者问题一个数据对象可以为多个并发进程所共享。其中有的进程可能只需要读共享对象的内容,而其他进程可能要更新共享对象(即读和写)。将只对读感兴趣的进程称为读者其他则称为作者第一读者-作者问题仅当无读者等待时,才允许写者执行第二读者-作者问题在读者与作者同时申请资源的时候,写者优先。5第一读者-作者问题wait(wrt);…writingisperformed…signal(wrt);wait(mutex);readcount++;if(readcount==1) wait(wrt);signal(mutex);…readingisperformed…wait(mutex);readcount--;if(readcount==0) signal(wrt);signal(mutex);6哲学家就餐问题7
共享数据semaphorechopstick[5];哲学家i结构do{ wait(chopstick[i]); wait(chopstick[(I+1)%5]); … eat … signal(chopstick[i]); signal(chopstick[(I+1)%5]); … think …}while(1);82缓冲区问题(生产者-消费者问题)三个进程P1、P2、P3互斥使用一个包含N(N>0)个单元的缓冲区。P1每次用produce()生成一个正整数并用put()送入缓冲区某一个空单元中;P2每次用getodd()从该缓冲区中取出一个奇数并用countodd()统计奇数个数;P3每次用geteven()从该缓冲区中取出一个偶数并用counteven()统计偶数个数。请用信号量机制实现这三个进程的同步与互斥活动,并说明所定义的信号量的含义。要求用伪代码描述。9缓冲区问题求解(1)缓冲区是一互斥资源,因此设互斥信号量mutex。(2)同步问题:P1、P2因为奇数的放置与取用而同步,设同步信号量odd;P1、P3因为偶数的放置于取用而同步,设同步信号量even;P1、P2、P3因为共享缓冲区,设同步信号量empty。semaphoremutex=1,odd=0,even=0,empty=N;ProcessP1:while(true){number=produce();P(empty);P(mutex);put();V(mutex);Ifnumber%2==0V(even);elseV(odd);}10缓冲区问题求解ProcessP2:while(true){P(odd);P(mutex);getodd();V(mutex);V(empty);countodd();}ProcessP3:while(true){P(even);P(mutex);geteven();V(mutex);V(empty);counteven();}113嗜睡理发师问题一个理发店里有一个理发师,一张理发椅子,多张等候的椅子,当没有顾客的时候,理发师就睡觉。当一个顾客来到店里时,如果理发师在睡觉,则叫醒理发师;否则便坐着等;如果等待的椅子都满了就离开。
123嗜睡理发师问题int
waiting=0;//等候理发的顾客数
int
chairs=5;
//为顾客准备的椅子数
semaphore
customers=0,barbers=0,mutex=1;
Barber进程:while(TRUE){P(cutomers);//若无顾客,理发师睡眠P(mutex);//进程互斥,要求顾客等候
waiting=waiting–1;//等候顾客数少一个V(barbers);//理发师去为一个顾客理发V(mutex);//开放临界区cut-hair();//正在理发(非临界区操作)}Customer进程:P(mutex);//进入临界区if(waiting<chairs){waiting=waiting+1;//等候顾客数加1V(customers);//必要的话唤醒理发师V(mutex);//开放临界区P(barbers);//无理发师,顾客坐着养神get-haircut();//一个顾客坐下等候服务}elseV(mutex);//人满了,上自习去!134吸烟者问题三个吸烟者在一间房间内,还有一个香烟供应者。(1)为了制造并抽掉香烟,每个吸烟者需要三样东西:烟草、纸和火柴。(2)供应者有丰富的货物提供。(3)三个吸烟者中,第一个有自己的烟草,第二个有自己的纸,第三个有自己的火柴。(4)供应者将两样东西放在桌子上,允许一个吸烟者进行对健康不利的吸烟。当吸烟者完成吸烟后唤醒供应者,供应者再放两样东西(随机地)在桌面上,然后唤醒另一个吸烟者。试为吸烟者和供应者用同步法解决问题。144吸烟者问题供应者需要3个进程X:提供tobacco和matchY:提供match和wrapperZ:提供wrapper和tobacco3个吸烟者进程A:只有tobaccoB:只有matchC:只有wrapper则一次只能有X,Y,Z中的一个执行(供应);X,Y,Z只能在消耗完一个后才能供应下一个154吸烟者问题Semaphoretobacco=0,match=0,wrapper=0,mutex=1;ProcessX:P(mutex);V(tobacco);V(match);ProcessY:P(mutex);V(match);V(wrapper);ProcessZ:P(mutex);V(wrapper);V(tobacco);ProcessA:P(match);P(wrapper);Smoke;V(mutex);ProcessB:P(wrapper);P(tobacco);Smoke;V(mutex);ProcessC:P(tobacco);P(match);Smoke;V(mutex);16桌上有一空盘,允许存放一只水果。爸爸向盘中放苹果,妈妈向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一只水果供吃者取用,请用P、V原语实现爸爸、妈妈、儿子、女儿三个并发进程的同步。5吃水果问题plate爸爸妈妈儿子女儿175吃水果问题应设置三个信号量S、So、Sa,信号量S表示盘子是否为空,其初值为1;信号量So表示盘中是否有桔子,其初值为0;信号量Sa表示盘中是否有苹果,其初值为0。同步描述如下:SemaphorS=1,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 场地扩建打桩方案(3篇)
- DB23-T3028-2021-鲜食甜玉米机械化栽培技术规程-黑龙江省
- DB23-T2928-2021-基于水生态功能分区的流域水环境监测方法指南-黑龙江省
- DB23-T2839-2021-政务信息资源目录第1部分:编码规则-黑龙江省
- 农业基地现场管理制度
- 公司接待厨房管理制度
- 岗位定员设置管理制度
- 工程现场质量管理制度
- 文明施工措施方案(3篇)
- 建筑围挡招标方案(3篇)
- 2025年继续教育公需科目网络考试试题及答案
- 2025高考终极押题范文6篇与题目
- DB32/T 4220-2022消防设施物联网系统技术规范
- 车位转让合同协议书
- 合伙经营货车辆协议书
- 2025年农村个人果园承包合同
- 上海上海市普陀区融媒体中心专业技术人员招聘笔试历年参考题库附带答案详解
- 湖北省武汉市2025届高三年级五月模拟训练试题数学试题及答案(武汉五调)
- 企业管理流程数字化转型计划
- 2025年湖北省襄阳市襄州区中考数学二模试卷
- 2024年浙江省单独考试招生文化考试语文试卷真题(含答案详解)
评论
0/150
提交评论