版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、进程同步练习题1. 在公共汽车上,司机和售票员的工作流程如图所示。为保证乘客的安全,司机和售票员应密切配合协调工作。请用信号量来实现司机与售票员之间的同步。司机售票员启动车辆关车门正常行车售票到站停车开车门图司机和售票员工作流程图2. 桌子上有一只盘子,盘子中只能放一只水果。爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。用PV 操作实现他们之间的同步机制。3. a,b 两点之间是一段东西向的单行车道,现要设计一个自动管理系统,管理规则如下:( 1)当 ab 之间有车辆在行驶时同方向的车可以同时驶入ab 段,但另一方向的车必须在ab段外等待;
2、( 2)当 ab 之间无车辆在行驶时,到达a 点(或 b 点)的车辆可以进入ab 段,但不能从a点和 b 点同时驶入;( 3)当某方向在 ab 段行驶的车辆驶出了 ab 段且暂无车辆进入 ab 段时,应让另一方向等待的车辆进入 ab 段行驶。请用信号量为工具,对 ab 段实现正确管理以保证行驶安全。4将只读数据的进程称为“读者”进程,而写或修改数据的进程称为“写者”进程。允许多个“读者”同时读数据,但不允许“写者”与其他“读者”或“写者”同时访问数据。另外,要保证:一旦有“写者”等待时,新到达的“读者”必须等待,直到该“写者”完成数据访问为止。试用 P、V 操作正确实现“读者”与“写者”的同步
3、。 (第二类读者写者问题,信号量解决方法)5一条河上架设了由若干个桥墩组成的一座桥。若一个桥墩只能站一个人,过河的人只能沿着桥向前走而不能向后退。过河时,只要对岸无人过,就可以过。但不允许河对岸的两个人同时过,以防止出现死锁。请给出两个方向的人顺利过河的同步算法。6有一个仓库,可以存放A 和 B 两种产品,但要求:( 1)每次只能存入一种产品( A 或 B);( 2)-N A 产品数量 B 产品数量 M 。其中, N 和 M 是正整数。试用同步算法描述产品 A 与产品 B 的入库过程。1、在公共汽车上,司机和售票员的工作流程如图所示。为保证乘客的安全,司机和售票员应密切配合协调工作。请用信号量
4、来实现司机与售票员之间的同步。司机售票员启动车辆关车门正常行车售票到站停车开车门图司机和售票员工作流程图【答案】设置两个 资源信号量: S1、S2。是否允许售票员开门,其初值为0.S1 表示是否允许司机启动汽车,其初值为0;S2 表示semaphoere S1=S2=0;void Driver()while(1)wait(S1);启动车辆;正常行车;到站停车;signal(S2);void Busman()while(1)关车门;signal(S1) ;售票;wait(S2) ;开车门;main()cobeginDriver();Busman();2. 桌子上有一只盘子,盘子中只能放一只水果。
5、爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。用PV 操作实现他们之间的同步机制。【答案】信号量 S 用来实现盘子的互斥访问,S1 表示盘子中苹果个数,S2 表示盘子中橘子的个数。semaphore S=1,S1=S2=0;void father()while(1)准备苹果 ;wait(S);将苹果放在盘子内;signal(S1);void mother()while(1)准备橘子 ;wait(S);将橘子放在盘子内;signal(S2);void daughter()while(1)wait(Sl);从盘子里拿走苹果;signal(S);
6、吃苹果 ;void son()while(1)wait(S2);从盘子里拿走橘子;signal(S);吃橘子 ;main()cobeginfather();mother();daughter();son();3. a,b 两点之间是一段东西向的单行车道,现要设计一个自动管理系统,管理规则如下:( 1)当 ab 之间有车辆在行驶时同方向的车可以同时驶入 ab 段,但另一方向的车必须在 ab 段外等待;( 2)当 ab 之间无车辆在行驶时,到达 a 点(或 b 点)的车辆可以进入 ab 段,但不能从 a 点和 b 点同时驶入;( 3)当某方向在 ab 段行驶的车辆驶出了 ab 段且暂无车辆进入 a
7、b 段时,应让另一方向等待的车辆进入 ab 段行驶。请用信号量为工具,对 ab 段实现正确管理以保证行驶安全。【答案】此题是读者 -写者问题的变形。设置 3 个信号量 S1、S2 和 Sab,分别用于从 a 点进入的车互斥访问 共享变量 ab(用于记录当前 ab 段上由 a 点进入车辆的数量),从 b 点进入的车互斥访问 共享变量 ba(用于记录当前 ab 段上由 b 点进入车辆的数量) 和 a、b 点的车辆互斥进入 ab 段。 3 个信号量的初值分别为 1、1 和 1,两个共享变量 ab 和 ba 的初值分别为 0、0。semaphore S1=1,S2=1,Sab=1;int ab=ba=
8、0;void Pab()while(1)wait(S1);if(ab=0)wait(Sab);ab=ab+1;signal(S1);车辆从 a 点驶向 b 点 ;wait(S1);ab=ab-1;if(ab=0)signal(Sab);signal(S1);void Pba()while(1)wait(S2);if(ba=0)wait(Sab);ba=ba+1;signal(S2);车辆从 b 点驶向 a 点 ;wait(S2);ba=ba-1;if(ba=0)signal(Sab);signal(S2);main()cobeginPab();Pba();4. 将只读数据的进程称为“读者”进程
9、,而写或修改数据的进程称为“写者”进程。允许多个“读者”同时读数据,但不允许“写者”与其他“读者”或“写者”同时访问数据。另外,要保证:一旦有“写者”等待时,新到达的“读者”必须等待,直到该“写者”完成数据访问为止。试用 P、 V 操作正确实现“读者”与“写者”的同步。 (第二类读者写者问题,信号量解决方法)【答案】为了使写者优先, 可在原来的读优先算法的基础上增加一个 互斥信号量 s,初值为 1,使得当至少有一个写者准备访问共享对象时,它可以 使后续的 读者进程等待;整型变量 writecount ,初值为 0,用来对写者进行计数;互斥信号量 wmutex ,初值为 1,用来实现多个写者对
10、writecount 进行互斥访问。Process reader() while(1)wait(s);wait(rmutex);if(readcount=0)wait(mutex);readcount+;signal(rmutex);signal(s);perform read operation;wait(rmutex);readcount-;if(readcount=0)signal(mutex);signal(rmutex);Process writer() while(1)wait(wmutex);if(writecount=0)wait(s);writecount+;signal(w
11、mutex);wait(mutex);perform write operation;signal(mutex);wait(wmutex);writecount-;if(writecount=0)signal(s);signal(wmutex);Main( )cobegin reader(); writer();5. 一条河上架设了由若干个桥墩组成的一座桥。若一个桥墩只能站一个人,过河的人只能沿着桥向前走而不能向后退。过河时,只要对岸无人过,就可以过。但不允许河对岸的两个人同时过,以防止出现死锁。请给出两个方向的人顺利过河的同步算法。【答案】信号量 s:互斥使用桥,初值为 1信号量 scoun
12、t1:对方向 1 上过河人计数器 count1 的互斥使用,初值为 1 信号量 scount2:对方向 2 上过河人计数器 count2 的互斥使用,初值为 1 信号量 scount:代表桥上过河人的计数信号量,初值为桥墩个数 N变量 count1 :方向 1 上过河人计数器变量 count2 :方向 2 上过河人计数器Semaphore s, scount1, scount2, scount;int count1, count2;s=1; scount1=1; scount2=1; scount=N;count1=0; count2=0;void direct1(int i)wait(sco
13、unt1);if(count1=0)wait(s);count1+;signal(scount1);wait(scount);上桥,过桥,下桥;signal(scount);wait(scount1);count1-;if(count1=0)signal(s);signal(scount1);void direct2(int i)wait(scount2);if(count2=0)wait(s);count2+;signal(scount2);wait(scount);上桥,过桥,下桥;signal(scount);wait(scount2);count2-;if(count2=0)signa
14、l(s);signal(scount2);main()cobegindirect1(1);direct1(n);direct2(1);direct2(m);6、有一个仓库,可以存放 A 和 B 两种产品,但要求:(1)每次只能存入一种产品 (A 或 B);( 2)-N A 产品数量 B 产品数量 M 。其中, N 和 M 是正整数。试用同步算法描述产品A 与产品 B 的入库过程。【答案】A 产品的数量不能比数量多M 个以上B 产品的数量少N 个以上,A 产品的数量不能比B 产品的设置两个信号量来控制 A 、B 产品的存放数量, sa 表示当前允许 A 产品比 B 产品多入库的数量(当前允许 A 产品入库数量),即在当前库存量和 B 产品不入库的情况下,还可以允许 sa 个 A产品入库;sb 表示当前允许 B 产品比 A 产品多入库的数量(当前允许B 产品入库数量),即在当前库存量和 A 产品不入库的情况下,还可以允许sb 个 B 产品入库。初始时, sa 为 M 一 1,sb 为 N 一 1。当往库中存放入一个A 产品时,则允许存入B 产品的数量也增加1;当往库中存放入一个B 产品时,则允许存入A 产品的数量也增加1。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年门窗安装项目协议范本
- 2024矿石产品销售协议模板大全
- 建筑劳务分包协议模板2024
- 2023-2024学年重庆一中高高三第二次联考高三数学试题
- 2024年航空物流销售代表协议范本
- 2024进口商品订购协议模板集锦
- 2024年订餐服务详细协议样本
- 2024年化妆设备租赁协议条款
- 吊装设备及运输服务协议模板2024
- 创业合作伙伴股份转移协议范本
- 统编语文四年级上册第六单元教材解读及集体备课
- 2024年档案知识竞赛考试题库300题(含答案)
- (新版)婴幼儿发展引导员(高级)技能鉴定理论试题库资料(含答案)
- 民事案件卷宗目录封面11
- 2022年2022年古籍样式排版模板
- 艺术装饰艺术运动
- 樊登读书会营销策略分析
- 建设单位安全生产管理体系(完整版)
- 国潮风喜迎中秋节传统节日介绍主题班会PPT模板
- 幼儿园参观学校活动方案5篇
- 苏州大学实验报告专用纸
评论
0/150
提交评论