pv操作2Word文档下载推荐.doc
- 文档编号:13162109
- 上传时间:2022-10-07
- 格式:DOC
- 页数:7
- 大小:28.50KB
pv操作2Word文档下载推荐.doc
《pv操作2Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《pv操作2Word文档下载推荐.doc(7页珍藏版)》请在冰豆网上搜索。
两个生产者和两个消费者共享了一个仅能存放一件产品的缓冲器,生产者各自生产不同的产品,消费者各自取自己需要的产品,P、V操作编程为:
猎手进程
农民进程
动物园进程
饭店进程
P(s)
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操作实现它们之间的同步关系。
①司机启动车
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- pv 操作