P、V操作习题答案Word格式.doc

上传人:b****2 文档编号:14174729 上传时间:2022-10-19 格式:DOC 页数:9 大小:71KB
下载 相关 举报
P、V操作习题答案Word格式.doc_第1页
第1页 / 共9页
P、V操作习题答案Word格式.doc_第2页
第2页 / 共9页
P、V操作习题答案Word格式.doc_第3页
第3页 / 共9页
P、V操作习题答案Word格式.doc_第4页
第4页 / 共9页
P、V操作习题答案Word格式.doc_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

P、V操作习题答案Word格式.doc

《P、V操作习题答案Word格式.doc》由会员分享,可在线阅读,更多相关《P、V操作习题答案Word格式.doc(9页珍藏版)》请在冰豆网上搜索。

P、V操作习题答案Word格式.doc

End;

P3:

P(s1)

V(s3)

End;

P4:

P(s2);

V(s4);

P5:

begin

P(s2);

..;

End;

P6:

P(s3)

..

V(s4)

End;

P7:

begin

P(s4);

Parend

end

2.请用信号量实现4×

100(4人,每人100米)接力赛的同步过程。

提示:

前趋图同步问题,可设4个进程,三个信号量,进程1只设V操作,进程4只设P操作,其余进程先做P操作再做V操作。

Vars1,s2,s3:

=0,0,0;

Parbegin

Athlete1:

Run100m;

V(s1);

End;

Athlete2:

P(s1)

V(s2);

Athlete3:

P(s2);

Run100m;

V(s3);

Athlete4:

P(s3);

Parend

end

3.设公共汽车上,司机和售票员的活动分别是:

 

司机:

 

售票员:

启动车辆 

上乘客

正常行车 

关车门

到站停车 

售票

开车门

下乘客

在汽车不断地到站、停车、行驶过程中,这两个活动有什么同步关系?

请用信号量机制实现他们的同步。

/-假定初始状态为停车状态,引入信号量Stop和Run:

BEGIN

semaphoreStop,Run;

Stop:

=Run:

=0;

CoBegin

Driver:

Repeat

Wait(Run);

启动车辆;

正常行驶;

到站停车;

Signal(Stop);

UntilFalse;

END;

Conductor:

BEGIN

上乘客;

关车门;

Signal(Run);

售票;

Wait(Stop);

开车门;

下乘客;

CoEnd;

生产者消费者问题:

1.桌上有一个可以容纳两个水果的盘子,每次只能放或取一个水果。

爸爸放苹果妈妈放橘子,两个儿子吃苹果,两个女儿吃橘子。

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

Mutex实现互斥放或取水果。

empty盘子可放水果数

Apple盘子中放的苹果数

Orange盘子中放的橘子数

Semaphoremutex=1;

Semaphoreempty=2;

Semahporeapple=0;

Semahporeorange=0;

Main()

{

Cobegin

Father();

Mother();

Son();

Daughter();

;

Coend)

}

Father()

While(true)

{p(empty)

P(mutex)

放苹果

V(mutex)

V(apple)}

Mother()

放橘子

V(mutex)

V(orange)}

Son()

{p(apple)

取苹果

V(empty)}

Daughter()

{p(orange)

P(mutex)

取橘子

V(mutex)

V(empty)}

2、有一个仓库存放两种零件A和B,最大库容量各为m个。

有一车间不断地取A和B进行装配,每次各取一个。

为了避免零件锈蚀,遵循线入库者先出库的原则。

有两组供应商分别不断地供应A和B(每次一个),为保证齐套和合理库存,当某种零件的数量比另一种数量超过n(n<

m)个时,暂停对数量大的零件的进货,集中补充数量少的零件。

试用P、V操作正确实现之。

semaphoremutex=1,emptya=emptyb=m,fulla=fullb=0,sa=sb=n;

main()

{CoBegin

Provider_A();

//零件A供应商

Provider_B();

//零件B供应商

Assembling_Shop();

//装配车间

CoEnd

}

Provider_A()

{while(true)

{p(emptya);

p(sa);

p(mutex);

将零件A放入仓库;

v(mutex);

v(fulla);

v(sb);

Provider_B()

{p(emptyb);

p(sb);

将零件B放入仓库;

v(fullb);

v(sa);

Assembling_Shop()

{p(fulla);

p(fullb);

装配零件;

v(emptya);

v(emptyb);

3、有一个仓库,可以存放A和B两种产品,仓库的存储空间足够大,但要求:

每次只能存入一种产品(X或Y);

-N<

A产品数量-B产品数量<

M。

其中,N和M时正整数。

试用“存放A”、“存放B”和P、V操作描述产品A与产品B的入库过程。

A-B<

M说明:

如果只放A不放B,则A最多可放M-1个,如果多放一个B,则可以多放一个A。

B-A<

N说明:

如果只放B不放A,则B最多可放N-1个,如果多放一个A,则可以多放一个B。

/2-BEGIN

Mutex,SA,SB:

semaphore;

Mutex:

=1;

SA:

=M-1;

SB:

=N-1;

parBegin

processPA

Begin

loop:

P(SA);

P(Mutex);

存放A;

V(Mutex);

V(SB);

Gotoloop;

End;

processPB

Begin

loop:

P(SB);

存放B;

V(SA);

parEnd;

/北大91

读者写者问题:

1、多个进程共享一个文件,其中只读文件的程值为读者,其余只写文件的称为写者。

读者可以同时读,但写者只能独立地写。

说明进程间的相互制约关系,应设置哪些信号量?

用P、V操作写出其同步算法;

修改上述算法,使得它对写者优先,即一旦有写者到达,后续的读者都必须等待,而无论是否有读者在读文件。

(该问题的又一提法:

在一个飞机订票系统中,多个用户共享一个数据库。

多用户同时查询是可以接受的,但若一个用户要订票需更新数据库时,其余所有用户都不可以访问数据库。

请画出用户查询与订票的逻辑框图(等价于同步进程的描述的图式表示)。

为了提高写者的优先级,增加一个信号量S,用于在写进程到达后封锁后续的读者

Semaphorewrite=1;

Semahpore

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1