pv操作2Word格式文档下载.doc

上传人:wj 文档编号:1454425 上传时间:2023-04-30 格式:DOC 页数:7 大小:28.50KB
下载 相关 举报
pv操作2Word格式文档下载.doc_第1页
第1页 / 共7页
pv操作2Word格式文档下载.doc_第2页
第2页 / 共7页
pv操作2Word格式文档下载.doc_第3页
第3页 / 共7页
pv操作2Word格式文档下载.doc_第4页
第4页 / 共7页
pv操作2Word格式文档下载.doc_第5页
第5页 / 共7页
pv操作2Word格式文档下载.doc_第6页
第6页 / 共7页
pv操作2Word格式文档下载.doc_第7页
第7页 / 共7页
亲,该文档总共7页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

pv操作2Word格式文档下载.doc

《pv操作2Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《pv操作2Word格式文档下载.doc(7页珍藏版)》请在冰点文库上搜索。

pv操作2Word格式文档下载.doc

P(s1) 

P(s2)

放入虎 

放入猪 

买老虎 

买猪

V(s1) 

V(s2) 

V(s) 

其中S初值=1,S1=S2=0

例题四桌上有一只盘子,每次只能放入一个水果。

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

用P、V操作写出它们能正确同步的程序。

信号量初值S1=0,S2=0,S=1

爸爸进程 

妈妈进程 

女儿进程 

儿子进程

repeat 

repeat

放苹果 

放桔子 

取苹果 

取桔子

untilfalse 

untilfalse

例题五设有两个优先级相同的进程P1和P2如下,S1和S2初值均为0,求:

P1,P2并发执行结束后,x,y,z分别是多少?

进程P1 

进程P2

y:

=1;

x:

=y+2;

=x+1;

V(s1);

P(s1);

z:

=y+1;

=x+y;

P(s2);

V(s2)

=z+y;

=x+z;

因为P1、P2是并发进程,所以P1和P2调度顺序不确定。

假设P1先执行,当P1执行到P(s2)时,s2=-1,P1阻塞,此时y=3,z=4;

当调度程序调度到P2时,由于进程P1巳执行到了V(s1),P2在执行P(s1)时,不阻塞而继续执行,当执行到V(s2)时,将P1唤醒,然后执行到最后一个语句,此时x=5,z=9;

当P1再次被唤醒、调度时,

继续执行P1的最后一处语句,此时y=12.

所以最后结果是:

x=5,y=12,z=9.

如果P2先执行,结果同上。

习题1:

有三个并发进程使用同一个缓冲区,进程P1负责读数据到缓冲区,P2负责加工缓冲区中的数据,进程P3负责将缓冲区中加工后的数据输出.在进程P3没有输完之前,进程P1不能读入新的数据到缓冲区中.请用P、V操作编程.

信号量初值:

S1=0,S2=0,S3=0

进程P2 

进程P3

读数据到 

P(S1) 

P(S2)

缓冲区 

加工 

输出

V(S1) 

V(S2) 

V(S3)

P(S3)

习题2:

设有六个进程P1、P2、P3、P4、P5、P6,它们并发执行。

由P1开始执行,

P6执行后结束。

当进程P1执行后,进程P2、P3才能执行;

当进程P2执行后,进程P4才能执行;

当进程P3执行后,进程P5才能执行;

当进程P4、P5都执行后,进程P6才能执行;

请用P、V操作编程.

这是一个同步问题,信号量初值:

S2=0,S3=0,S4=0,S5=0,S6=0

执行P1 

P(S2) 

执行P2 

执行P3

V(S3) 

V(S4) 

V(S5)

进程P4 

进程P5 

进程P6

P(S4) 

P(S5) 

P(S6)

执行P4 

执行P5 

V(S6) 

执行P6

例一.在某展示厅设置一个自动计数系统,以计数器count表示在场的人数,count是动态变化的,若有一个人进入展示厅进程pin对计数器count加1,当有一个人退出展示厅时,进程pout实现计数器减1由于进、出所以展示厅的人是随机的,用P-V操作实现。

(并发进程之间的互斥问题)

定义信号量:

S:

表示是否有进程进入临界区,初值为1.(表示没有进程进入临界区)

begin

count:

Integer;

S:

semaphore;

=0;

cobegin

processPin

R1:

P(S);

R1:

=count;

=R1+1;

count:

=R1;

V(S);

end;

ProcessPout

R2:

R2:

=R2-1;

=R2;

V(S);

count;

例二.与生产者和消费过者相似的问题,把“A进程将记录送入缓冲器”看生产者生产了一件物品且把物品存入缓冲器“把“B进程从缓冲器中取出记录并加工”看作是消费者从缓冲器取出物品去消费,缓冲器中只能放一个记录(一件物品),用P-V操作实现。

(并发进程之间的同步问题)

定义两个信号量为:

sp和sg。

sp:

表示生产者是否右以把物品存入缓冲器。

由于缓冲器只能存放一个物品,因此sp的初值为1,即sp:

=1。

sg:

表示缓冲是否存有物品,它的初值应该为0,即sg:

=0,表示缓冲器中还没有物品存在。

生产者和消费者两个进程并发执行时,可按以下的方式实现同步:

sp:

sg:

processproducer(生产者进程)

begin

L1:

produceaproduct;

P(sp);

Buffer:

=product;

V(sg);

gotoL1

end

processconsumer(消费者进程)

L2:

P(sg);

Takeaproduct;

V(sp);

consume;

coend;

例三.如果一个生产者和一个消费共享缓冲器容量为可以存放n件物品时,生产者总可继续存入物品;

同时当缓冲器的物品不为“0”时,消费者总可从缓冲器中取走物品,用P-V操作实现。

sp:

表示生产者是否可以把物品存入,初值为n;

(因为,缓冲器的容量为n件物品)

表示缓冲器中是否存有物品,初值为0.

B:

away[0:

n-1]ofinteger;

k,t:

integer;

k:

t:

=n;

sg:

processproducer

B[k]:

k:

=(k+1)modn;

V(sg);

gotoL1

processconsumer

P(sg);

TackaproductfromB[t];

=(t+1)modn;

V(sp);

consume;

goto:

=L2

coend

例五.桌上有一只盘子,每一次放入一个水果,爸爸向盘中放苹果,妈妈向盘中放桔子,一个女儿专吃盘中的苹果,一个儿了专等吃盘是的桔子。

试用P-V操作定出他们能同步的流程图。

(并发进程之间同步与互斥的混合问题)

dish:

表明盘子中是否为空,初值为1;

Apple:

表明盘子中是否有苹果,初值为0;

Orange:

表明盘子中是否有桔子,初值为0;

main()

{cobegin

father();

mother();

son();

daughter();

coend

}

father()

{P(dish);

放苹果

V(apple);

mother()

放桔子

V(orange);

son()

{P(orange);

取桔子

V(dish);

daughter()

{P(apple);

取苹果

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

司机的活动是启动车辆、正常开驶、到站停车;

售票员的活动是关门、售票、开门。

①试指出在汽车出站、行驶、到站过程中,述两种活动有什么同步关系?

②用P-V操作实现它们之间的同步关系。

①司机启动车辆与售票员关车门为同步关系;

司机到站停车与售票员开车门为同步关系。

②定义两个信号量:

S1:

表示门是否关了,初始值为0;

S2:

表示汽车是否到站,初始值为0

main()

Process司();

Process售();

Process司()

{P(S1);

启动;

行驶;

到站停车;

V(S2);

}

Process售()

{关车门;

V(S1);

售票;

P(S2);

开车门;

例七.多个进程共享一个文件,其中写文件的称为写者,读文件的称为读者,写者与写者、写者与读者之间要互斥地访问文件,读者之间可同时读,试用P-V操作实现它们之间的关系。

(进程之间的互斥问题)

定义变量:

表现当前读者个数,初值为0;

mutex:

用来对共享变量count进行互斥访问,初值为1;

write:

用来使写者与写者,写者与读者之间互斥访问文件,初值为1.

semaphonemutex:

semaphonewrite:

intcount:

main()

{cobegin

Reader();

Writer();

Reader()

{while(true)

{P(mutex);

if(count==0)

p(write)

count++;

V(mutex);

读文件;

P(mutex);

count--;

if(count==0)V(write)

 

writer()

{P(write);

写文件;

V(write);

}}

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2