P、V操作习题答案
- 格式:doc
- 大小:19.24 KB
- 文档页数:7
进程管理习题答案一.选择题1.在进程管理中,当时进程从阻塞状态变为就绪状态。
A. 进程被进程调度程序选中 B.等待某一事件C.等待的事件发生 D.时间片用完答:C2.分配到必要的资源并获得处理机时的进程状态是 .A.就绪状态 B.执行状态C.阻塞状态 D.撤消状态答:B3.P、V操作是。
A.两条低级进程通信原语 B.两组不同的机器指令C.两条系统调用命令 D.两条高级进程通信原语答:A4.对进程的管理和控制使用。
A.指令 B.原语C.信号量 D.信箱通信答:B5.进程的并发执行是指若干个进程.A.同时执行 B.在执行的时间上是重叠的C.在执行的时间上是不可重叠的 D.共享系统资源答:B6.若P、V操作的信号量S初值为2,当前值为-1,则表示有等待进程。
A.0个 B.1个 C .2个 D.3个答:B7.进程的三个基本状态在一定条件下可以相互转化,进程由就绪状态变为运行状态的条件是①;由运行状态变为阻塞状态的条件是②。
A.时间片用完 B.等待某事件发生C.等待的某事件己发生 D.被进程调度程序选中答,①D ②B8.下列的进程状态变化中,变化是不可能发生的.A.运行一就绪 B.运行一等待C.等待一运行 D.等待一就绪答:C9.一个运行的进程用完了分配给它的时间片后,它的状态变为 .A.就绪 B.等待C.运行 D.由用户自己确定答:A10.用P、V操作管理临界区时,信号量的初值应定义为。
A.一1 B.0 C.1 D.任意值答:C11.用V操作唤醒一个等待进程时,被唤醒进程的状态变为.A.等待 B.就绪 C.运行 D.完成答:B12.进程间的同步是指进程间在逻辑上的相互关系.A.联接 B.制约 C。
继续 D.调用答:B13.是一种只能进行P操作和V操作的特殊变量.A.调度 B.进程 C.同步 D.信号量答:D14.下面对进程的描述中,错误的是。
A.进程是动态的概念 B.进程执行需要处理机C.进程是有生命期的 D.进程是指令的集合答:D15.下面的叙述中正确的是.A.操作系统的一个重要概念是进程,因此不同进程所执行的代码也一定不同。
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,则可用资源个数为( ),等待资源的进程数为( )。
一、用P、V操作描述前趋关系。
P1、P2、P3、P4、P5、P6为一组合作进程,其前趋图如图2.3所示,试用P、V 操作描述这6个进程的同步。
p23图2.3说明任务启动后P1先执行,当它结束后P2、P3可以开始执行,P2完成后P4、P5可以开始执行,仅当P3、P4、P5都执行完后,P6才能开始执行。
为了确保这一执行顺序,设置5个同步信号量n、摄、f3、f4、g分别表示进程P1、P2、P3、P4、P5是否执行完成,其初值均为0。
这6个进程的同步描述如下:图2.3 描述进程执行先后次序的前趋图int f1=0; /*表示进程P1是否执行完成*/int f2=0; /*表示进程P2是否执行完成*/int f3=0; /*表示进程P3是否执行完成*/int f4=0; /*表示进程P4是否执行完成*/int f5=0; /*表示进程P5是否执行完成*/main(){cobeginP1( );P2( );P3( );P4( );P5( );P6( );coend}P1 ( ){┇v(f1);v(f1):}P2 ( ){p(f1);┇v(f2);v(f2);)P3 ( ){p(f1);┇v(f3);}P4( ){p(f2);┇v(f4);}P5 ( ){p(f2);┇v(f5);}P6( ){p(f3);p(f4);p(f5);┇}二、生产者-消费者问题p25生产者-消费者问题是最著名的进程同步问题。
它描述了一组生产者向一组消费者提供产品,它们共享一个有界缓冲区,生产者向其中投放产品,消费者从中取得产品。
生产者-消费者问题是许多相互合作进程的一种抽象。
例如,在输入时,输入进程是生产者,计算进程是消费者;在输出时,计算进程是生产者,打印进程是消费者。
因此,该问题具有很大实用价值。
我们把一个长度为n的有界缓冲区(n>0)与一群生产者进程P1、P2、…、Pm和一群消费者进程C1、C2、…、Ck 联系起来,如图2.4所示。
1、有一个报箱为A、B两人共同使用,每次只能装一份报纸。
A订阅《科技报》,B 订阅《新民晚报》,投递员C、D分属科技报社和新民晚报社,试用P、V操作写出他们的同步执行程序。
var s,science,night:semaphore:=1,0,0;beginparbeginA: begin while(true) C: begin while(true){ wait(science); { wait(s);取科技报; 投递科技报;signal(s); signal(science);} }end; end;B: begin while(true) D: begin while(true){wait(night); {wait(s);取新民晚报; 投递新民晚报;signal(s); signal(night);} }end; end;parend;end.2、设有两个优先级相同的进程P1和P2如下。
信号量S1和S2的初值均为0,试问P1、P2并发执行后,x、y、z的值各是多少?请写出判断的过程。
进程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中各语句执行的前趋图为:3的执行8可以并发执行:(17,z的值为9。
(212,z的值为9。
varmutex : semaphere;信号量,用于互斥full : semaphere; 信号量,用于同步table : array 0..n-1 of item; 登记表procedure reader; 读者进程beginP(full);P(mutex);Register_name(table);V(mutex);Reading;P(mutex);Delet_name(table);V(mutex);V(full)end;beginseminitsal(mutex.v,1; full.v,100); 初始化cobeginreader;reader;...coendend.司机的活动:启动车辆,正常行车,到站停车。
第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.两条低级进程通信原语B.两组不同的机器指令C.两条系统调用命令D.两条高级进程通信原语2.设系统中有n(n>2)个进程,且当前不在执行进程调度程序,试考虑下述4种情况,不可能发生的情况是 A 。
A.没有运行进程,有2个就绪进程,n个进程处于等待状态。
B.有1个运行进程,没有就绪进程,n-1个进程处于等待状态。
C.有1个运行进程,有1个就绪进程,n-2个进程处理等待状态。
D.有1个运行进程,n-1个就绪进程,没有进程处于等待状态。
3.若P、V操作的信号量S初值为2,当前值为-1,则表示有 B 等待进程。
A. 0个 B. 1个 C. 2个 D. 3个4.用V操作唤醒一个等待进程时,被唤醒进程的状态变为 B 。
A.等待B.就绪C.运行D.完成5.用P、V操作可以解决 A互斥问题。
A.一切B.某些C.正确D.错误6.多道程序环境下,操作系统分配资源以C 为基本单位。
A.程序B.指令C.进程D.作业7.从下面对临界区的论述中,选出一条正确的论述。
(1)临界区是指进程中用于实现进程互斥的那段代码。
(2)临界区是指进程中用于实现进程同步的那段代码。
(3)临界区是指进程中用于实现进程通信的那段代码。
(4)临界区是指进程中用于访问共享资源的那段代码。
(5)临界区是指进程中访问临界资源的那段代码。
8.(A)是一种只能由wait和signal操作所改变的整型变量,(A)可用于实现进程的(B)和(C),(B)是排他性访问临界资源。
A:(1)控制变量;(2)锁;(3)整型信号量;(4)记录型信号量。
B:(1)同步;(2)通信;(3)调度;(4)互斥。
C:(1)同步;(2)通信;(3)调度;(4)互斥。
9.对于记录型信号量,在执行一次wait操作时,信号量的值应当(A),当其值为(B)时,进程阻塞。
在执行signal操作时,信号量的值应当为(C),当其值为(D)时,应唤醒阻塞队列中的进程。
操作系统PV操作习题操作系统PV操作习题-----------------------------------------------------1、引言在操作系统中,PV操作(也称作P操作和V操作)是用于进程同步的一种常见机制。
P操作用于获取或申请资源,V操作用于释放资源。
本文将为您提供一些关于PV操作的习题,以帮助您巩固相关的概念和原理。
2、PV操作基本概念2.1 P操作描述P操作的基本概念和含义,以及在实际应用中的具体场景。
2.2 V操作解释V操作的基本概念和含义,并举例说明其在实际问题中的应用。
3、PV操作习题集3.1 习题一、生产者-消费者问题描述一个典型的生产者-消费者问题,并通过使用P操作和V操作对其进行解决。
3.2 习题二、读者-写者问题解释一个典型的读者-写者问题,并使用PV操作来实现对该问题的解决。
3.3 习题三、哲学家就餐问题描述哲学家就餐问题的场景,并说明如何采用PV操作来解决这一问题。
4、常见PV操作错误4.1 死锁解释什么是死锁以及为什么会发生死锁现象,同时提供一些避免死锁的方法。
4.2 饥饿描述什么是饥饿,以及一些可能导致饥饿的常见原因,并提供解决饥饿问题的一些策略。
5、附录本文档附带以下附件:- 习题的解答和详细说明- 相关的代码示例6、法律名词及注释在本文档中,涉及的法律名词及其注释如下:- PV操作:即P操作和V操作,用于进程同步的一种机制。
- 生产者-消费者问题:一种经典的并发控制问题,涉及到生产者和消费者之间的资源竞争。
- 读者-写者问题:一种并发控制问题,涉及到多个读者和写者对共享资源的访问。
- 哲学家就餐问题:一种经典的并发控制问题,涉及到多个哲学家通过共享的餐具进行就餐。
••信号量应用问题:End;Pare nd.写出程序描述下列前趋关系。
1 endS2->S4, S1->S3, S1->S2,S2->S5 , S3->S6, S4->S7,2•请用信号量实现4X 10(4人,每S5->S7, S6->S7人100Var s1,s2, s3,s4:semaphore:=0, 0米, )接力赛的同步过程。
提示:前趋图同步问题,可设0, 0; 4个进程,三个信号量,进程 1 只设BeginV操作,进程4只设ParbeginP操作,其余进程先做P操作再做V P1:begi n 操作。
Var s1,s2,s3:semaphore:=0, 0, 0;.; …Begin V(s1);Parbegin V(s1);Athlete1: begin End;Run 100m; P2: beginV(s1); P(s1);End; …;Athlete2: begin V(s2);P(s1) V(s2);Run 100m; End;V(s2); P3: beginEnd; P(s1)Athlete3: begin …P(s2) ;V(s3)P(s2);Athlete4: begin …P(s3);V(s4);P(s2);Parend ..;endV(s4);3.设公共汽车上,司机和售票员的活 End;动分别是: P6: begin司机:售票员: P(s3)启动车辆 ..xx 乘客V(s4)正常行车关车门到站停车售票 End;P7:begin 开车门P(s4);P(s4)下乘客P(s4)在汽车不断地到站、停车、行驶过 END;程中,这两个活动有什么同步关系? CoEnd;END;请用信号量机制实现他们的同步。
假定初始状态为停车状态,引入信/- 生产者消费者问题:和 Run :号量Stopl BEGIN.桌上有一个可以 xx 两个水果的Run 100m; End;V(s3); P4: beginEnd; Run 100m; P5: beginEnd;盘子,每次只能放或取一个水果爸semaphore Stop,Run;爸放苹果妈妈放橘子,两个儿子Stop:=Run:=0; 吃苹果,两个女儿吃橘子。
…信号量应用问题: End;Parend .写出程序描述下列前趋关系。
1 endS2->S4, S1->S3, S1->S2,S2->S5 , S3->S6, S4->S7,2. 请用信号量实现4×100(4人,每S5->S7, S6->S7人100Var s1,s2, s3,s4:semaphore:=0, 0, 米)接力赛的同步过程。
提示:前趋图同步问题,可设0, 0; 4个进程,三个信号量,进程1只设BeginV操作,进程4只设 Parbegin P操作,其余进程先做P操作再做V P1: begin 操作。
Var s1,s2,s3:semaphore:=0, 0, 0; .; …Begin V(s1);Parbegin V(s1);Athlete1: begin End;Run 100m; P2: beginV(s1); P(s1);End; … ;Athlete2: begin V(s2);P(s1) V(s2);Run 100m; End;V(s2); P3: beginEnd; P(s1)Athlete3: begin … P(s2) ; V(s3)Run 100m; End;V(s3); P4: beginEnd; P(s2);Athlete4: begin … P(s3); V(s4);Run 100m; P5: beginEnd; P(s2);Parend ..;endV(s4);3.设公共汽车上,司机和售票员的活End;动分别是: P6: begin司机:售票员: P(s3)启动车辆 .. 上乘客V(s4) 正常行车关车门到站停车售票 End;P7:begin 开车门 P(s4);P(s4); 下乘客 P(s4);在汽车不断地到站、停车、行驶过 END;程中,这两个活动有什么同步关系? CoEnd;END;请用信号量机制实现他们的同步。
假定初始状态为停车状态,引入信/-生产者消费者问题:和Run:号量Stop1 BEGIN.桌上有一个可以容纳两个水果的盘子,每次只能放或取一个水果。
semaphore Stop,Run;爸爸放苹果妈妈放橘子,两个儿子 Stop:=Run:=0;吃苹果,两个女儿吃橘子。
试用信 CoBegin号量和 BEGINP、V操作,编写实现爸爸、 Driver:妈妈、儿子和女儿的并发工作程 Repea序。
tMutex实现互斥放或取水果。
Waemptyit(Run);盘子可放水果数Apple 盘子中放的苹果数启Orange 动车辆;盘子中放的橘子数Semaphore mutex=1; 正Semaphore empty=2; 常行驶;Semahpore apple=0; 到Semahpore orange=0; 站停车;Main() Si{gnal(Stop);Cobegin UntilFather(); False;Mother(); END;Son();Conductor:BEGINDaughter();Repea; tCoend) 上}乘客;Father() 关{车门;While(true) Si{ p(empty) gnal(Run);P(mutex)售放苹果票;V(mutex) WaV(apple)} it(Stop);} 开Mother() 车门;{下While(true) 乘客;{ p(empty) UntilP(mutex)False;放橘子配车间CoEnd V(mutex)}V(orange)}Provider_A() }{ while(true) Son(){{ p(emptya);p(sa); While(true){ p(apple) p(mutex);P(mutex) 将零件A放入仓库;v(mutex); 取苹果v(fulla); V(mutex)v(sb); V(empty)}}}}Daughter()Provider_B() {{ while(true) While(true){ p(orange) { p(emptyb);P(mutex) p(sb);取橘子 p(mutex);V(mutex) 将零件B放入仓库;V(empty)} v(mutex);}v(fullb);2 ,A和B v(sa); 、有一个仓库存放两种零件 m最大库容量各为个。
有一车间不断 }进行装配,每次各取一个。
A和B }地取为了避免零件锈蚀,遵循线入库者先 Assembling_Shop()出库的原则。
有两组供应商分别不断 { while(true){ p(fulla); ,为保证齐A地供应和B(每次一个)套和合理库存,当某种零件的数量比 p(fullb);(另一种数量超过nn<m)个时,暂停 p(mutex);对数量大的零件的进货,集中补充数装配零件;操作正确实现、量少的零件。
试用PV v(mutex);之。
v(emptya);v(emptyb);} mutex=1, semaphorefulla=fullb=0, emptya=emptyb=m, }3、有一个仓库,可以存放Asa=sb=n; 和B两种产品,仓库的存储空间足够大,但要 main()求: { CoBeginProvider_A(); 每次只能存入一种产品(X或 / Y);零件/。
<M产品数量供应商A-B产品数量 -N<AM和时正整数。
其中,N / Provider_B();、P试用“存放A”、“存放B”和供应商B零件/的入库过B与产品A操作描述产品V装 Assembling_Shop(); //程。
说明进程间的相互制约关系,应设置哪些信号量?B,则A A-B<M说明:如果只放A不放则用P、V操作写出其同步算法;,最多可放M-1个,如果多放一个B 可以多放一个A。
修改上述算法,使得它对写者优先,即一旦有写者到达,后续的读者A,则BBB-A<N说明:如果只放不放都必须等待,而无论是否有读者在读则如果多放一个最多可放N-1个,A,文件。
可以多放一个B。
(该问题的又一提法:在一个飞机订票系统中,多个用户共享一个数/2-BEGIN据库。
多用户同时查询是可以接受的, Mutex,SA,SB:semaphore;但若一个用户要订票需更新数据库 Mutex:=1;时,其余所有用户都不可以访问数据 SA:=M-1;库。
请画出用户查询与订票的逻辑框 SB:=N-1;图 parBegin(等价于同步进程的描述的图式表示)。
process PA为了提高写者的优先级,增加一个信 Begin号量Sloop:,用于在写进程到达后封锁后续的读者 P(SA);Semaphore mutex=1; P(Mutex);Semaphore write=1; 存放 A;Semahpore s=1;V(Mutex);Int count =0; V(SB);Main() Goto loop;{End;CobeginReader(); process PBWriter(); BeginCoend loop:;}P(SB);Reader()P(Mutex);{ while(true) 存放B;{V(Mutex);P(s); V(SA);P(mutex); Goto loop;If(count==0) End;p(write); parEnd;Count++; END;V(s); 北大/91读文件;P(mutex) 读者写者问题:Count--;If(count==0) 1、多个进程共享一个文件,其中只读v(write); 文件的程值为读者,其余只写文件的V(mutex); 称为写者。
读者可以同时读,但写者}只能独立地写。
.}EndWriter(){Porcess 由西向东 While(true)Begin { p(s);P(swe); P(write);P(siwe); 写文件; Iwe:=iwe+1;V(write);If iwe=1 hten p(mutex); V(s);V(siwe); }过桥; }P(siwe);Iwe:=iwe-1;If iwe=0 then v(mutex); 辆车,2.某一桥只有一车道,载重为4V(siwe); V 操作实现两方向的车过桥。
用P、V(swe) 本题本质上可以认为是读者写者End; 问题,往同一个方向的车可以认为是理发师睡觉问题:读者,往相反方向的车可以认为是写1.者。
但是由于桥的重量有限,增加了(睡眠的理发师问题)理发店有一个等候室(其中有N把椅子)和一个读者之间的互斥。
本题的临界资源显理发室(一把理发椅组成)。
如果没有然是单通道的桥,首先如果桥上有向顾客来理发,理发时就在理发椅上睡东方向的车,那么向西方向的车一定觉,如果一个走进理发店,发现等候4辆,同一方向的不能过,如果超过室的椅子都坐满就离开理发店;如果车也不能过,需要互斥。
理发师正忙于理发,那么该顾客就坐,mutex实现双向车子互设信号量在一把空椅子上等待;若理发师正在,斥通行;信号量sewswe表示由西向睡觉,则顾客就唤醒他。
用P、V操作初值为东与由东向西的负荷数,4;整写出工作流程。
表示各方向的车子数,数型iew,iwe考点:用PV原语实现同步 iew,iwesiew,siwe0初值为;实现对Semaphore costomers=0; ;等候的1的互斥访问,初值为顾客数(不包括正在理发的)Semaphore barbers=0; 由东向西的车子;等候顾客Process的理发师数 BeginSemaphore mutex=1;P(sew);Int waiting =0; P(siew); 等候的顾客数(还没有理发,实际是Iew:=iew+1; customers的备份,为了读取信号量的当前值);If iew=1 then p(mutex); V(siew);Void barber(void) 过桥;{ while (true) P(siew);{ P(customers); Iew:=iew-1;P(mutex);If iew=0 then v(mutex);waiting V(siew); = waiting – 1 ;V(barbers);V(sew)V(mutex); 动的同步。
Customers cut_hair( ); 表示正在等待复印的顾客数 }Operator 代表操作员的状态,只能取顾客进程1或0Void customers(void) ;Waiting 表示正在等待的顾客数; {P(mutex);Mutex实现对waiting的互斥访问 if(waiting<chairs){ waiting = waiting + 1 ;customers, V(customers); operator,mutex:semaphore;V(mutex);waiting: inteter; P(barbers);customers=0; get_hair( );}operator=0; else {V(mutex);}mutex=1;}process operatorbegin 提示:考虑一下理发师(barber) loop:)睡觉;(1(2)为重复的下列活动: p(customers); 顾客理发;复印;)重复的下列活顾客(customersV(operator); )理发;)在椅子上等候;(3(4动:Goto loop; 离开;End; 1)处要考察是显然,理发师在(否有顾客等候理发,如果没有,理发Process coutomeri 2)处理发师等待最先进师睡觉;在(Begin入理发店的顾客唤醒,开始理发。