进程同步典型例题操作系统_第1页
进程同步典型例题操作系统_第2页
进程同步典型例题操作系统_第3页
进程同步典型例题操作系统_第4页
进程同步典型例题操作系统_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、进程同步典型例题操作系统进程同步练习题1、 在公共汽车上 ,司机与售票员的工作流程如图所示。 为保证乘客的安全 ,司机与售票员应密切配合协调工作。请用信号量来实现司机与售票员之间的同步。司机售票员启动车辆关车门正常行车售票到站停车开车门图司机与售票员工作流程图2、 桌子上有一只盘子 ,盘子中只能放一只水果。 爸爸专向盘子中放苹果 ,妈妈专向盘子中放橘子 ,一个儿子专等吃盘子中的橘子 ,一个女儿专等吃盘子中的苹果。 用 PV 操作实现她们之间的同步机制。3、 a,b 两点之间就是一段东西向的单行车道,现要设计一个自动管理系统,管理规则如下 :(1)当 ab 之间有车辆在行驶时同方向的车可以同时驶

2、入ab 段,但另一方向的车必须在ab 段外等待 ;(2)当 ab 之间无车辆在行驶时 ,到达 a 点(或 b 点 )的车辆可以进入 ab 段 ,但不能从 a 点与 b 点同时驶入 ;(3)当某方向在 ab 段行驶的车辆驶出了 ab 段且暂无车辆进入 ab 段时 ,应让另一方向等待的车辆进入 ab 段行驶。请用信号量为工具 ,对 ab 段实现正确管理以保证行驶安全。4.将只读数据的进程称为“读者”进程 ,而写或修改数据的进程称为“写者”进程。允许多个“读者”同时读数据 ,但不允许“写者”与其她“读者”或“写者”同时访问数据。另外 ,要保证 :一旦有“写者”等待时 ,新到达的“读者”必须等待 ,直

3、到该“写者”完成数据访问为止。试用 P、V 操作正确实现“读者”与 “写者”的同步。 (第二类读者写者问题 ,信号量解决方法 )5.一条河上架设了由若干个桥墩组成的一座桥。若一个桥墩只能站一个人 ,过河的人只能沿着桥向前走而不能向后退。 过河时 ,只要对岸无人过 ,就可以过。但不允许河对岸的两个人同时过 ,以防止出现死锁。请给出两个方向的人顺利过河的同步算法。6.有一个仓库 ,可以存放 A 与 B 两种产品 ,但要求 :(1)每次只能存入一种产品(A 或 B);(2)-N A 产品数量 B 产品数量 M 。其中 ,N 与 M 就是正整数。试用同步算法描述产品A 与产品 B 的入库过程。1、在公

4、共汽车上进程同步典型例题操作系统,司机与售票员的工作流程如图所示。为保证乘客的安全,司机与售票员应密切配合协调工作。请用信号量来实现司机与售票员之间的同步。司机售票员启动车辆关车门正常行车售票到站停车开车门图司机与售票员工作流程图【答案】设置两个 资源信号量 :S1、 S2。 S1 表示就是否允许司机启动汽车,其初值为 0;S2 表示就是否允许售票员开门 ,其初值为 0、semaphoere S1=S2=0;void Driver()while(1)wait(S1);启动车辆 ;正常行车 ;到站停车 ;signal(S2);void Busman()while(1)关车门 ;signal(S1

5、);售票 ;wait(S2);开车门 ;进程同步典型例题操作系统main()cobeginDriver();Busman();2、 桌子上有一只盘子 ,盘子中只能放一只水果。 爸爸专向盘子中放苹果 ,妈妈专向盘子中放橘子 ,一个儿子专等吃盘子中的橘子 ,一个女儿专等吃盘子中的苹果。 用 PV 操作实现她们之间的同步机制。【答案】信号量 S 用来实现盘子的互斥访问,S1 表示盘子中苹果个数 ,S2 表示盘子中橘子的个数。semaphore S=1,S1=S2=0;void father()while(1)准备苹果 ;wait(S);将苹果放在盘子内 ;signal(S1);void mother

6、()while(1)准备橘子 ;wait(S);将橘子放在盘子内 ;signal(S2);void daughter()while(1)进程同步典型例题操作系统wait(Sl);从盘子里拿走苹果 ;signal(S);吃苹果 ;void son()while(1)wait(S2);从盘子里拿走橘子 ;signal(S);吃橘子 ;main()cobeginfather();mother();daughter();son();3、 a,b 两点之间就是一段东西向的单行车道,现要设计一个自动管理系统,管理规则如下 :(1)当ab 之间有车辆在行驶时同方向的车可以同时驶入ab段,但另一方向的车必须在

7、ab 段外等待 ;(2)当 ab 之间无车辆在行驶时 ,到达 a 点(或 b 点 )的车辆可以进入 ab 段 ,但不能从 a 点与 b 点同时驶入 ;(3)当某方向在 ab 段行驶的车辆驶出了 ab 段且暂无车辆进入 ab 段时 ,应让另一方向等待的车辆进入 ab 段行驶。请用信号量为工具 ,对 ab 段实现正确管理以保证行驶安全。【答案】此题就是读者 -写者问题的变形。设置 3 个信号量 S1、S2 与 Sab,分别用于从 a 点进入的车互斥访问 共享变量 ab(用于记录当前 ab 段上由 a 点进入车辆的数量 ),从 b 点进入的车互斥访问共享变量 ba(用于记录当前 ab 段上由 b 点

8、进入车辆的数量 )与 a、b 点的车辆互斥进入 ab段。 3 个信号量的初值分别为进程同步典型例题操作系统1、 1 与 1,两个共享变量ab 与ba的初值分别为0、0。semaphore S1=1,S2=1,Sab=1;int ab=ba=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+

9、1;signal(S2);车辆从 b 点驶向 a 点 ;wait(S2);ba=ba-1;if(ba=0)signal(Sab);signal(S2);进程同步典型例题操作系统main()cobeginPab();Pba();4、 将只读数据的进程称为“读者”进程,而写或修改数据的进程称为“写者”进程。允许多个“读者”同时读数据 ,但不允许“写者”与其她“读者”或“写者”同时访问数据。另外 , 要保证 :一旦有“写者”等待时 ,新到达的“读者”必须等待 ,直到该“写者”完成数据访问为止。试用 P、 V 操作正确实现“读者”与“写者”的同步。 (第二类读者写者问题 , 信号量解决方法 )【答案】

10、为了使写者优先 ,可在原来的读优先算法的基础上增加一个 互斥信号量 s,初值为 1,使得当至少有一个写者准备访问共享对象时 ,它可以使后续的 读者进程等待 ;整型变量 writecount ,初值为 0,用来对写者进行计数 ;互斥信号量 wmutex ,初值为 1,用来实现多个写者对writecount 进行互斥访问。Process reader() while(1)wait(s);wait(rmutex);if(readcount=0)wait(mutex);readcount+;signal(rmutex);signal(s);perform read operation;wait(rmu

11、tex);readcount-;if(readcount=0)signal(mutex);signal(rmutex);Process writer() while(1)wait(wmutex);进程同步典型例题操作系统if(writecount=0)wait(s);writecount+;signal(wmutex);wait(mutex);perform write operation;signal(mutex);wait(wmutex);writecount-;if(writecount=0)signal(s);signal(wmutex);Main( )cobegin reader()

12、; writer();5、 一条河上架设了由若干个桥墩组成的一座桥。若一个桥墩只能站一个人 ,过河的人只能沿着桥向前走而不能向后退。 过河时 ,只要对岸无人过 ,就可以过。但不允许河对岸的两个人同时过 ,以防止出现死锁。请给出两个方向的人顺利过河的同步算法。【答案】信号量 s:互斥使用桥 ,初值为 1信号量 scount1:对方向 1 上过河人计数器 count1 的互斥使用 ,初值为 1信号量 scount2:对方向 2 上过河人计数器count2 的互斥使用 ,初值为 1信号量 scount: 代表桥上过河人的计数信号量,初值为桥墩个数N变量 count1:方向 1 上过河人计数器变量 c

13、ount2:方向 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(scount1);if(count1=0) 程同步典型例 操作系 wait(s);count1+;signal(scount1);wait(scount);上 ,过桥 ,下 ;signal(scount);wait(scount1);count1-;if(count1=0)signal(s)

14、;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)signal(s);signal(scount2);main()cobegindirect1(1);direct1(n);direct2(1);direct2(m);进程同步典型例题操作系统6、有一个仓库 ,可以存放 AA 产品数量 B 产品数量与 B 两种产品 M

15、。其中 ,N 与,但要求 :(1) 每次只能存入一种产品(AM 就是正整数。试用同步算法描述产品或 B);(2)-N 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;当往库中存放入一个一 1。当往库中存放入一个B 产品时 ,则允许存入 AA 产品时 ,则允许存入产品的数量也增加 1。B

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论