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

下载本文档

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

文档简介

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 v A产品数量一 B产品数量v M。其中,N和M是正整数。试用同步算法描述产品 A与产品B的入库过程。1 在公共汽车上,司机和售票员的工作流程如下图。为保证乘客的平安,司机和售票员应密切配合协调工作。请用信号量来实现司机与售票员之间的同步。司机售

4、票员启动车辆关车门1正常行车T售票11TT到站停车开车门1 11图司机和售票员工作流程图【答案】设置两个资源信号量:S1 S2。S1表示是否允许司机启动汽车,其初值为是否允许° ; S2表示售票员开门,其初值为0.semaphoere S1=S2=°void Driver()while(1)wait(S1);启动车辆;正常行车;到站停车;sig nal(S2);void Busma n()while(1)关车门;signal(S1);wait(S2);开车门;mai n()cobeg inDriver();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=0;void Pab()while

8、(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 点驶向 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 ,用来实现多个写者对 writecount 进行互斥访问。P

10、roceSS 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(wmutex);wait(mutex);

11、perform write operation; signal(mutex); wait(wmutex); writecount-; if(writecount=0)signal(s); signal(wmutex);Main( )cobegin reader(); writer();5.一条河上架设了由假设干个桥墩组成的一座桥。假设一个桥墩只能站一个人,过河的人只能沿着桥向前走而不能向后退。过河时,只要对岸无人过,就可以过。但不允许河对岸的两个人 同时过,以防止出现死 锁。请给出两个方向的人顺利过河的同步算法。【答案】信号量S :互斥使用桥,初值为1信号量 scount1 :对方向 1 上过

12、河人计数器 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(scount1)

13、;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=

14、0)signal(s);signal(scount2);main()cobegindirect1(1);direct1(n);direct2(1);direct2(m);6、有一个仓库,可以存放 A和B两种产品,但要求:(1)每次只能存入一种产品(A或B); (2)-N v A产 品数量一 B产品数量v M。其中,N和M是正整数。试用同步算法描述产品A 与产品 B 的入库过程。【答案】A 产品的数量不能比 B 产品的数量少 N 个以上, A 产品的数量不能比 B 产品的 数量多 M 个以 上设置两个信号量来控制 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。 sem

温馨提示

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

评论

0/150

提交评论