P、V操作习题答案

合集下载

pv操作习题

pv操作习题
begin Wait(s);
进入售票厅;
购票;
退出;
Signal(s);
end;
parend
有座东西方向架设、可双向通行的单车道简易桥,最大负荷为4辆汽车。请定义合适的信号量,正确使用wait/signal操作,实现双向车辆的过桥过程。
信号量应该有4个:
S,初值为1,代表桥的互斥使用的信号量;Scounteast,初值为1,代表由东向西行驶的桥上的车辆计数器的互斥使用;
吃桔子;
}
女儿while(TRUE)
{
Wait(Sa);
从盘中取出苹果;
Signal(S);
吃苹果;
}
父亲-母亲-儿子-女儿一个苹果或桔子
信号量:s=1(空盘);s1=0(苹果);s2=0(桔子);
爸爸:while(true) { wait(s);放苹果; signal(s1); }
妈妈:while(true) { wait(s);放桔子; signal(s2); }
semaphore fulla=0;
semaphore fullb=0;
semaphore sa=n;
semaphore sb=n;
main()
{
cobegin
Provider_A();
Provider_B();
Assembling_shop();
conend
}
Provider_A()
{
while(true)
有一个仓库(无限大),可以存放A和B两种产品,但要求:
(1)每次只能存入一种产品(A或B);
(2)-N<A产品数量-B产品数量<M
其中,N和M是正整数。
试用Wait/Signal操作描述产品A与产品B的入库过程。

进程管理习题及答案

进程管理习题及答案

进程管理习题答案一.选择题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,则可用资源个数为( ),等待资源的进程数为( )。

操作系统PV操作习题.

操作系统PV操作习题.

一、用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所示。

PV习题

PV习题

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.司机的活动:启动车辆,正常行车,到站停车。

操作系统 信号量机制P、V操作习题全解

操作系统 信号量机制P、V操作习题全解
get paper and tobacco; signal (done); }
smoker2 () /* has paper */ while(1) { wait (TobaccoMatch);
get tobacco and match; signal (done); } Smoker3 () /* has match */ while(1) { wait (PaperMatch); get paper and match; signal (done); }

• get process: while (1) {
read data; wait (empty1); wait (s1)
put data into buffer1 //因为是单缓,故无in指针,可写为 // buffer1=x; signal (s1) signal (full1) }
• Copy process: while (1) {
– 进程A专门拣黑子,进程B专门拣白子;
– 每个进程每次只拣一个子,当一个进程在拣 子时不允许另一个进程去拣子;
– 当一个进程拣了一个棋子(黑子或白子)以 后,必须让另一个进程拣一个棋子(黑子或 白子),并要求A进程首先开始。
• 定义两个同步信号量s1,s2;
• 因为要求进程A先开始,故S1初值为1;s2初 值为0;
• Put process: while(1) {
wait (full2) wait (s2)
get data from buffer2 // z=buffer2 signal (s2) signal (empty2)
print data on printer }
• 3.在一个箱子里混装有数量相等的黑色围棋子 和白色围棋子,现要用自动分拣系统把黑子和 白子分开,该系统由两个并发执行的进程组成, 功能如下:

计算机操作系统习题及答案(4)

计算机操作系统习题及答案(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__。

操作系统第二章练习2 答案

操作系统第二章练习2 答案

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操作习题

操作系统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操作,用于进程同步的一种机制。

- 生产者-消费者问题:一种经典的并发控制问题,涉及到生产者和消费者之间的资源竞争。

- 读者-写者问题:一种并发控制问题,涉及到多个读者和写者对共享资源的访问。

- 哲学家就餐问题:一种经典的并发控制问题,涉及到多个哲学家通过共享的餐具进行就餐。

P V 原语操作

P V 原语操作

例某小型超级市场,可容纳50人同时购物。

入口处有篮子,每个购物者可拿一只篮子入内购物。

出口处结帐,并归还篮子(出、入口禁止多人同时通过)。

试用信号量和P、V操作写出购物者的同步算法。

●①所用信号量设置如下:●Ⅰ)互斥信号量S,初值为50,用以保证最多可以有50个购物者同时进入超市。

●Ⅱ)互斥信号量mutex1、mutex2,初值为1,用以保证同时只能有一个购物者进程进入出、入口拿起篮子或者结帐后放下篮子。

●②用信号量机制给出的每个购物者购物过程的算法描述如下:购物者进程:●P(S);●P(mutex1);●从入口处进超市,并取一只篮子;●V(mutex1);●进超市内选购商品;●P(mutex2);●到出口结帐,并归还篮子;●V(mutex2);●从出口离开超市;●V(S)例桌上有个只能盛得下一个水果的空盘子。

爸爸可向盘中放苹果或桔子,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。

规定:当盘子空时,一次只能放入一个水果供吃者取用。

试用信号量和P、V操作实现爸爸、儿子和女儿这三个循环进程之间的同步。

Ⅰ)爸爸进程的同步信号量empty,初值为1,表示盘子是空的,即儿子或女儿已把盘中的水果取走。

Ⅱ)儿子进程的同步信号量orange,初值为0,表示爸爸尚未把桔子放入盘中。

Ⅲ)女儿进程的同步信号量apple,初值为0,表示爸爸尚未把苹果放入盘中。

●爸爸进程(P):儿子进程(C1):女儿进程(C2):●P(empty);P(orange );P(apple);●将水果放入盘中;从盘中取出桔子;从盘中取出苹果;●若放入的是桔子,V(empty);V(empty);●则V(orange);吃桔子;吃苹果;●否则,V(apple);例:读者——写者问题●该问题描述的是:●一组读者与一组写者循环访问共享的同一个数据对象。

●读者:指能对共享数据对象读的进程,写者:指对共享数据对象只要求写的进程。

●规定:多个读者可以同时读这个数据对象,但决不允许多个写者同时对这个数据对象进行写操作,也不允许读者、写者同时访问这个数据对象。

P_V操作经典例题

P_V操作经典例题

收银 V(C) 顾客 P(M) 进入店内购物 V(S) P(C) V(M) 问题7有一个理发店,店内共有20个座位供顾客等待理发,(进入 理发店的顾客,都在此座位上等待理发,正在理发的顾客不占用此座 位),当20个座位坐满了,后到的顾客不等待,立即回家。当没有顾 客时,理发师睡眠等待。 解:设信号量:S=0.C=0,MUTEX=1 设整型变量 SM=20 理发师 REPEAT P(S) -------如无顾客,理发师等待 V(C) 叫一个顾客理发 理发 UNTIL FALSE 顾客 P(MUTEX) IF (SM=0) { V(MUTEX)――――满座,离开,回家 RETURN ELSE SM=SM-1―――――空座位数减 1 V(MUTEX) } V(S)――――――――通知理发师,增加了一个顾客,如理发师在 等待则唤醒他 P(C) ———————等理发师叫自己理发
REPEAT P(SF) 剥香蕉 P(SE) 放香蕉 V(SB) UNTIL FALSE 母亲 REPEAT P(SM) 削苹果 P(SE) 放苹果 V(SA) UNTIL FALSE 儿子 V(SM) P(SA) 拿苹果 V(SE) 吃苹果 女儿 V(SF) P(SB) 拿香蕉 V(SE) 吃香蕉 问题6有一个超市,最多可容纳N个人进入购物,当N个顾客满员 时,后到的顾客在超市外等待;超市中只有一个收银员。可以把顾客和 收银员看作两类进程,两类进程间存在同步关系。写出用P;V操作实现 的两类进程的算法(2003年系统设计员考试的题目) 解:设信号量:S=0,C=0 (顾客与收银员的同步信号量),M=N 收银员 P(S)
P (MX) CX=CX-1 IF (CX=0) {V (MUTEX) } V (MX) (3) 解:从东向西的,和(2)相同;从西向东的和(1)相同。 问题4 有一个俱乐部,有甲乙两个服务员,当顾客有请求时,甲负 责送烟,乙负责送火,无顾客请求时,服务员睡眠。顾客自己不能带 烟和火,当顾客要抽烟时,可请求服务员送烟和火,烟和火还未送到 时,顾客必须等待。 设信号量:SY, SH,CY,CH:初值都为0 甲服务员 REPEAT P(SY) 送烟 V(CY) UNTIL FALSE 乙服务员 REPEAT P(SH) 送火 V(CH) UNTIL FALSE 顾客 V(SY) /*(请求送烟)*/ V(SH) /*(请求送火)*/ P(CY) /* (等烟) */ P(CH) /* (等火) */ 抽烟 问题5一家四人父、母、儿子、女儿围桌而坐;桌上有一个水果 盘; (1) 当水果盘空时,父亲可以放香蕉或者母亲可以放苹果,但盘 中已有水果时,就不能放,父母等待。当盘中有香蕉时,女儿可吃香

OS7(PV习题)分析

OS7(PV习题)分析
练习:
1、用P.V操作解决下面的同步问题 有3个进程:get, copy和put,它们对4个存储区域f、s、t和g进行操作: 其中:f有取之不尽的数据可以get;g有用之不完的空间可以put
s和t则只有一个存储空间。
get
copy
put
f
s
t
g
1,2,3,4,...,m
2,3,4,...,m 1
3,4,...,m
用一个进程代表观众,试用pascal实现观众进程的观看
录像函数VideoShow(vid:integer),以遵守放映规则。其中
vid表示观众选择的录像片编号。要求:用信号量方法,并
给出定义及初值。
Operating System
10
Lifang 2015
问题解析:
该题的临界资源是放映厅,三组观众以互斥的方式轮 流占用。可以看做是三组reader进程竞争资源。
2
(…
)
1
(1… )
2
(1,2… )
要解决的同步问题:
Get不能向“满”的S中放;
Copy不能从“空”的S中取;不能向“满”的T中放;
Put不能从“空”的T中取
Operating System
1
Lifang 2015
(同步)信号量:{实际上也起到互斥作用}
S_Empty, T_Empty, {初值为1}
Operating System
2
Put进程: Begin Repeat
P(T_Full); T_put_G( ); V(T_Empty); Until false; End
Lifang 2015
2、重新研究司机和售票员问题,分别写出司机和售票员进程, 从而实现该问题的同步

(完整版)操作系统-进程同步习题答案(22)

(完整版)操作系统-进程同步习题答案(22)
C.同步是指并发进程之间存在的一种制约关系
D.并发进程在访问共享资源时,不可能出现与时间有关的错误
2.下列资源中,(ACD)是临界资源。
A.打印机 B.非共享的资源
C.共享变量 D.共享缓冲区
3.进程从执行状态转换到阻塞状态的可能原因是(BD ).
A.时间片完B.需要等待其它进程的执行结果
C.执行了V操作D.执行了P操作
B.一个进程处于运行状态,n-1个进程处于等待状态。
C.一个进程处于运行状态,1个进程处于就绪状态,n-2个进程处于等待状态。
D.一个进程处于运行状态,n-1个进程处于就绪状态,没有进程处于等待状态
三、判断正误,错误的简要说明理由
1.一个临界资源可以对应多个临界区。(√)
2.互斥地使用临界资源是通过互斥地进入临界区实现的。(X)
分析在本题中,爸爸、儿子、女儿共用一个盘子,且盘中一次只能放一个水果。当盘子为空时,爸爸可将一个水果放入果盘中。若放入果盘中的是苹果,则允许女儿吃,儿子必须等待;若放入果盘中的是桔子,则允许儿子吃,女儿必须等待。本题实际上是生产者-消费者问题的一种变形。这里,生产者放入缓冲区的产品有两类,消费者也有两类,每类消费者只消费其中固定的一类产品。
(2)根据所定义的信号量,把应执行的P、V操作填入下述程序中,以保证进程能够正确地并发执行。
COBEGIN PROCESS Pi(i=1,2,…..)
Begin
;
进入售票厅;
购票;

退出;
End;
COEND
(3)若欲购票者最多为n个人,写出信号量可能的变化范围(最大值和最小值)。
解:
售票厅问题:
(1)定义一信号量S,初始值为20。
A.0 B.1 C.2 D.3

操作系统_PV操作_经典习题1

操作系统_PV操作_经典习题1

1、司机-售票员问题
2、理发师问题
理发店里有一位理发师,一把理发椅和N把供等候理发的顾客坐的椅子。

如果没有顾客,则理发师便在理发椅上睡觉。

当一个顾客到来时,他必须先唤醒理发师。

如果顾客到来时理发师正在理发,则如果有空椅子,可坐下来等;否则离开。

3、物流问题
在某个物流系统中,有一个位于上海的集装箱中转枢纽,这些集装箱又被装上其他运输工具继续各自的行程。

根据整体物流规划,从沿长江一线进入枢纽的集装箱,要从这里直接吊装到上
海至旧金山的定期集装箱班轮上。

而从沪杭高速公路进入枢纽的集装箱,要从这里换装到专门在京沪高速公路上行驶的集装箱运输车上。

现在需要设计为该物流系统上海集装箱中转枢纽使用的物流软件,为简化问题,假设该中转枢纽的场地每次只能接收一个方向来的同一批次的集装箱。

P、V操作作业

P、V操作作业

全局变量:readcount(读者数),0,writecount(写者数),0 信号量:S1(资源数据区),1; Read(临界资源readcount),1;Write(临界资源writecount),1 W (写信号量),1;
Reader: 写者操作(Writer): P (W); 是否有写者正在写或请求写? 写者数+1; P(Read); 读者数+1; if readcount=0 then P(S1); 判断写者数,为1则申请写; readcount:=readcount+1; 判断读者数,为1则申请数据区; 申请数据区; V(Read); 释放写信号; 写数据; V(W); 读数据; read file; 释放数据区; P(Read); 读者数-1 写者数-1; readcount:=readcount-1; 判断读者数,为0则释放数据区; if readcount=0 then V(S1); 判断写者数,为0则释放写; V(Read); 读者操作(Reader):
P(wait)、V(signal)操作(2)
如图,试用信号量实 现这7个进程的同步: 要求详细解释为进程 图设置的每一个同步 信号量的具体涵义及 初值,然后为进程图 中的每一个进程设计 P、V操作;
P1
P2
P3
P5
P4
P 7 P6
P(wait)、V(signal)操作(3)
用P、V操作解决下图之同步问题:get进程负责往双缓冲区S 中输入数据,copy进程负责将双缓冲区S中的数据复制到双 缓冲区T, put进程负责从双缓中区T中取出数据用于处理。 提示:双缓冲区,代表有两个缓冲区,可以存储两个数据
写者操作(Writer):
写者数+1;

操作系统P、V操作习题

操作系统P、V操作习题

操作系统P、V操作习题P、V操作课后作业习题1、如图,试⽤信号量实现这6个进程的同步:2、⽤P.V操作解决下图之同步问题:get进程负责往单缓冲区S中输⼊数据,copy进程负责将单缓中区S中的数据复制到单缓冲区T,put 进程负责从单缓中区T中取出数据⽤于处理。

3、某车站售票厅,任何时刻最多可容纳20名购票者进⼊,当售票厅中少于20名购票者时,则厅外的购票者可⽴即进⼊,否则需在外⾯等待。

若把⼀个购票者看作⼀个进程,请回答下列问题:(1)⽤P、V操作管理这些并发进程时,应怎样定义信号量,写出信号量的初值以及信号量各种取值的含义。

(2)根据所定义的信号量,把应执⾏的P、V操作填⼊下述程序中,以保证进程能够正确地并发执⾏。

COBEGIN PROCESS PI(I=1,2,……)Begin进⼊售票厅;购票;退出;end;COEND(3)若欲购票者最多为n个⼈,写出信号量可能的变化范围(最⼤值和最⼩值)。

1、为进程P1和P2设置共享公⽤信号量S12,P1和P3设置共享公⽤信号量S13,P1和P4设置共享公⽤信号量S14,P2和P5设置共享公⽤信号量S25,P2和P7设置共享公⽤信号量S27,P3和P6设置共享公⽤信号量S36,P4和P5设置共享公⽤信号量S45,P5和P6设置共享公⽤信号量S56,P7和P6设置共享公⽤信号量S76,初值均为0P1: P2: P3: P4: P5: P7: P6: …P(S12); P(S13); P(S14); P(S25); P(S27); P(S36); V(S12); …. ……P(S45); …P(S56); V(S13); V(S25); V(S36); V(S45); …V(S76); P(S76); V(S14); V(S27); V(S56); …。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

••信号量应用问题: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; 吃苹果,两个女儿吃橘子。

试用信CoBegin 号量和BEGINP、V 操作,编写实现爸爸、Driver: 妈妈、儿子和女儿的并发工作程Repea 序。

tMutex 实现互斥放或取水果。

Wa emptyit(Run);盘子可放水果数Apple 盘子中放的苹果数启Orange 动车辆;盘子中放的橘子数Semaphore mutex=1 正Semaphore empty=2;常行驶;Semahpore apple=0到Semahpore oran ge=0站停车;Main() Si{gnal(Stop);Cobegin UntilFather(); False;Mother(); END;Son();Conductor:BEGINDaughter();Repea; tCoe nd)上}乘客;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和Bv(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-BvM说明:如果只放A不放则用P、V操作写出其同步算法;,最多可放M-1个,如果多放一个B可以多放一个A。

修改上述算法,使得它对写者优先,即一旦有写者到达,后续的读者A,则BBB-AvN说明:如果只放不放都必须等待,而无论是否有读者在读则如果多放一个最多可放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);V(SA);P(s);P(mutex); Goto loop;If(count==0) End;p(write); parEnd;Count++; END;V(s)北大/91读文件;P(mutex)读者写者问题:Cou nt--;lf(count==O) 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,siweO初值为;实现对Semaphorecostomers=0;; 等候的1 的互斥访问,初值为顾客数(不包括正在理发的)Semaphore barbers=0由东向西的车子;等候顾客Process的理发师数BeginSemaphore mutex=1;P(sew);Int waiti ng =0; P(siew);等候的顾客数(还没有理发,实际是Iew:=iew+1;customers 的备份,为了读取信号量的当前值);If iew=1 thenp(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);=wait ing —;=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 动:Gotoloop;离开;End;1) 处要考察是显然,理发师在(否有顾客等候理发,如果没有,理发Processcoutomeri 2)处理发师等待最先进师睡觉;在( Begin入理发店的xx 唤醒,开始理发。

相关文档
最新文档