pv练习题 下载本文

1、有一个笼子,猎户放老虎,农夫放猪。动物园取老虎,饭店取猪,请实现。

2、三个人约好到某地集中后一起去看电影,请实现。

3、生产围棋的工人不小心把相等数量的黑子和白子混装在一个箱子里现要用自动分拣系统把黑子和白子分开,该系统有两个并发执行的进程ProcessA和ProcessB组成,系统功能如下:

.ProcessA专拣黑子,ProcessB专拣白子;

.每个进程每次只拣一子,当一个进程在拣子时,不允许另一个进程去拣子;

.当一个进程拣了一个子(黑子或白子)以后,必须让另一个进程拣一子(白子或黑子),请回答:(1)这两个并发进程之间的关系是同步还是互斥?

(2)写出用P、V操作管理时应定义的信号量及初值。 (3)根据定义的信号量,写出控制两进程并发执行的程序。

4.进程Pro1往缓冲区Buf1中填入一个记录,进程Pro2把Buf1中的记录复制到Buf2中,Pro3取走(复制)Buf2中的记录(如下图所示),以下程序不断传送记录,填写所缺 Pro1 Pro2 Pro3 语句:

Buf1 Buf2 5.现有一单向行车道作调度车场,B为入口,A为出口,在车场内最多可同时停放10部汽车,当车场内无车时,A处不得再有发车信号,当车场停满10部汽车后,B处不得再有进

车信号,进、发车不得同时进行,试用PV操作实现这一调度方案,说明所用信号量的初值。

A … … … … … … … … B 6.设一元二次方程的求实根公式为: X=

?b?b*b?4ac2a,其中若a,b,c已经赋值,且满足b*b>4ac,

1)试画出计算的并发执行流程图,原则是最大限度地提高并发度,每条指令只进行一次简单运算。(5分)

2)用P,V实现并发控制。(10分。定义信号量并给出初值3分,P,V操作7分) 7. 某宾馆门前有一个出租汽车停车位,假设宾馆每一位顾客出门都要乘坐出租车,并且对顾客约定:如果有其它顾客在此停车位等车则在旁等待;否则在此等车;此停车位有车则乘坐。对出租车作出约定:如果此停车位已停有车,则等待此停车位空闲;否则停到此停车位等待顾客;有顾客则搭载顾客离开。试定义信号量,说明信号的初值和意义,用P、V原语编写程序描述顾客与出租车的行为。

8.某银行有人民储蓄业务,由n个柜员负责,有1台取号机。每个顾客进入银行后先取一个号,若有人取号则需等他人取完后才能取,取到号后等待叫号,当一个柜员人员空闲下来,就叫下一个号。试用P,V操作正确编写柜台人员和顾客进程的程序。(本小题10分。其中,定义信号量并给出初值3分,P,V操作7分)

一种解决哲学家就餐问题的解法如下。(1)评价该方法;(2)若S为信号量,其初值为1,在*处加上P(S),在**处加上V(S),评价改进后的算法。

#define

N 5

i)

void philosopher(int { while (TRUE) { think ( );

*

take stick (i);

take stick((i+1)%N); eat;

put stick(i); put stick((i+1)%N); ** }}