[操作系统]经典进程同步问题题库
4.2 进程同步习题
【例】现有4个进程R1,R2,W1,W2。它们共享 可以存放一个数据的缓冲器B。进程R1每次把磁 盘上读出的一个数据存到缓冲器B中,供进程W1 打印输出;进程R2每次从键盘上读一个数据存放 到缓冲器B,供W2打印输出。当一个进程把数据 存放到缓冲器后,在该数据还没有打印输出之前 不准任何进程再想缓冲器中存数据。当一个进程 已把缓冲器中的数据打印输出后,在缓冲器中还 没有存如新数据之前不准任何进程再从缓冲器中 取数打印。问怎样用PV操作使这4个进程并发执 行时能相互协作地工作?
• Semaphore Customers = 0; • Semaphore Barber = 0; • Mutex accessSeats = 1; • int NumberOfFreeSeats = N; //total number of seats
Customer() { while(true) Barbers() { { P(accessSeats); //lock while(true) if(NumberOfFreeSeats >0) { { P(customers); NumberOfFreeSeats--; //等待顾客,睡眠 V(customers);//通知理发师 P(accessSeats); //lock V(accessSeats);//unlock NumberOfFreeSeats++; P(barbers);//等待理发师 V(accessSeats); //unlock 顾客理发 理发中… } V(barbers) ; else }//while V(accessSeats); } }//while }
3 两个进程可以改为 semaphore S1=1 semaphore S2=0 Process X L1:P(S1) 使用资源r V(S2) goto L1
第7章进程同步(含答案)
5、用P、V操作管理临界区时,任何一个进程在进入临界区之前应调用(P)操作,退出临界区时应调用(V)操作。
6、在多道程序系统中,进程之间存在着的不同制约关系可以划分为两类:(同步)与(互斥)。(同步)指进程间具有一定逻辑关系;(互斥)是指进程间在使用共享资源方面的约束关系。
INT BUFFER-SIZE=N;
INT SF=0;/*BUFFER中是否有可取的信息*/
INT SE=N;/* BUFFER中是否有空位置以存放信息*/
MAIN()
{
GET()
COMPUTE()
}
4、桌上有一空盘,允许存放一只水果,爸爸可向盘中放苹果,也可向盘中放桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一只水果供吃者取出,请用P、V原语实现爸爸、儿子、女儿三个并发进程的同步。
{ int b2=0:/*表示进程S2是否可以开始执行*/
int b3=0:/*表示进程S3是否可以开始执行*/
int b4=0:/*表示进程S4是否可以开始执行*/
Main()
s1();
s2();
s3()
s4()
}
6、 读者/写者问题。有一数据区为多个进程所共享,假设一些进程只能对该数据区完成读操作(读者),而另一些进程只能对其完成写操作(写者),读者和写者要遵守以下的约束:
Int SF=0;/*信号量SF用于表示缓冲区中有无可供计算的信息。*/
Main()
{
get();
compute();}
3、**在视频通信系统中,由进程PA采集一帧图像信息并存入环形缓冲区buffer,进程PB从buffer中取一帧数据进行处理,假设buffer的大小为n,试用P、V操作实现PA和PB。(类似生产者-消费者)
进程同步经典习题
进程同步经典习题1.某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。
若把一个购票者看作一个进程,请用PV操作实现管理。
解:定义一个信号量S,初值为20parbeginprocess pl(l=1,2,……)beginwait(S);进入售票厅;购票;退出;signal(S)end2.桌上有一空盘,允许存放一个水果,爸爸可向盘内放苹果,妈妈可向盘内放桔子,儿子专等吃盘内的桔子,女儿专等吃盘中的苹果,请用P、V 操作实现爸爸、妈妈、儿子、女儿四个并发进程的同步与互斥。
int S=1;int Sa=0;int Sb=0;main(){cobeginfather();mather();son();daughter();coend}father() mather(){while(1) { while(1){p(S); {p(S) ;将一个苹果放入盘中将一个桔子放入盘中V(Sa);} V(Sb);}} }son() daughter(){ while(1) { while(1){p(Sb); { p(Sa);从盘中取出桔子从盘中取出苹果V(S);吃桔子;} V(S);吃苹果;}}3.生产围棋的工人不小心把相等数量的黑子和白子混装在一个盒子里,现在要用自动分拣系统把黑子和白子分开,该系统由两个并发执行的进程PA和PB组成,系统功能如下:(1)PA专拣黑子,PB专拣白子;(2)每个进程每次只拣一个子,当一个进程拣子时,不允许另一个进程去拣子;(3)当一个进程拣一个子(黑或白)后,必须让另一个进程去拣一个子(白或黑)请回答:①这两个并发进程之间的关系是同步还是互斥②写出PV操作管理时应定义的信号量及其初值。
③根据定义的信号量,写出用PV操作管理两个并发进程的程序答:①两个进程之间是同步关系②定义两个信号量S1和S2,初值为1和0③process PA process PAbegin beginrepeat repeatwait(S1) wait(S2)拣黑子拣白子signal(S2) signal(S1)until false until falseend end4.有一阅览室,读者进入时必须先在一张登记表上登记,该表为每一座位列出一个表目,包括座号、姓名,读者离开时要注销登记信息;假若阅览室共有100个座位。
进程同步例题
1. 若有一个文件F ,供进程共享。
现把进程分成A 、B 两组,规定同组的进程可以同时读文件F ,但当有A 组(或B 组)的进程在读文件F 时不允许B 组(或A 组)的进程读文件F 。
现定义两个计数器C1和C2分别记录A 组和B 组中读文件F 的进程数。
当用P 、V 操作进行管理时需要三个信号量Sl Sl、、S2和SAB 才能保证正确的并发执行。
程序结构如下:Begin Sl ,S2S2,,SAB SAB::semaphore semaphore;;C1C1,,C2C2::integer integer;;S1:=1;S2:=1 ;SAB SAB::=1;C1=1;C1::=0=0;;C2C2::=0=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=C2——1;if C2=0 then((11));((12)); end ;coend ;end ;回答:1.说明信号量S1,S2,SAB 的作用的作用2. 在上述程序的括号内填入适当的P 、V 操作,完善该程序。
操作,完善该程序。
2.一座山上有一个隧道,规定每次只允许一列火车过隧道,现在南方北方都有车要过隧道,如果把每个过隧道者看作一个进程,为保证安全.请用PV 操作实现正确管理。
理。
3.桌上有一个空盒,盒内只允许放一个水果,甲可向盒内放苹果,乙可向盒内放桔子。
丙专等吃盒中的苹果,丁专等吃盒中的桔子,若盒内已有水果,放者必须等待,若盒内没有自己要吃的水果,吃者必需等待,请回答下列问题:(1)(1)请给出四个之间的同步互斥关系。
操作系统-进程同步-信号量练习题
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,则可用资源个数为( ),等待资源的进程数为( )。
操作系统 经典同步问题
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
计算机操作系统进程同步练习题
int stack[10];int top;void getspace(){int free;free=stack[top];top--;cout<<" free="<<free<<endl;}void release(int free){top++;stack[top]=free;}main(){for(top=0;top<10;top++)stack[top]=-1;stack[0]=288;stack[1]=121;stack[2]=85;stack[3]=32;stack[4]=6;top=4;cobegin{release(100);getspace();}cout<<" top="<<top<<endl;for(;top>=0;top--)cout<<"stack["<<top<<"]="<<stack[top]<<endl;}进程同步练习题1. 第二类读者写者问题,信号量解决方法答:为了使写者优先,可在原来的读优先算法的基础上增加一个互斥信号量s,初值为1,使得当至少有一个写者准备访问共享对象时,它可以使后续的读者进程等待完成;整型变量writecount,初值为0,用来对写者进行计数;互斥信号量mutex,初值为1,用来实现多个读者对写者writecount进行互斥访问。
Process reader(){ while(1){wait(s);wait(rmutex);if(readcount==0)wait(wmutex);readcount++;signal(rmutex);signal(s);perform read operation;wait(rmutex);readcount--;if(readcount==0)signal(wmutex);signal(rmutex);}}Process writer(){ while(1){wait(mutex);if(writecount==0)wait(s);writecount++;signal(mutex);wait(wmutex);perform write operation;signal(wmutex);wait(mutex);writecount--;if(writecount==0)signal(s);signal(mutex);}}Main( ){cobegin{ reader();writer(); }}2. 复印室里有一个操作员为顾客复印资料,有5把椅子供顾客休息等待复印。
进程同步习题全
进程管理
【例】进程P1使用缓冲区buffer向进程P2,P3,P4发 送消息,要求每当P1向buffer中发消息时,只有 当P2,P3,P4进程都读取这条消息后才可再向 buffer中发送消息。利用PV原语描述进程的动作 序列
P2 P1 buffer P3
P4
进程管理
【解答】设置信号量初值S1=S2=S3=0,S=3 进程P1 进程P2 进程P3 P4 P(S) P(S1) P(S2) P(S3) P(S) 读消息 读消息 读消息 P(S) V(S) V(S) V(S) 发送消息到 Buffer V(S1) V(S2)
进程管理
生产者i repeat P(empty) P(mutex) putdata V(mutex) V(full)
消费者i repeat P(full) P(mutex) getdata V(mutex) V(empty)
进程管理
【例】多个生产者,多个消费者,N个buffer,多次循环存 取buffer,即多个生产者不断进行putdata操作,多个消费 者不断进行getdata操作 【解答】 只有buffer有空间时才能进行putdata操作 只有buffer有数据时才能进行getdata操作 不允许多个消费者和多个生产者同时操作 信号量 full:表示buffer是否有数据,初值为0 empty:表示buffer是否为空,初值为n mutex:表示buffer是否可操作,初值为1
进程管理
操作流程 <PUT类进程> repeat 判断buff1是否有空间,没有则等待 是否可操作buff1 PUT 设置buff1可操作标志 设置buff1有数据的标志 until false
进程管理
<MOVE类进程> repeat 判断buff1是否有数据,没有则等待 判断buff2是否有空间,没有则等待 是否可操作buff1 是否可操作buff2 MOVE 设置buff1可操作标志 设置buff2可操作标志 设置buff1有空间标志 设置buff2有空间标志
进程同步习题讲解
12.用P、V操作可以解决 A 互斥问题。 A. 一切 B. 某些 C. 正确 D. 错误 13.一个进程被唤醒意味着 D 。 A. 该进程重新占有了CPU B. 它的优先 权变为最大 C. 其PCB移至等待队列队首 D. 进程变为 就绪状态
26. 对于记录型信号量,在执行一次wait操作时,信号量 的值应当(A),当其值为(B)时,进程阻塞。在执行 signal操作时,信号量的值应当为(C),当其值为(D) 时,应唤醒阻塞队列中的进程。 A:(1)不变;(2)加1;(3)减1;(4)加指定数值; (5)减指定数值。 B:(1)大于0;(2)小于0;(3)大于等于0;(4)小 于等于0. C:(1)不变;(2)加1;(3)减1;(4)加指定数值; (5)减指定数值。 D:(1)大于0;(2)小于0;(3)大于等于0;(4)小 于等于0. 27. 用信号量S实现对系统中4台打印机的互斥使用, S.value的初值应设置为(A),若S.value的初值为-1, 则表示S.L队列中有(B)个等待进程。 A:(1)1;(2)0;(3)-1;(4)4;(5)-4 B:(1)1;(2)2;(3)3;(4)4;(5)5;(6)6; (7)0。
ቤተ መጻሕፍቲ ባይዱ
判断题
1.一个临界资源可以对应多个临界区。(√) 2.互斥地使用临界资源是通过互斥地进入临界区实现的。 (X) 表达不确切,应该是互斥的进入同类临界区。 3.同步信号量的初值一般为1。(X) 互斥信号量的初值一般为1;而同步信号量的初值应视具体情 况而定。 4.生产者-消费者问题是一个既有同步又有互斥的问题。 (√) 5.进程A、B共享变量x,需要互斥执行;进程B、C共享变 量y,B、C也需要互斥执行,因此,进程A、C必须互斥执 行。(X) 不具有传递性。 6. 单道程序系统中程序的执行也需要同步和互斥。(X) 单道程序系统不具有并发性,因此不需要同步和互斥。
新版进程同步典型例题
新版进程同步典型例题(总11页)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March进程同步练习题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。
操作系统进程同步
司机 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接到棒后跑完全程。
进程同步典型例题(操作系统)
进程同步练习题1.在公共汽车上,司机和售票员的工作流程如图所示。
为保证乘客的安全,司机和售票员应密切配合协调工作。
请用信号量来实现司机与售票员之间的同步。
司机售票员图司机和售票员工作流程图①约束:怎么密切配合协调工作才能保证安全呢?a)关车门之后再启动车辆;利用前驱图解释b)到站停车之后再开车门;②根据约束定义信号量;关车门和启动车辆需要一个信号量进行同步S1;到站停车和开车门之间需要一个信号量进行同步S2;③建立几个进程呢?a)为司机建立一个进程Driver;b)为售票员建立一个进程Conductor;Driver:Repeat启动车辆;正常行驶;到站停车;Until false;Conductor:Repeat关车门;售票;开车门;Until false;④加入同步关系:Driver:RepeatWait (s1);启动车辆;正常行驶;到站停车;Signal(s2)Until false;Conductor:Repeat关车门;Signal(s1);售票;Wait(s2)开车门;Until false;main(){Driver();Conductor ();}2.桌子上有一只盘子,盘子中只能放一只水果。
爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,一个儿子专等吃盘子中的橘子,一个女儿专等吃盘子中的苹果。
用PV操作实现他们之间的同步机制。
分析:①约束:a)爸爸和妈妈竞争盘子,往盘子放水果,爸爸在放时,妈妈等待,或者相反;b)爸爸和女儿要同步,即爸爸放完苹果之后通知女儿来吃;同时女儿吃完之后要通知盘子可用;c)妈妈和儿子要同步,即妈妈放完橘子之后通知儿子来吃;同时儿子吃完之后要通知盘子可用;②经上述分析可知:需要3个信号量:S1表示临界资源盘子,初值1;爸爸和女儿需要一个信号量进行同步S2=0 妈妈和儿子需要一个信号量进行同步S3=0;③建立进程?爸爸:妈妈:女儿:儿子:取一个苹果;取一个橘子;从盘子取一个苹果;从盘子取一个橘子;放入盘子;放入盘子吃苹果;吃橘子;Until false; Until false; Until false; Until false;④加入同步关系。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、测量控制系统中的数据采集任务把所采集的数据送一单缓冲区;计算任务则从该缓冲区中取出数据并进行计算。
试写出利用信号量机制实现两者共享单缓冲区的同步算法。
Var Sempty,Sfull: semaphore:= 1,0
Begin
Parbegin
Collection:begin
repeat
采集一个数据;
wait(Sempty);
数据放入缓冲区;
signal(Sfull);
untill false;
end;
Compute:begin
repeat
wait(Sfull);
从缓冲区取出数据;
signal(Sempty);
计算;
` until false;
end;
Parend
End
2、有一阅览室,共有100个座位。
读者进入时必须先在一种登记表上登记,该表为每一座位列一个表目,包括座号和读者姓名。
读者离开时要注销掉登记内容。
试用wait和signal原语描述读者进程的同步问题。
var mutex, readcount :semaphore := 1,100; Begin
Parbegin
Process Reader:begin
repeat
wait(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; begin
parbegin
Father: begin
repeat
wait(Sempty);
<put apple in tray>;
signal(Sapple);
until false;
end;
Mother: begin
repeat
wait(Sempty);
<put orange in tray>;
signal(Sorange);
until false;
end;
Son: begin
repeat
wait(Sorange);
<take orange>;
signal(Sempty);
until false;
end;
Daughter: begin
repeat
wait(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接到棒后跑完全程。
请试用信号量机制对其上过程进行分析。
var s1,s2,s3:semaphpre:=0,0,0;
begin
parbegin
Athlete1: begin
Run 100m;
signal(s1);
end;
Athlete2: begin
wait(s1);
Run 100m;
signal(s2);
end;
Athlete3: begin
wait(s2);
Run 100m;
signal(s3);
end;
Athlete4: begin
wait(s3);
Run 100m;
end;
parend;
end
2、在公共汽车上,司机和售票员各行其职,司机负责开车和到站停车;售票员负责售票和开、关车门;当售票员关好车门后驾驶员才能开车行驶。
试用wait和signal操作实现司机和售票员的同步。
var s1,s2:semaphore:=0,0;
begin
parbegin
Process Driver
begin
repeat
<go right>;
<stop bus>;
signal(s2);
wait(s1);
until false;
end;
Process BookingClerk;
begin
repeat
<ticketing>;
wait(s2);
<open the door>;
<close the door>;
signal(s1);
until false
end;
parend;
end;
1、假设有3个并发进程P,Q,R,其中P负责从输入设备上读入信息,并传送给Q,Q将信息加工后传送给R,R负责打印输出。
进程P,Q共享一个有m个缓冲区组成的缓冲池;进程Q,R 共享一个有n个缓冲区组成的缓冲池(假设缓冲池足够大,进程间每次传输信息的单位均小于等于缓冲区长度),请写出满足上述条件的并发程序。
(12分)
var
mutex1,mutex2,Sip,Siq,Soq,Sor:semaphore:=1,1,m, 0,n,0;
begin
parbegin
Process P
begin
repeat
<读入信息>
wait(Sip);
wait(mutex1);
<数据放入缓冲区>
signal(mutex1);
signal(Siq);
until false
end;
Process Q
begin
repeat
wait(Siq);
wait(mutex1);
<从缓冲区中取出数据>
signal(mutex1);
signal(Sip);
<数据处理〉
wait(Soq);
wait(mutex2);
<处理后的数据放入缓冲区>
signal(mutex2);
signal(Sor);
until false
end;
Process R
repeat
wait(Sor);
wait(mutex2);
<把数据送入打印机完成打印>;
signal(mutex2);
signal(Soq);
until false
end
parend
end
2、有一只铁笼子,每次只能放入一只动物,猎手向笼子里放入老虎,农民向笼子里放入猪;动物园等待取笼子里的老虎,饭店等待取笼子里的猪。
现请用wait和signal操作写出能同步执行的程序。
var Sempty, Stiger, Spig,: semaphore:= 1,0,0; begin
parbegin
Hunter: begin
repeat
wait(Sempty);
<put tiger in cage>;
signal(Stiger);
until false;
end;
Farmer: begin
repeat
wait(Sempty);
<put pig in cage>;
signal(Spig);
until false;
end;
Zoo: begin
repeat
wait(Stiger);
<take tiger>;
signal(Sempty);
until false;
end;
Hotel: begin
repeat
wait(Spig);
<take pig>;
signal(Sempty); until false;
end;
parend;
end;。