P、V操作习题答案

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

…信号量应用问题: End;

Parend .写出程序描述下列前趋关系。1 end

S2->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只设Begin

V操作,进程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: begin

V(s1); P(s1);

End; … ;

Athlete2: begin V(s2);

P(s1) V(s2);

Run 100m; End;

V(s2); P3: begin

End; P(s1)

Athlete3: begin … P(s2) ; V(s3)

Run 100m; End;

V(s3); P4: begin

End; P(s2);

Athlete4: begin … P(s3); V(s4);

Run 100m; P5: begin

End; P(s2);

Parend ..;

end

V(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

号量和 BEGIN

P、V操作,编写实现爸爸、 Driver:

妈妈、儿子和女儿的并发工作程 Repea

序。t

Mutex实现互斥放或取水果。 Wa

emptyit(Run);

盘子可放水果数

Apple 盘子中放的苹果数启

Orange 动车辆;盘子中放的橘子数

Semaphore mutex=1; 正

Semaphore empty=2; 常行驶;

Semahpore apple=0; 到

Semahpore orange=0; 站停车;

Main() Si

{

gnal(Stop);

Cobegin Until

Father(); False;

Mother(); END;

Son();

Conductor:BEGIN

Daughter();

Repea

; t

Coend) 上

}

乘客;Father() 关{

车门;

While(true) Si

{ p(empty) gnal(Run);

P(mutex)

放苹果票;

V(mutex) WaV(apple)} it(Stop);

} 开

Mother() 车门;

{

While(true) 乘客;

{ p(empty) Until

P(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(每次一个)套和合理库存,

相关文档
最新文档