进程同步经典习题
进程同步练习(答案)

一、选择题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章进程同步(含答案)

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. 用P、V操作管理临界区时,信号量的初值一般应定义为( C )。
A.–1B.0C.1D.任意值2. 有m个进程共享同一临界资源,若使用信号量机制实现对一临界资源的互斥访问,则信号量的变化范围是( A )。
A.1至–(m-1)B.1至m-1C.1至–mD.1至m3. 在下面的叙述中,正确的是(C )。
A.临界资源是非共享资源B.临界资源是任意共享资源C.临界资源是互斥共享资源D.临界资源是同时共享资源4. 对进程间互斥地使用临界资源,进程可以(D )A.互斥地进入临界区B.互斥地进入各自的临界区C.互斥地进入同一临界区D.互斥地进入各自的同类资源的临界区5. 设两个进程共用一个临界资源的互斥信号量mutex,当mutex=1时表示(B )。
A.一个进程进入了临界区,另一个进程等待B.没有一个进程进入临界区C.两个进程都进入了临界区D.两个进程都在等待6. 设两个进程共用一个临界资源的互斥信号量mutex,当mutex=-1时表示(A )。
A.一个进程进入了临界区,另一个进程等待B.没有一个进程进入临界区C.两个进程都进入了临界区D.两个进程都在等待7.当一进程因在记录型信号量S上执行P(S)操作而被阻塞后,S的值为(B )。
A.>0B.<0C.≥0D.≤08.当一进程因在记录型信号量S上执行V(S)操作而导致唤醒另一进程后,S的值为( D )。
A.>0B.<0C.≥0D.≤09.如果信号量的当前值为-4,则表示系统中在该信号量上有(A )个进程等待。
A.4B.3C.5D.010.若有4个进程共享同一程序段,而且每次最多允许3个进程进入该程序段,则信号量的变化范围是( B )。
A. 3,2,1,0B. 3,2,1,0,-1C. 4,3,2,1,0D. 2,1,0,-1,-211.若信号S的初值为2,当前值为-1,则表示有( B )个等待进程?A.0B.1C.2D.312.如果有三个进程共享同一互斥段,而且每次最多允许两个进程进入该互斥段,则信号量的初值应设置为( C )。
进程同步经典习题

进程同步经典习题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个座位。
进程同步问题例题

吃水果问题
• 问题描述:桌上有一只盘子,每次只能放入或 取出一个水果。现有许多苹果和桔子。一家四 口各行其职。爸爸专向盘中放苹果,妈妈专向 盘中放桔子,儿子专等吃盘中的桔子,女儿专 等吃盘中的苹果。请给出四人之间的同步关系, 并用PV操作实现四人正确活动的程序。
四人之间的关系
爸爸,妈妈要互斥使用盘子,所以两者 之间是互斥关系; 爸爸放的苹果,女儿吃,所以两者是同 步关系; 妈妈放的桔子,儿子吃,所以两者也是 同步关系。
• • • • •
empty,orange,apple:semaphore empty=1; orange=0; apple=0; parbegin
• Father: • • • • • •
Begin L1:P(empty); L1 P(empty); 放置苹果; V(apple); Goto L1; End;
到站停车;
图书馆阅览室问题
问题描述:假定阅览室最多可同时容纳 100个人阅读,读者进入时,必须在阅 览室门口的一个登记表上登记,内容包 括姓名、座号等,离开时要撤掉登记内 容。用P、V操作描述读者进程的同步算 法。
Sem:mutex=1,readcount=100; readeri()(i=1,2,…k) Procedure readeri()(i=1,2, k) { while(true){ P(readcount) ; p(mutex); 登记 v(mutex); 阅读 p(mutex); 撤消登记 v(mutex); v(readcount); }
Mother:
• • • • • • Begin L2: P(empty); 放置桔子; V(orange); Goto L2; End;
Son:
第二章进程同步典型习题

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操作模拟上面 设计相应的数据结构,并用 , 操作模拟上面 实习过程. 提示:除了有学生和教师进程外, 实习过程. (提示:除了有学生和教师进程外,还应 该有门卫进程) 该有门卫进程)
进程同步练习题

进程同步练习题(总9页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--进程同步练习题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进行互斥访问。
进程同步例题

(一)图书馆有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个顾客满员时,后到的顾客在超市外等待;超市中只有一个收银员。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。
若把一个购票者看作一个进程,请用PV操作实现管理。
解:定义一个信号量S,初值为20
parbegin
process pl(l=1,2,……)
begin
wait(S);
进入售票厅;
购票;
退出;
signal(S)
end
2.桌上有一空盘,允许存放一个水果,爸爸可向盘内放苹果,妈妈可向盘内放桔子,儿子专等吃盘内的桔子,女儿专等吃盘中的苹果,请用P、V 操作实现爸爸、妈妈、儿子、女儿四个并发进程的同步与互斥。
int S=1;int Sa=0;int Sb=0;
main()
{cobegin
father();
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 PA
begin begin
repeat repeat
wait(S1) wait(S2)
拣黑子拣白子
signal(S2) signal(S1)
until false until false
end end
4.有一阅览室,读者进入时必须先在一张登记表上登记,该表为每一座位列出一个表目,包括座号、姓名,读者离开时要注销登记信息;假若阅览室共有100个座位。
试用信号量和PV操作来实现用户进程的同步算法。
解:设置如下3个信号量
seat:表示阅览室中空座位数,其初值为100.
readers:记录阅览室中的读者数,其初值为0.
mutex:互斥信号量(对于读者而言,阅览室是一个临界资源,任何时刻最多只有一位读者填写登记表或撤销登记表),初值为1.
对应的算法描述如下:
semaphore seats=100;
semaphore readers=0;
semaphore mutex=1;
main()
{
cobegin
{
读者进入阅览室进程readerini(i=1,2,…,n)
while(true)
{
p(seats); //递减空座位数
p(mutex);
填写登记表
进入阅览室;
v(mutex); //允许其他读者访问阅览室
v(readers); //递增读者数
}
读者离开阅览室进程readerouti (i=1,2, …,n)
while(true)
{
p(readers);
p(mutex);
撤销登记;
离开阅览室;
v(mutex);
v(seats);
}
}
coend
}
解法二:
解:var name:array[1..100]of A
A=record
number:integer;
name:string;
end
for i:=1 to 100 do
{A[i].number:=i;A[i].name:=null;}
mutex,seatcount:semaphore;
mutex:=1;seacount:=100;
cobegin
process readeri(var readername:string)(i=1,2…)
begin
p(seatcount);
p(mutex);
for i:=1 to 100 do i++
if A[i].name=null then A[i].name:= readername;
reader get the seat number=i;
v(mutex);
进入阅览室座位号i,坐下读书;
p(mutex);
A[i].name:=null;
V(mutex);
V(seatcount);
离开阅览室;
end
coend
5.三个进程P1、P2、P3互斥使用一个包含N(N>0)个单元的缓冲区。
P1每次用produce()生成一个正整数并用put()送入缓冲区某一空单元中;P2每次用getodd()从缓冲区中取出一个奇数并用countodd()统计奇数个数;P3每次用geteven()从缓冲区中取出一个偶数并用counteven()统计偶数个数。
请用信号量机制实现这三个进程的同步与互斥活动,并说明所定义信号量的含义。
要求用伪代码描述。
[2009
年全国考研试题]
解:缓冲区是一互斥信号量,因此设互斥信号量mutex
P1、P2因为奇数的设置与取用而同步,设同步信号量odd;P1、P3因为偶数的设置与取用而同步,设同步信号量even;P1、P2、P3因为共享缓冲区,设同步信号量empty。
semaphore mutex=1; //缓冲区互斥信号量
semaphore odd=0, even=0 ; //奇数、偶数进程的同步信号量
semaphore empty=N ; //空缓冲区单元个数信号量
main( )
cobegin{
process P1
while(true){
number=produce();
p(empty); //递减空缓冲区的单元个数
p(mutex); //互斥访问缓冲区
put( );
v(mutex); //恢复访问缓冲区
if number%2==0 v(even); //为偶数允许取偶数
else v(odd); //为奇数允许取奇数
}
process P2 process P3
while(true){ while(true){
p(odd); //互斥奇数p(even);
p(mutex); //互斥访问缓冲区p(mutex);
getodd( ); getevend( );
v(mutex); //恢复访问缓冲区v(mutex);
v(empty); //递增空缓冲区的单元个数v(empty);
countodd(); } counteven();}
}
coend。