进程同步练习
进程同步习题全
![进程同步习题全](https://img.taocdn.com/s3/m/0c821b492b160b4e767fcfe7.png)
process W1 begin L3: P(s1); y:=B; V(mutex); 打印y goto L3 end;
进程管理
process R2 begin L2:从键盘上读数据送x2; P(mutex); B:=x2; V(s2); goto L2 end;
进程管理
【例】进程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
进程同步练习(答案)
![进程同步练习(答案)](https://img.taocdn.com/s3/m/179924c0185f312b3169a45177232f60ddcce7cd.png)
一、选择题1、我们把在一段时间内,只允许一个进程访问的资源,称为临界资源,因此,我们可以得出下列论述,请选择一条正确的论述。
A 、对临界资源是不能实现资源共享的B 、对临界资源,应采取互斥访问方式,来实现共享C 、为临界资源配上相应的设备控制块后,便能被共享D 、对临界资源应采取同时访问方式,来实现共享2、在多进程的系统中,为了保证公共变量的完整性,各进程应互斥进入临界区。
所谓临界区是指_______。
A 、一个缓冲区B 、一段数据区C 、同步机制D 、一段程序3、在操作系统中,信号量表示资源实体,信号量表示资源实体,是一个与队列有关的是一个与队列有关的_________变量,其值仅能用P 、V 操作来改变。
A 、实体B 、整形C 、布尔型D 、记录型4、用P 、V 操作可以解决_______互斥问题。
A 、某些B 、一个C 、一切D 、大多数5、对于记录型信号量,在执行一次P 操作时,信号量值应当_____A__A_(3)___;当其值为______B_B_(4)__时,进程应阻塞。
在执行V 操作时,信号量的值应当______C C (2)___;当其值为____D_D_(3)__时,应唤醒阻塞队列中的进程。
A 、C :(1)不变;(2)加1;(3)减1;(4)加指定数值;(5)减指定数值B 、D :(1)大于0;(2)大于等于0;(3)小于等于0;(4)小于0 6、对于两个并发进程,其互斥信号量为mutex ;若mutex=0,则表明_______。
A 、没有进程进入临界区B 、有一个进程进入临界区但没进程处于阻塞状态C 、一个进程进入临界区而另一个进程正处于等待进入临界区状态D 、有两个进程进入临界区7、设有5个进程共享一个互斥段,如果允许有3个进程同时进入互斥段,则所采用的互斥信号量的初值应是__________。
A 、5 B 、3 C 、1 D 、0 8、N 个进程共享某一临界资源,则互斥信号量的取值范围为_________。
第7章进程同步(含答案)
![第7章进程同步(含答案)](https://img.taocdn.com/s3/m/1779caf871fe910ef12df889.png)
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。(类似生产者-消费者)
进程同步经典习题
![进程同步经典习题](https://img.taocdn.com/s3/m/945e25c3541810a6f524ccbff121dd36a32dc42b.png)
进程同步经典习题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个座位。
第二章进程同步典型习题
![第二章进程同步典型习题](https://img.taocdn.com/s3/m/2ac0c31efad6195f312ba63c.png)
east() {
p(emutex); if e=0 then p(wait); e++; v(emutex); 车辆过桥; p(emutex); e--; if e=0 then v(wait); v(emutex);
west() {
p(wmutex); if w=0 then p(wait); w++; v(wmutex); 车辆过桥; p(wmutex); w--; if w=0 then v(wait); v(wmutex);
process E->W; ; begin …… P(S1); ( ); 过桥; 过桥; V(S2); ( ); …… end; ;
process W->E; ; begin …… P(S2); ( ); 过桥; 过桥; V(S1); ( ); …… end; ;
3.设有三个进程A、B、C,其中A与B构成一 3.设有三个进程A、B、C,其中A 设有三个进程A、B、C,其中 对生产者和消费者,共享一个由1个缓冲区组 对生产者和消费者,共享一个由1 成的缓冲池;B与C也构成一对生产者和消费 成的缓冲池;B与 ;B 者,共享另一个由1个缓冲区组成的缓冲池。 共享另一个由1个缓冲区组成的缓冲池。 用PV操作描述它们的同步关系。 PV操作描述它们的同步关系。 操作描述它们的同步关系
1.答: 答 1)各进程之间的关系是互斥 ) 2)可定义一个互斥信号量 S,S的初值为 1。用 PV操作管理时 S可能 ) , 的初值为 。 操作管理时 可能 的取值为 1、0及<0, 、 及 , 这些值的含义是: 这些值的含义是: S=1时表示无车辆在 段行驶,若有某车辆欲进人AB段则立即可以 时表示无车辆在AB段行驶,若有某车辆欲进人 段则立即可以 时表示无车辆在 段行驶 进入。 进入。 S=0时表示已有一车辆正在 AB段行驶,这时任何其它车辆欲进入 段行驶, 时表示已有一车辆正在 段行驶 AB段都必须等待。 段都必须等待。 段都必须等待 S<0时其绝对值 表示在 A点等待进入 AB段行驶的车辆数。 时其绝对值|S|表示在 点等待进入 段行驶的车辆数。 时其绝对值 段行驶的车辆数 3)用PV操作管理时进程的程序如下: 操作管理时进程的程序如下: ) 操作管理时进程的程序如下 begin 到达A点 到达 点; P(S); ( ) 段行驶; 在AB段行驶; 段行驶 驶出B点 驶出 点; V(S); ( ) end
第二章进程同步典型习题
![第二章进程同步典型习题](https://img.taocdn.com/s3/m/368afbeb19e8b8f67c1cb909.png)
1.答: 答 1)各进程之间的关系是互斥 ) 2)可定义一个互斥信号量 S,S的初值为 1.用 PV操作管理时 S可能 ) , 的初值为 . 操作管理时 可能 的取值为 1,0及<0, , 及 , 这些值的含义是: 这些值的含义是: S=1时表示无车辆在 段行驶,若有某车辆欲进人AB段则立即可以 时表示无车辆在AB段行驶,若有某车辆欲进人 段则立即可以 时表示无车辆在 段行驶 进入. 进入. S=0时表示已有一车辆正在 AB段行驶,这时任何其它车辆欲进入 段行驶, 时表示已有一车辆正在 段行驶 AB段都必须等待. 段都必须等待. 段都必须等待 S<0时其绝对值 表示在 A点等待进入 AB段行驶的车辆数. 时其绝对值|S|表示在 点等待进入 段行驶的车辆数. 时其绝对值 段行驶的车辆数 3)用PV操作管理时进程的程序如下: 操作管理时进程的程序如下: ) 操作管理时进程的程序如下 begin 到达A点 到达 点; P(S); ( ) 段行驶; 在AB段行驶; 段行驶 驶出B点 驶出 点; V(S); ( ) end
思考:某高校计算机系开设网络课并安排上机实习, 思考:某高校计算机系开设网络课并安排上机实习,假
设机房有共有2m台机器, 名学生选该课, 设机房有共有 台机器,有2n名学生选该课,规定: 台机器 名学生选该课 规定: 1)每2个学生组成一组,各占一台机器,合作完成 个学生组成一组, ) 个学生组成一组 各占一台机器, 上机实习 2)只有一组 个学生到齐,并且此时机房有空闲机 个学生到齐, )只有一组2个学生到齐 器时, 器时,该组学生才能进入机房 3)上机实习由一名教师检查,检查完毕,一组学生 )上机实习由一名教师检查,检查完毕, 同时离开机房 设计相应的数据结构,并用wait,signal操作模拟上面 设计相应的数据结构,并用 , 操作模拟上面 实习过程. 提示:除了有学生和教师进程外, 实习过程. (提示:除了有学生和教师进程外,还应 该有门卫进程) 该有门卫进程)
操作系统-进程同步-信号量练习题
![操作系统-进程同步-信号量练习题](https://img.taocdn.com/s3/m/c70b397a770bf78a652954b5.png)
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,则可用资源个数为( ),等待资源的进程数为( )。
进程同步例题
![进程同步例题](https://img.taocdn.com/s3/m/94651fba960590c69ec37655.png)
(一)图书馆有100个座位,每位进入图书馆的读者要在登记表上登记,退出时要在登记表上注销。
要几个程序?有多少个进程?(答:一个程序;为每个读者设一个进程)(1)当图书馆中没有座位时,后到的读者在图书馆为等待(阻塞)(2)当图书馆中没有座位时,后到的读者不等待,立即回家。
解(1 )设信号量:S=100; MUTEX=1 P(S)P(MUTEX)登记V(MUTEX)阅读P(MUTEX)注销V(MUTEX)V(S) 解(2)设整型变量COUNT=100; 信号量:MUTEX=1;P(MUTEX);IF (COUNT==0){ V(MUTEX);RETURN;}COUNT=COUNT-1;登记V(MUTEX);阅读P(MUTEX);COUNT=COUNT+1;V(MUTEX); RETURN;(二)一家四人父、母、儿子、女儿围桌而坐;桌上有一个水果盘;(1)当水果盘空时,父亲可以放香蕉或者母亲可以放苹果,但盘中已有水果时,就不能放,父母等待。
当盘中有香蕉时,女儿可吃香蕉,否则,女儿等待;当盘中有苹果时,儿子可吃,否则,儿子等待。
解设信号量:SE=1 (空盘子);SA=0 (放了苹果的盘子);SB=0 (放了香蕉的盘子)父亲REPEAT剥香蕉P(SE)放香蕉V(SB)UNTIL FALSE 母亲REPEAT削苹果P(SE)放苹果V(SA) UNTIL FALSE儿子P(SA) 拿苹果V(SE) 吃苹果女儿P(SB) 拿香蕉V(SE) 吃香蕉(2)解:再增加两个信号量:SF=0, SM=0父亲REPEATP(SF)剥香蕉P(SE)放香蕉V(SB)UNTIL FALSE 母亲REPEATP(SM)削苹果P(SE)放苹果V(SA) UNTIL FALSE儿子V(SM) P(SA) 拿苹果V(SE) 吃苹果女儿V(SF) P(SB) 拿香蕉V(SE) 吃香蕉(三)有一个超市,最多可容纳N个人进入购物,当N个顾客满员时,后到的顾客在超市外等待;超市中只有一个收银员。
进程同步例题
![进程同步例题](https://img.taocdn.com/s3/m/a16ad62bb4daa58da0114a48.png)
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两组互斥信号量。
进程同步练习
![进程同步练习](https://img.taocdn.com/s3/m/a90b80692b160b4e767fcf7d.png)
• 题目4: • 一个快餐店,有两个厨师,一个做中餐,一个做 西餐,厨师做完一份食物就放在窗口,由顾客自 取。窗口只能放下一份食物。到店顾客分两类: 要么只吃中餐,要么只吃西餐。试实现进程同步。 • 分析: • 窗口只能放一份食物,是临界资源,设一互斥信 号量mutex,初值为1 • 两个资源信号量:中餐S1,西餐S2,初值都为0 • 四个进程:中餐厨师,西餐厨师,中餐顾客,西 餐顾客
——处理机调度练习
题目1:假设有4道作业,它们的提交时刻及执行时间 由下表给出: 计算在单道程序环境下,采用先来先服务调度算法 和最短作业优先调度算法时的周转时间和平均带权 周转时间,并指出它们的调度顺序。
(1)先来先服务调度: 顺序:提交时间 开始执行时间 结束时间 1、 Ts1=10:00 10:00 Te1=12:00 2、 Ts2=10:20 12:00 Te2=13:00 3、 Ts3=10:40 13:00 Te3=13:30 4、 Ts4=10:50 13:30 Te4=13:50 T=0.25*(2+2.7+2.8+3)=2.625h W=0.25*(2/2+2.7/1+2.8/0.5+3/0.3)=4.825 (2)最短作业优先调度: 顺序:提交时间 开始执行时间 结束时间
• V操作 即Singal(S) V(S){ s.value++; if(S.value <= 0){从此资源相关的等待队列中唤醒一个进程;} }
• 进程同步问题的求解依据 ——信号量的两种应用
1.实现进程互斥
• • • • 分析题目中的资源、互斥资源,设置信号量及初值 分析题目中的进程,及其行为,进程访问的资源 利用所设置的信号量控制进程对资源的访问 必要时增加共享变量(如计数器),进程对共享变 量的访问是互斥的
进程同步练习
![进程同步练习](https://img.taocdn.com/s3/m/8d042425bcd126fff7050b97.png)
5 利用信号量来描述前趋关系
s3
s1
s2
s5Leabharlann s6s4School of Information Science and Engineering,Lanzhou University OS Autumn 2009 5
2,4,5,6,8
2.桌上有一空盘,一次只允许放一个水果。爸爸 向盘中方苹果或橘子,儿子专等橘子吃,女儿 专等苹果吃。用信号量实现三人的同步。 (三个并发进程R、W1、W2共享单缓冲区B。 进程R从输入设备上读入一个自然数存放到B 中,若B中的数是奇数,则由进程W1取出打 印,若B中的数是偶数,则由进程W2取出打 印。用信号量机制实现同步,使这三个进程能 正确执行。)
6 用P,V操作解决司机与售票员的问题
司机进程: while (true){ 启动车辆 正常驾驶 售票员进程: while (true){ 关门 售票
到站停车 开门 }… of Information Science and Engineering,Lanzhou University }… School
进程r从输入设备上读入一个自然数存放到b中若b中的数是奇数则由进程w1取出打印若b中的数是偶数则由进程w2取出打印
练习
1.用wait,signal操作解决下图之同步问题:
get
copy
put
f
s
t
g
1
School of Information Science and Engineering,Lanzhou University OS Autumn 2009
(完整版)操作系统-进程同步习题答案(22)
![(完整版)操作系统-进程同步习题答案(22)](https://img.taocdn.com/s3/m/96d4844133d4b14e852468ea.png)
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
进程同步例题
![进程同步例题](https://img.taocdn.com/s3/m/d5b69cc8bb4cf7ec4afed094.png)
例1:医生进程Doctor,化验进程Lab共同完成病人的诊治工作,医生开化验单,化验进程进行化验,医生根据化验结果进行诊断。
请用记录型信号量和P、V 操作实现两进程的同步。
例2 吃水果问题
例3、某集装箱仓库共有100个仓位,用同一辆吊车负责集装箱的吊进和吊出。
现有一批集装箱运来进仓,另有货主不断前来提货(按仓位顺序进出),设进仓用过程PUTIN表示,出仓用过程GETOUT表示,请用P、V操作协调上述工作。
例4、有一独木桥,每次只允许一人过桥,现在桥的南北两端随时有人要过桥(PASS),为保证安全,请用P、V操作解决如下问题:
1)只要桥上无人则允许任一方的一人过桥,桥上有人则等待。
2)两边的人交替过桥。
即某一方一人过桥后要让另一方的一个人过桥,桥上
有人则等待。
例5、有三个进程PA、PB、PC合作解决文件打印问题:PA将文件记录从磁盘读入主存的缓冲区1,每执行一次读一个记录;PB将缓冲区1的内容复制到缓冲区2,每执行一次复制一个记录;PC将缓冲区2的内容打印出来,每执行一次打印一个记录。
缓冲区的大小等于一个记录的大小。
请用P、V操作协调三个进程的工作。
例6 少林寺问题。
操作系统_进程同步算法习题精选
![操作系统_进程同步算法习题精选](https://img.taocdn.com/s3/m/2e7768ccaa00b52acfc7cac1.png)
A1: while (1) { P(Sin[1]); P(Sin[2]); 将数据放入缓冲区 V(Sout[1]); V(Sout[2]); }
Bi: while (1) { P(Sout[i]); 从缓冲区取数 V(Sin[i]); }
向目标前进一步:
• 设缓冲区的大小为m • 有一个发送进程A1 • 有二个接收进程B1、B2
Bi: while (1) { P(Sout[i]); V(mutex); 从缓冲区取数 P(mutex); V(Sin[i]); };
例题6
a,b两点之间是一段东西向的单行车道,现要设计一个自
动管理系统,管理规则如下: (1)当ab之间有车辆在行驶时同方向的车可以同时驶入ab 段,但另一方向的车必须在ab段外等待; (2)当ab之间无车辆在行驶时,到达a点(或b点)的车辆 可以进入ab段,但不能从a点和b点同时驶入; (3)当某方向在ab段行驶的车辆驶出了ab段且暂无车辆进
到达目标
• 设缓冲区的大小为m • 有n1个发送进程A1….An1 • 有n2个接收进程B1…Bn2
• 设有n2个信号量Sin[n2] 初值均为m • 设有n2个信号量Sout[n2] 初值均为0
Aj: while (1) { for(i=1;i<=n2;i++) P(Sin[i]); P(mutex); 将数据放入缓冲区 V(mutex); for(i=1;i<=n2;i++) V(Sout[2]); }
思考题: 如果S和T是由多个缓冲区组成的 缓冲池,上述算法将如何修改?
【例题3】
桌上有一空盘,最多允许存放一只水 果。爸爸可向盘中放一个苹果或放一个桔 子,儿子专等吃盘中的桔子,女儿专等吃 苹果。 试用P、V操作实现爸爸、儿子、女儿 三个并发进程的同步。
进程同步习题三
![进程同步习题三](https://img.taocdn.com/s3/m/37b69918a216147917112897.png)
进程同步练习题三
1. 读者-写者问题中,(1) 实现公平访问:如果有写者等待,即使有读者在读,新的读者也必须等待在该写者之后才能读(即读者写者按照到达次序排队)。
该同步算法如何实现?(2) 读者-写者问题中,如果允许同时读访问的读者数目最大为N。
如何实现同步算法?
2. 哲学家进餐问题中,如果要求单号哲学家先拿左手筷子,而偶数哲学家先拿右手筷子,如何实现同步算法?
3. 由于道路施工,仅留下一个单行道供两边的车辆轮流通过。
实现同步算法,使得两边轮流通行各n辆车(一边通行n辆车后另一方向通行n辆车)。
4. 一个笼子每次只能放入一个动物。
猎手放入老虎,农夫放入猪。
动物园取走老虎,饭店取走猪。
实现他们之间的同步算法。
进程同步典型例题
![进程同步典型例题](https://img.taocdn.com/s3/m/cb02a434e009581b6ad9eb21.png)
进程同步练习题1. 在公共汽车上,司机和售票员的工作流程如图所示。
为保证乘客的安全,司机和售票员应密切配合协调工作。
请用信号量来实现司机与售票员之间的同步。
①约束:怎么密切配合协调工作才能保证安全呢?a) 关车门之后再启动车辆;利用前驱图解释b) 到站停车之后再开车门;②根据约束定义信号量;关车门和启动车辆需要一个信号量进行同步S1;到站停车和开车门之间需要一个信号量进行同步S2;③建立几个进程呢?a) 为司机建立一个进程Driver ;b) 为售票员建立一个进程Conductor;Driver :Repeat启动车辆;正常行驶;到站停车;Until false;Conductor:Repeat关车门;开车门;Until false;④加入同步关系:Var s1,s2:semorphore=0,0;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;③建立进程?爸爸:妈妈:女儿:儿子:Repeat repeat repeat repeat取一个苹果;取一个橘子;从盘子取一个苹果;从盘子取一个橘放入盘子;放入盘子吃苹果;吃橘子;Until false; Until false; Until false; Until false;④ 加入同步关系。
进程同步练习题
![进程同步练习题](https://img.taocdn.com/s3/m/3b89d64c011ca300a6c390e5.png)
进程同步练习题1.第二类读者写者问题,信号量解决方法2.复印室里有一个操作员为顾客复印资料,有5把椅子供顾客休息等待复印。
如果没有顾客,则操作员休息。
当顾客来到复印室时,如果有空椅子则坐下来,并唤醒复印操作员;如果没有空椅子则必须离开复印室。
3.如果有三个进程R、W1、W2共享一个缓冲器B,而B中每次只能存放一个数。
当缓冲器中无数时,进程R可以将从输入设备上读入的数存放到缓冲器中。
若存放到缓冲器中的是奇数,则允许进程W1将其取出打印;若存放到缓冲器中的是偶数,则允许进程W2将其取出打印。
同时规定:进程R必须等缓冲区中的数被取出打印后才能再存放一个数;进程W1或W2对每次存入缓冲器的数只能打印一次;W1和W2都不能从空缓冲中取数。
写出这三个并发进程能正确工作的程序。
4.现有四个进程R1、R2、W1、W2,它们共享可以存放一个数的缓冲器B。
进程R1每次把来自键盘的一个数存入缓冲器B中,供进程W1打印输出;进程R2每次从磁盘上读一个数存放到缓冲器B中,供进程W2打印输出。
为防止数据的丢失和重复打印,问怎样用信号量操作来协调这四个进程的并发执行。
5.有一个仓库,可以存放A和B两种产品,但要求:(1)每次只能存入一种产品(A或B);(2)-N<A产品数量-B产品数量<M。
其中,N和M是正整数。
试用同步算法描述产品A与产品B的入库过程。
6.设有两个生产者进程A、B和一个销售者进程C,他们共享一个无限大的仓库,生产者每次循环生产一个产品,然后入库供销售;销售者每次循环从仓库中取出一个产品进行销售。
如果不允许同时入库,也不允许边入库边出库;而且要求生产和消费A产品和B产品的件数都满足以下关系:-n≤A的件数-B的件数≤m,其中n、m是正整数。
1. 第二类读者写者问题,信号量解决方法答:为了使写者优先,可在原来的读优先算法的基础上增加一个互斥信号量s,初值为1,使得当至少有一个写者准备访问共享对象时,它可以使后续的读者进程等待完成;整型变量writecount,初值为0,用来对写者进行计数;互斥信号量mutex,初值为1,用来实现多个读者对写者writecount进行互斥访问。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6 用P,V操作解决司机与售票员的问题 操作解决司机与售票员的问题 司机进程: 司机进程: while (true){ 启动车辆 正常驾驶 售票员进程: 售票员进程: while (true){ 关门 售票
到站停车 开门 }… }… of Information Science and Engineering,Lanzhou University School
School of Information Science and Engineering,Lanzhou University OS Autumn 2009 2
3 P0源源不断往传送带上放置 零件或 零 源源不断往传送带上放置A零件或 源源不断往传送带上放置 零件或B零 传送带上最多放N个零件 如果是A 个零件。 件,传送带上最多放 个零件。如果是 零件, 取下加工 如果是B零件 取下加工; 零件, 零件,P1取下加工;如果是 零件,P2 取下加工。 取下加工。用信号量实现三个进程的同 步
OS Autumn 2009
6
7对于下面的程序: 对于下面的程序: 对于下面的程序
int result; void dec () { int i; for(i=1,i<=10;i++) result--; } void main() { result=100;parbegin (dec (), dec (), dec ()); wri of Information Science and Engineering,Lanzhou University OS Autumn 2009
3
4 物业中心有 (N>1)位维修员,一本一次只 物业中心有N( )位维修员, 允许一人填写的维修记录表。 允许一人填写的维修记录表。如没有维修任务 则维修员睡觉。住户有维修请求时,到物业中 则维修员睡觉。住户有维修请求时, 心在维修记录表上进行登记, 心在维修记录表上进行登记,每人每次只能登 记一个请求。当累计有三个维修请求时, 记一个请求。当累计有三个维修请求时,唤醒 维修员去进行维修。维修员完成维修任务后, 维修员去进行维修。维修员完成维修任务后, 回到物业中心在维修记录上填写维修结果。 回到物业中心在维修记录上填写维修结果。如 没有新的维修请求或请求少于三个时, 没有新的维修请求或请求少于三个时,维修员 休息睡觉。 休息睡觉。请用信号量机制解决维修员与住户 的同步问题。 的同步问题。
School of Information Science and Engineering,Lanzhou University OS Autumn 2009 7
8第二类读者写者问题 第二类读者写者问题 1)多个读者可以同时进行读 ) 2)写者必须互斥(只允许一个写者写, )写者必须互斥(只允许一个写者写, 也不能读者写者同时进行) 也不能读者写者同时进行) 3)写者优先于读者(一旦有写者,则 )写者优先于读者(一旦有写者, 后续读者必须等待, 后续读者必须等待,唤醒时优先考虑 写者) 写者)
练习
1.用wait,signal操作解决下图之同步问题 用 操作解决下图之同步问题: 操作解决下图之同步问题
get
copy
put
f
s
t
g
1
School of Information Science and Engineering,Lanzhou University OS Autumn 2009
2.桌上有一空盘,一次只允许放一个水果。爸爸 桌上有一空盘,一次只允许放一个水果。 桌上有一空盘 向盘中方苹果或橘子,儿子专等橘子吃, 向盘中方苹果或橘子,儿子专等橘子吃,女儿 专等苹果吃。用信号量实现三人的同步。 专等苹果吃。用信号量实现三人的同步。 三个并发进程R、 共享单缓冲区B。 (三个并发进程 、W1、W2共享单缓冲区 。 、 共享单缓冲区 进程R从输入设备上读入一个自然数存放到 从输入设备上读入一个自然数存放到B 进程 从输入设备上读入一个自然数存放到 中的数是奇数, 中,若B中的数是奇数,则由进程 中的数是奇数 则由进程W1取出打 取出打 中的数是偶数, 印,若B中的数是偶数,则由进程 中的数是偶数 则由进程W2取出打 取出打 用信号量机制实现同步, 印。用信号量机制实现同步,使这三个进程能 正确执行。) 正确执行。)
假设进程可以以任意相对速度执行, 假设进程可以以任意相对速度执行,且一个 值由机器指令载入寄存器后只能减1。 值由机器指令载入寄存器后只能减 。确定 此并发程序执行后变量result最终值的上限 此并发程序执行后变量 最终值的上限 和下限并解释原因。 和下限并解释原因。要使此并发程序有确定 的结果,用信号量如何实现。 的结果,用信号量如何实现。
School of Information Science and Engineering,Lanzhou University OS Autumn 2009
8
School of Information Science and Engineering,Lanzhou University OS Autumn 2009 4
5 利用信号量来描述前趋关系
s3
s1
s2
s5
s6
s4
School of Information Science and Engineering,Lanzhou University OS Autumn 2009 5