版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、经典理发师问题 假设后街有家理发店,店里有一个理发师、一把理发椅和n把等候理发的顾客椅子。 (1).如果没有顾客则理发师便在理发椅上看报纸; (2).当有一个顾客到达时,首先查看理发师在干什么,如果在看报纸则告诉理发师理发,然后坐到理发椅上开始理发;如果理发师正在理发,则查看是否有空的椅子可坐,如果有,他就坐下等待,如果没有,则离开; (3).理发师为一位顾客理完发后,查看是否有人等待,如有则唤醒一位为其理发,如没有则在理发椅上看报纸; (4).顾客不分优先级customers:用于记录等候的顾客的数量,初值0barbers:用于记录空闲理发师
2、的数量,初值1mutex:用于进程之间的互斥,初值1waiting:也是用于记录等候的顾客的数量,初值0理发师:p(customers);p(mutex);waiting-;v(mutex);理发;v(barbers);顾客:p(mutex);if(waiting<n)waiting+;v(customers);v(mutex);p(barbers);接受理发服务;elsev(mutex);1 桌上有一个空盘,允许存放一只水果。父亲可向盘中放苹果,也可向盘中放桔子。儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一只水果供子女取用。请用P、V原语实现父亲、儿子、女儿三个
3、并发进程的同步。信号量S表示盘子是否为空,初值为1;信号量orange表示盘中是否有桔子,初值为0;信号量apple表示盘中是否有苹果,初值为0。Int S=1;Int orange=0;Int apple=0;Main()cobeginfather();son();daughter();coendfather()while(true)p(s);将水果放入盘中;if (放入的是桔子) v(orange);elsev(apple)son()while(true)p(orange);从盘中取出桔子;v(s);吃桔子;daughter()while(true)p(apple);从盘中取出苹果;v(s
4、);吃苹果;2.(读者、写者)多个进程共享一个文件,其中只读文件的称为读者,只写文件的称为写者。读者可以同时读,但写者只能独立写。用P、V操作写出其同步算法。读互斥信号量:rmutex,用于使读者互斥的访问共享变量count,初值为1写互斥信号量:wmutex,用于实现写者与读者的互斥及写者与写者的互斥,初值为1共享变量:count,记录当前正在读文件的读者数目,初值为0A.读者优先:Reader()p(rmutex);if (count= =0) p(wmutex);count+;v(rmutex);读文件;p(rmutex);count - -;if (count= =0) v(wmute
5、x);v(rmutex);writer()p(wmutex);写文件;v(wmutex);B.写者优先信号量s:在写进程到达后封锁后续的读者,初值为1Reader()p(s);p(rmutex);if (count=0) p(wmutex);count+;v(rmutex);v(s);读文件;p(rmutex);count - - ;If (count=0) v(wmutex);V(rmutex);writer()p(s);p(wmutex);写文件;v(wmutex);v(s);3.有一共享文件F可供A、B两组进程共享,同组的进程可以同时读文件F, 但不同组的进程不能同时读文件F而只能互斥地
6、读文件F。s:=1 s1:=1s2:=1 sr:=1 保护计数器ra:=0 A组计数器rb:=0 B组计数器 reader A P(s1); ra:=ra+1; if ra=1 then P(s); V(s1); read file F; P(s1); ra:=ra-1; if ra=0 then V(s); V(s1);
7、 reader B P(s2); rb:=rb+1; if rb=1 then P(s); V(s2); read file F; P(s2); rb:=rb-1; if rb=0 then V(s); V(s2); 如果仅用一个sr来控制A组进程和B组进程之间的互斥会形成死锁的:假设已经有3个A组的人在读F文件,此时ra=3;就在这时,有一个B组的读进程来访问文件F此时rb=1;然后p(s)将S-1后S等
8、于-1;进入等待队列,而这时无法恢复sr从而使保持在-1的状态,而若这时又有一个A组的进程要进入F文件读,因为sr=-1所以导致A组的进程也进不去了。而按照题义此时A组的进程是可以进的解决方法是分别假设信号量S1和S2 从而即使在A组读时S2被修改了也不会影响A进程的读操作。从而S1,S2分别控制自己进程内的临界操作,而S实现了A组和B组之间的互斥4. 三个进程PA、PB和PC合作解决文件打印问题:PA将文件记录从磁盘读入主存得缓冲区1,每执行一次读一个记录;PB将缓冲区1的内容复制到缓冲区2,每执行一次复制一个记录;PC将缓冲区2的内容打印出来,每执行一次打印一个记录。缓冲区的大小
9、等于一个记录大小。请用P、V操作来保证文件的正确打印。empty1、empty2表示缓冲区1,2是否为空,初值为1full1,full2表示缓冲区1,2是否有记录,初值为0PA:从磁盘读一个记录P(empty1)将记录存入缓冲区1V(full1)PB:P(full1)从缓冲区1中取出记录V(empty1)P(empty2)将记录存入缓冲区2V(full2)PC:P(full2)从缓冲区2中取出记录V(empty2)打印记录5.阅览室共有200个座位,读者进入时必须先在一张登记表上登记,该登记表为每一座位列一表目,包括座号和读者姓名等,读者离开时要销掉登记的信息。试用PV操作描述读者进程之间的同
10、步关系。 算法的信号量有三个:seats,表示阅览室是否有座位,初值为200;readers,表示阅览室里的读者数,初值为0;s,用于登记或注销互斥的信号量,初值为1。 读者进入阅览室: P(seats); /是否有座位 P(s); /是否有人在登记 填写登记表; V(s); /登记完毕 进入阅览室; V(readers); /读者个数加1 读者离开阅览室: P(readers); /阅览室是否有人在读书 P(s); /是否有人在注销 销掉登记; V(s); /注销完毕 离开阅览室; V(seats); /释放一个座位资源 管道 #include <stdio.h>Main()In
11、t x,fd2;Char buf30,s30;Pipe(fd);While(x=fork()=-1);If(x=0)Sprintf(buf,”son”);Write(fd1,buf,30);Exit(0);ElseWait(0);Read(fd0,s30);Printf(“%s”,s);一、 死锁问题l 死锁的概念:1. 死锁的定义:各并发进程彼此互相等待对方所拥有的资源,且这些并发进程在得到对方的资源之前不会释放自己所拥有的资源,从而造成大家都想得到资源而又都得不到资源,各并发进程不能继续向前推进得状态。2. 死锁的起因:并发进程的资源竞争,系统提供的资源个数少于并发进程所要求的资源数。3.
12、 产生死锁的必要条件:² 互斥条件:² 不可剥夺条件:² 部分分配条件:² 环路条件:l 死锁的排除方法:1. 死锁预防:² 打破资源的互斥和不可剥夺条件:由客观条件限制² 打破资源的部分分配条件:² 打破环路条件:2. 死锁避免(动态预防):3. 死锁的检测与恢复:l 银行家算法:银行有10个单位的资金(安全状态)已使用 最大 (不安全状态) 已使用 最大A16 1 6B15 2 5C24 2 4D47 4 7不安全状态并不一定导致死锁。² 多种资源的银行家算法: 总资源数(6,3,4,2)已分配资源(5,3,2,2) 剩余资源(1,0,2,0)已分配打印机扫描仪绘图仪CDROMA3011B0100C1110D1101E0000 未分配打印机扫描仪绘图仪CDROMA1100B0112C3100D0010E21103种资源A、B、C,总数分别为:17、5、20剩余资源2,3,35个进程T0时刻最大资源需求已分配资源ABCABCP1559212P2536402P34011405P4425204P5424314安全序列:P5、P4、P3、P2、P11、若T0时刻进程P2请求资源(0、3、4),是否能实
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年饭店业主权转让协议
- 2024年重庆股权转让协议精简
- 2024年冬季道路扫雪服务承包协议
- 2024届安徽池州市高三年级寒假验收考试数学试题试卷
- 2023-2024学年浙江省效实中学高三下期末教学检测试题数学试题试卷
- 化服务交易结算协议模板2024
- 2024年度装修项目协议样本
- 2024虾池养殖权承包协议示例
- 2024挂靠项目管理协议样本集萃
- 2024年天然气服务协议范例
- 国开2024年秋《教育心理学》形成性考核1-4答案
- 市政道路及设施零星养护服务技术方案(技术标)
- 《中国心力衰竭诊断和治疗指南2024》解读(总)
- 大水学校德育活动记录
- 七年级英语上培优扶差记录表
- 乳头溢液的诊断及处理ppt课件
- 《相信自己,我是最棒的》主题班会说课稿
- 人像摄影布光PPT优秀课件
- 暗黑3夺魂之镰物品名称中英文对照
- 注塑品质检验标准
- SYB创业培训教材练习题参考答案
评论
0/150
提交评论