PV习题完整版本.docVIP

  • 6
  • 0
  • 约3.68千字
  • 约 7页
  • 2024-07-30 发布于北京
  • 举报

有一个报箱为A、B两人共同使用,每次只能装一份报纸。A订阅《科技报》,B订阅《新民晚报》,投递员C、D分属科技报社和新民晚报社,试用P、V操作写出他们的同步执行程序。

vars,science,night:semaphore:=1,0,0;

begin

parbegin

A:beginwhile(true)C:beginwhile(true)

{wait(science);{wait(s);

取科技报;投递科技报;

signal(s);signal(science);

}}

end;end;

B:beginwhile(true)D:beginwhile(true)

{wait(night);{wait(s);

取新民晚报;投递新民晚报;

signal(s);signal(night);

}}

end;end;

parend;

end.

设有两个优先级相同的进程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中各语句执行的前趋图为:

1:y=1

1:y=1

2:y=y+2

3:z=y+1

4:y=z+y

5:x=1

6:x=x+1

7:x=x+y

8:z=x+z

无论调度顺序如何,进程执行到语句7时x的值为5,y的值为3。由于语句3的执行结果不受语句7的影响,语句3执行后,z的值为4。此后语句4和语句8可以并发执行:

(1)若语句4先执行,则两进程执行结束后,x的值为5,y的值为7,z的值为9。

(2)若语句8先执行,则两进程执行结束后,x的值为5,y的值为12,z的值为9。

有一阅览室,共有100个座位。读者进入时必须先在一张登记表上登记,该表为每一座位列一表目,包括座号和读者姓名。读者离开时要消掉登记内容。试用P、V操作描述读者进程的同步结构。

var

mutex :semaphere; 信号量,用于互斥

full:semaphere; 信号量,用于同步

table:array0..n-1ofitem; 登记表

procedurereader; 读者进程

begin

P(full);

P(mutex);

Register_name(table);

V(mutex);

Reading;

P(mutex);

Delet_name(table);

V(mutex);

V(full)

end;

begin

seminitsal(mutex.v,1;full.v,100); 初始化

cobegin

reader;

reader;

...

coend

end.

司机的活动:启动车辆,正常行车,到站停车。

售票员活动:关车门,售票,开车门。

当发车时间到,售票员关好车门后,司机才能启动车辆,售票员才开始售票。当到站时,司机停稳车后,售票员才能打开车门,车上乘客先下车,然后站牌乘客上车。

structs

文档评论(0)

1亿VIP精品文档

相关文档