进程同步典型例题(操作系统)
进程同步练习题1.在公共汽车上,司机和售票员的工作流程如图所示。
为保证乘客的安全,司机和售票员应密切配合协调工作。
请用信号量来实现司机与售票员之间的同步。
司机售票员图司机和售票员工作流程图2.桌子上有一只盘子,盘子中只能放一只水果。
爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。
用PV操作实现他们之间的同步机制。
3.a,b两点之间是一段东西向的单行车道,现要设计一个自动管理系统,管理规则如下:(1)当ab之间有车辆在行驶时同方向的车可以同时驶入ab段,但另一方向的车必须在ab 段外等待;(2)当ab之间无车辆在行驶时,到达a点(或b点)的车辆可以进入ab段,但不能从a 点和b点同时驶入;(3)当某方向在ab段行驶的车辆驶出了ab段且暂无车辆进入ab段时,应让另一方向等待的车辆进入ab段行驶。
请用信号量为工具,对ab段实现正确管理以保证行驶安全。
4.将只读数据的进程称为“读者”进程,而写或修改数据的进程称为“写者”进程。
允许多个“读者”同时读数据,但不允许“写者”与其他“读者”或“写者”同时访问数据。
另外,要保证:一旦有“写者”等待时,新到达的“读者”必须等待,直到该“写者”完成数据访问为止。
试用P、V操作正确实现“读者”与“写者”的同步。
(第二类读者写者问题,信号量解决方法)5.一条河上架设了由若干个桥墩组成的一座桥。
若一个桥墩只能站一个人,过河的人只能沿着桥向前走而不能向后退。
过河时,只要对岸无人过,就可以过。
但不允许河对岸的两个人同时过,以防止出现死锁。
请给出两个方向的人顺利过河的同步算法。
6.有一个仓库,可以存放A和B两种产品,但要求:(1)每次只能存入一种产品(A或B);(2)-N<A产品数量-B产品数量<M。
其中,N和M是正整数。
试用同步算法描述产品A与产品B的入库过程。
1、在公共汽车上,司机和售票员的工作流程如图所示。
为保证乘客的安全,司机和售票员应密切配合协调工作。
请用信号量来实现司机与售票员之间的同步。
司机售票员图司机和售票员工作流程图【答案】设置两个资源信号量:S1、S2。
S1表示是否允许司机启动汽车,其初值为0;S2表示是否允许售票员开门,其初值为0.semaphoere S1=S2=0;void Driver(){while(1){wait(S1);启动车辆;正常行车;到站停车;signal(S2);}}void Busman(){while(1){关车门;signal(S1);售票;wait(S2);开车门;}}main(){cobegin{Driver();Busman();}}2.桌子上有一只盘子,盘子中只能放一只水果。
爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。
用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);吃苹果;}}void son(){while(1){wait(S2);从盘子里拿走橘子;signal(S);吃橘子;}}main(){cobegin{father();mother();daughter();son();}}3.a,b两点之间是一段东西向的单行车道,现要设计一个自动管理系统,管理规则如下:(1)当ab之间有车辆在行驶时同方向的车可以同时驶入ab段,但另一方向的车必须在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点进入车辆的数量)和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+1;signal(S2);车辆从b点驶向a点;wait(S2);ba=ba-1;if(ba==0)signal(Sab);signal(S2);}}main(){cobegin{Pab();Pba();}}4. 将只读数据的进程称为“读者”进程,而写或修改数据的进程称为“写者”进程。
允许多个“读者”同时读数据,但不允许“写者”与其他“读者”或“写者”同时访问数据。
另外,要保证:一旦有“写者”等待时,新到达的“读者”必须等待,直到该“写者”完成数据访问为止。
试用P、V操作正确实现“读者”与“写者”的同步。
(第二类读者写者问题,信号量解决方法)【答案】为了使写者优先,可在原来的读优先算法的基础上增加一个互斥信号量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(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);perform write operation;signal(mutex);wait(wmutex);writecount--;if(writecount==0)signal(s);signal(wmutex);}}Main( ){cobegin{ reader();writer();}}5. 一条河上架设了由若干个桥墩组成的一座桥。
若一个桥墩只能站一个人,过河的人只能沿着桥向前走而不能向后退。
过河时,只要对岸无人过,就可以过。
但不允许河对岸的两个人同时过,以防止出现死锁。
请给出两个方向的人顺利过河的同步算法。
【答案】信号量s:互斥使用桥,初值为1信号量scount1:对方向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(scount1);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)signal(s);signal(scount2);}main(){cobegin{direct1(1);…direct1(n);direct2(1);…direct2(m);}}6、有一个仓库,可以存放A和B两种产品,但要求:(1)每次只能存入一种产品(A或B);(2)-N<A产品数量-B产品数量<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。
semaphore mutex=1,sa=M-1,sb=N-1;process puta(){ while(1){ 取一个产品;wait(sa);wait(mutex);将产品入库;signal(mutex);signal(sb);}}process putb(){ while(1){ 取一个产品;wait(sb);wait(mutex);将产品入库;signal(mutex);signal(sa);}}main(){ cobegin{puta();putb();}}。
OS进程同步(信号量典型题)
例题1(北京大学1999年)有一个仓库,可以存放A和B两种产品,仓库的存储空间足够大,但要求:(1)一次只能存人一种产品((A或B);(2)一N< A产品数量一B产品数量<M其中,N和M是正整数。
试用“存放A’和‘存放B’以及P操作和V操作描述产品A和产品B的人库过程。
解答:应先将表达式转换成制约条件,不可在程序中直接使用该表达式将表达式分解为:B产品数量—A产品数量<NA产品数量—B产品数量<M可这样理解:(1)若只放人A产品,而不放入B产品,则A产品最多可放M—1次便被阻塞,即A进程每操作一次就应当将计数器减1(计数器初值为M—1),当计数器值为0时,进程程A被阻塞;每当放入一个B产品,则可令A产品的计数器增加1,表明A产品可以多一次放入产品的机会;同理,(2)若只放人B产品,而不放入A产品,则B产品最多可;放N一1次便被阻塞,即A进程每操作一次就应当将计数器减1(计数器初值为N—1)。
当计数器值为0时,进程B被阻塞;每当放人一个A产品,则可令B产品的计数器增加1,表明B产品可以多一次放入产品的机会。
由此可见,该问题是一个同步控制问题。
又因为一次仅允许一种产品人库,设置信号量mutex控制粮进程互斥访问临界资源(仓库)。
过程如下:beginmutex:=1;Sa := M-1;Sb := N-1;ParbeginA产品beginrepeatP (Sa);P (mutex);A人库;V (mutex);V (Sb);Until false;End;B产品beginrepeatP (Sb);P (mutex);B人库;V (mutex);V (Sa);Until false;End;rend;例题2(华中理工大学1999年试题)设公共汽车上,司机和售票员的活动分别是:司机:售票员:启动车辆上乘客正常行车关车门到站停车售票开车门下乘客在汽车不断地到站,停车,行驶过程中,这两个活动有什么同步关系?并用信号灯的P, V操作实现它们的同步。
计算机操作系统习题及答案(4)
第4章进程同步与通信1)选择题(1)在操作系统中,P、V操作是一种_D__。
A. 机器指令B. 系统调用命令C. 作业控制命令D. 低级进程通信原语(2)若信号量S的初值为2,当前值为-1,则表示有_B__等待进程。
A. 0个B. l个C. 2个D. 3个(3)在直接通信方式中,系统提供两条通信原语进行发送和接收,其中Send原语中参数应是_C_。
A. sender,messageB. sender,mailboxC. receiver,messageD. receiver,mailbox(4)下述那个选项不是管程的组成部分_A__。
A. 管程外过程调用管程内数据结构的说明B. 管程内对数据结构进行操作的一组过程C. 局部于管程的共享数据说明D. 对局部于管程的数据结构设置初值的语句(5)某通信方式通过共享存储区来实现,其属于_D__。
A. 消息通信B. 低级通信C. 管道通信D. 高级通信(6)用P、V操作管理临界区时,信号量的初值应定义为__C__。
A. -1B. 0C. 1D. 任意值(7)临界区是_B__。
A. 一个缓冲区B. 一段程序C. 一段共享数据区D. 一个互斥资源(8)信箱通信是一种_D__通信方式。
A. 直接通信B. 信号量C. 低级通信D. 间接通信(9)对于两个并发进程,设互斥信号量为mutex,若mutex=0则__A_。
A. 表示有一个进程进入临界区B. 表示没有进程进入临界区C. 表示有一个进程进入临界区,另一个进程等待进入D. 表示有两个进程进入临界区(10)对信号量S执行V操作后,下述选项正确的是_C__。
A. 当S小于等于0时唤醒一个阻塞进程B. 当S小于0时唤醒一个阻塞进程C. 当S小于等于0时唤醒一个就绪进程D. 当S小于0时唤醒一个就绪进程(11)在消息缓冲通信中,消息队列属于_A__资源。
A. 临界B. 共享C. 永久D. 可剥夺(12)在消息缓冲通信机制中,使用的临界资源是_D__。
操作系统-进程同步-信号量练习题
1【单选题】用P、V操作管理临界区时,互斥信号量的初值应定义为( A)。
•A,1•B,0•C,-1•D,任意值2【单选题】在操作系统中,对信号量S的P原语操作定义中,使进程进入相应等待队列等待的条件是( )。
•A,S>0•B,S = 0•C,S<0•D,S<>0我的答案:C3【单选题】信号量S的初值为8,在S上执行了10次wait 操作,6次signal操作后,S的值为(D )。
•A,10•B,8•C,6•D,4P操作每执行一次,信号量减1;V操作每执行一次,信号量加1.所以答案为8-10+6 = 44【单选题】用V操作唤醒一个等待进程时,被唤醒进程的状态应变成( B)状态。
•A,执行•B,就绪•C,阻塞•D,挂起被唤醒的进程由等待状态变为就绪状态。
5【单选题】利用Wait和signal操作可以( )。
•A,实现进程互斥和同步•B,检测死锁•C,解除死锁•D,防止死锁我的答案:A6【单选题】两个并发进程,设互斥信号量mutex(初值为1),若信号量=0;则(B )•A,表示没有进程进入临界区•B,表示有一个进程进入临界区•C,表示有一个进程进入临界区,另一个进程等待进入•D,表示两个进程进入临界区临界区不允许两个进程同时进入,D选项明显错误。
mutex初值为1,表示允许一个进程进入临界区,当有一个进程进入临界区且没有进程等待进入时,mutex值减1,变为0。
7【单选题】V操作是对信号量执行加1操作,意味着释放一个单位资源,加1后如果信号量的值等于零,则从等待队列中唤醒一个进程,现进程变为等待状态,否则现进程继续进行。
•A,对•B,错我的答案:B8【单选题】有3个进程,两台打印机,用wait和sigual操作来实现互斥访问打印机,则信号量S的取值范围是( )•A,2,1,0,-1•B,3,2,1,0•C,2,1,0,-1,-2•D,1,0,-1,-2我的答案:如果n个进程共享两个打印机,信号量取值范围:-(n-2)~2;9【单选题】设与某资源相关的资源信号量K,初值为3,当前值为1,则可用资源个数为( ),等待资源的进程数为( )。
进程同步例题
1.若有一个文件F,供进程共享。
现把进程分成A、B两组,规定同组的进程可以同时读文件F,但当有A组(或B组)的进程在读文件F时不允许B组(或A组)的进程读文件F。
现定义两个计数器C1和C2分别记录A组和B组中读文件F的进程数。
当用P、V操作进行管理时需要三个信号量Sl、S2和SAB才能保证正确的并发执行。
程序结构如下:Begin Sl,S2,SAB:semaphore;C1,C2:integer;S1:=1;S2:=1 ;SAB:=1;C1:=0;C2:=0;cobeginprocess Ai(i=1,2,…)begin((1));C1:=C1十1;if Cl=1 then((2));((3));read file F((4))C1:=C1—1;if Cl=0 then((5))((6));end;process Bj(j=1,2,…)begin((7));C2:=C2十1;if C2=1 then((8));((9));read file F;((10));C2:=C2—1;if C2=0 then((11));((12));end;coend;end;回答:1.说明信号量S1,S2,SAB的作用2. 在上述程序的括号内填入适当的P、V操作,完善该程序。
2.一座山上有一个隧道,规定每次只允许一列火车过隧道,现在南方北方都有车要过隧道,如果把每个过隧道者看作一个进程,为保证安全.请用PV操作实现正确管理。
3.桌上有一个空盒,盒内只允许放一个水果,甲可向盒内放苹果,乙可向盒内放桔子。
丙专等吃盒中的苹果,丁专等吃盒中的桔子,若盒内已有水果,放者必须等待,若盒内没有自己要吃的水果,吃者必需等待,请回答下列问题:(1)请给出四个之间的同步互斥关系。
(2)用Pv操作来协调四人的关系,应设置的信号量及其初值。
(3)写出用PV操作实现四人正确活动的程序。
1.(1)S1是对计数器Cl的互斥信号量,S2是对计数器C2的互斥信号量,SAB是A、B两组互斥信号量。
操作系统 经典同步问题
2018年4月26日星期四10时2分37秒17进程操作总结续waitpsignalv操作必须成对出现有一个waitp操作就一定有一个signalv操作当为互斥操作时它们同处于同一进程当为同步操作时则不在同一进程中出现如果waits1和waits2两个操作在一起那么wait操作的顺序至关重要一个同步wait操作与一个互斥wait操作在一起时同步wait操作在互斥wait操作前
2014年1月5日星期日7时 23分483分48秒
2
Producer
producer: while (true) { /* produce item v */ b[in] = v; in++; }
2014年1月5日星期日7时 23分48秒 3
Consumer
consumer: while (true) { while (in <= out) /*do nothing */; w = b[out]; out++; /* consume item w */ }
2014年1月5日星期日7时 23分48秒 4
Producer/Consumer Problem
经典进程同步问题
04 03 02 01
解:(1)设置信号量的情况:
设互斥信号量wmutex,初值为1,用于实现写 者与其它写者或读者互斥地访问共享数据对象。
互斥信号量rmutex,初值为1,用于实现读者 互斥地访问读者计数器变量。
设整型变量RC,初值为0,用于对读者进行计 数。
(2)算法描述
,则P(wmutex); RC加1; V(rmutex); 读数据对象; P(rmutex); RC减1; 若RC=1,则v(wmutex); V(rmutex);
202X
操作系统原理 第三章 进程管 理之三
单击此处添加文本具体内容,简明扼要地 阐述你的观点
1
生产者与消费者问题 2、读者与写者问题 3、哲学家就餐问题
CONTENTS
01 单击此处添加标题
02 单击此处添加标题
2
生产者与消费者
引言:
问题描述:一组生产者进 程通过一个具有n个缓冲区 的缓冲池循环不断地向一 组消费者提供产品,怎样 才能正确描述这两个进程?
….. 思考; until false; end
14
02
时间内只允许一位哲学家试用。
03
设五个信号量用数组来描述:
var stick:arr[0,…,4] of
04
semaphore;
算法描述:
process 哲学家 begin
repeat p(stick[i]); p(stick[(i+1)mod 5]); …… 吃通心粉; …… p(stick[i]); p(stick[(i+1)mod 5]);
3
1 解:(1)设置信号量 的情况:
设同步信号量
2 empty,初值为n, 表示生产者有n个 空缓冲区可用。
操作系统进程同步
司机 P1: 启动 正常运行 到站停
售票员 P2: 关门 售票 开门
用P、V原语实现进程同步
解: 1)设close为进程P1的私有信号量,表示 售票员是否关门,stop为进程P2的私有 信号量,表示车辆是否停止到站。 2)设初始值close=1,stop=0,表示车正 在运行。 3)描述:
用P、V原语实现进程同步
工人2的活动: Do{ 加工一个车轮; 将车轮放入箱子中; }while(1)
工人3的活动 Do{ 从箱子中取1个车架; 从箱子中取2个车轮; 组装为一辆车; }while(1); 用信号量与PV操作实现3个工人的合作,要求不 包含死锁。
Hale Waihona Puke 答案Proess P2 While (true){ P(odd); P(mutex); getodd(); V(mutex); V(empty); countodd(); }
答案
Proess P2 While (true){ P(even); P(mutex); geteven(); V(mutex); V(empty); counteven(); } }coend
1每次只能存入一种产品a或b1每次只能存入2a产品数量b产品数量m3b产品数量a产品数量n期中mn是正整数试用pv操作描述产品a和b的入库过程种产品a或b有桥如图所示车流如箭头所示桥上不允许两车交汇但允许同一方向多辆车依次通行即桥上可以有多个同方向的依次通行即桥上可以有多个同方向的车
进程同步
补充
练习
P1: A:P(close)
启动 行车 停车 P2: B:P(stop)
开门
关门
V(close)
售票 Goto B
V(stop)
Goto A
操作系统自测题三(进程同步)
操作系统自测题三一选择题1.以下________操作系统中的技术是用来解决进程同步的。
A.管道B.管程C.通道D.DMA2.以下________不是操作系统的进程通信手段。
A.管道B.原语C.套接字D.文件映射3.如果有三个进程共享同一程序段,而且每次最多允许两个进程进入该程序段,则信号量的初值应设置为________。
A.3B.2C.1D.04.下面有关进程的描述,________是正确的。
A.进程执行的相对速度不能由进程自己来控制B.进程利用信号量的P、V操作可以交换大量的信息C.并发进程在访问共享资源时,不可能出现与时间有关的错误D.P、V操作不是原语操作5.信号可以用来实现进程之间的________A.调度B.同步与互斥C.同步D.互斥6.对于两个并发进程都想进入临界区,设互斥信号量为S,若某时S=0,表示________。
A.没有进程进入临界区B.有1个进程进入了临界区C.有2个进程进入了临界区D.有1个进程进入了临界区并且另一个进程正等待进入7.信箱通信是一种________方式。
A.直接通信B.间接通信C.低级通信D.信号量8.以下关于临界区的说法,________是正确的。
A.对于临界区,最重要的是判断哪个进程先进入B.若进程A已进入临界区,而进程B的优先级高于进程A,则进程B可以打断进程A而自己进入临界区C.信号量的初值非负,在其上只能做P、V操作D.两个互斥进程在临界区内,对共享变量的操作是相同的9.并发是指________。
A.可平行执行的进程B.可先后执行的进程C.可同时执行的进程D.不可中断的进程10.临界区是________。
A.一个缓冲区B.一段数据区C.一段程序D.栈11.进程在处理机上执行,它们的关系是________。
A.进程之间无关,系统是封闭的B.进程之间相互依赖、相互制约C.进程之间可能有关,也可能无关D.以上都不对12.在单处理机中,如果系统中有N个进程,则就绪队列中的进程个数最多的是________。
(完整版)操作系统-进程同步习题答案(22)
A.时间片完B.其它进程执行了唤醒原语
C.执行了V操作D.执行了P操作
5.在单处理机系统中,设系统中有n个进程(n>2),且当前处理机没有执行进程调度程序,下述情况哪些可能发生( BCD)。
A.没有运行的进程,有2个进程处于就绪状态,n个进程处于等待状态。
A.临界资源是非共享资源 B.临界资源是任意共享资源
C.临界资源是互斥共享资源 D.临界资源是同时共享资源
4.对进程间互斥地使用临界资源,进程可以(D)
A.互斥地进入临界区 B.互斥地进入各自的临界区
C.互斥地进入同一临界区 D.互斥地进入各自的同类资源的临界区
5.设两个进程共用一个临界资源的互斥信号量mutex,当mutex=1时表示( B )。
〈进程P1〉〈进程P2〉
y:=1; x:=1;
y:=y+2; x:=x+1;
V(S1); P(S1);
z:=y+1; x:=x+y;
P(S2);V(S2);
y:=z+y; z:=x+z;
解:
因为P1和P2是两个并发进程,所以进程调度程序调度P1和P2的顺序是不确定的。
这里不妨假设P1先执行。进程P1执行到语句P(S2)时,S2=-1,进程P1阻塞。此时,y=3,z=4。当进程调度程序调度到进程P2时,由于进程P1已执行了V(S1),进程P2在执行P(S1)时并未阻塞而继续执行,当执行到V(S2)时,将P1唤醒,然后执行最后一个语句z:=x+z,此时x=5,z=9。当进程P1再次被调度时,继续执行P1的最后一个语句,此时y=12,最终结果是:x=5,y=12,z=9。
A.4 B.3 C.5 D.0
[操作系统]经典进程同步问题题库
1、测量控制系统中的数据采集任务把所采集的数据送一单缓冲区;计算任务则从该缓冲区中取出数据并进行计算。
试写出利用信号量机制实现两者共享单缓冲区的同步算法。
Var Sempty,Sfull: semaphore:= 1,0BeginParbeginCollection:beginrepeat采集一个数据;wait(Sempty);数据放入缓冲区;signal(Sfull);untill false;end;Compute:beginrepeatwait(Sfull);从缓冲区取出数据;signal(Sempty);计算;` until false;end;ParendEnd2、有一阅览室,共有100个座位。
读者进入时必须先在一种登记表上登记,该表为每一座位列一个表目,包括座号和读者姓名。
读者离开时要注销掉登记内容。
试用wait和signal原语描述读者进程的同步问题。
var mutex, readcount :semaphore := 1,100; BeginParbeginProcess Reader:beginrepeatwait(readcount);wait(mutex);<填入座号和姓名完成登记>;signal(mutex);<阅读>wait(mutex)<删除登记表中的相关表项,完成注销>signal(mutex);signal(readcount);until false;end;parend;End;1)、桌上有一空盘,只允许放一个水果,爸爸专向盘中放苹果,妈妈专向盘中放桔子;女儿专吃盘中的苹果,儿子专吃盘中的桔子;试用wait 和signal原语实现爸爸、妈妈、女儿、儿子之间的同步问题。
var Sempty, Sapple, Sorange,: semaphore:= 1,0,0; beginparbeginFather: beginrepeatwait(Sempty);<put apple in tray>;signal(Sapple);until false;end;Mother: beginrepeatwait(Sempty);<put orange in tray>;signal(Sorange);until false;end;Son: beginrepeatwait(Sorange);<take orange>;signal(Sempty);until false;end;Daughter: beginrepeatwait(Sapple);<take apple>;signal(Sempty);until false;end;parend;end;1、在4×100米接力赛中,4个运动员之间存在如下关系,运动员1跑到终点把接力棒交给运动员2;运动员2一开始处于等待状态,在接到运动员1传来的接力棒后才能往前跑,他跑完100米后交给运动员3,运动员3也只有在接到运动员2传来的棒后才能跑,他跑完100米后交给运动员4,运动员4接到棒后跑完全程。
