PV原语的含义

PV原语的含义

ID:38333725

大小:27.50 KB

页数:5页

时间:2019-06-10

PV原语的含义_第1页
PV原语的含义_第2页
PV原语的含义_第3页
PV原语的含义_第4页
PV原语的含义_第5页
资源描述:

《PV原语的含义》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、PV原语的含义P操作和V操作是不可中断的程序段,称为原语.PV原语及信号量的概念都是由荷兰科学家E.W.Dijkstra提出的.信号量sem是一整数,sem大于等于零时代表可供并发进程使用的资源实体数,但sem小于零时则表示正在等待使用临界区的进程数.P原语操作的动作是:(1)sem减1;(2)若sem减1后仍大于或等于零,则进程继续执行;(3)若sem减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度.V原语操作的动作是:(1)sem加1;(2

2、)若相加结果大于零,则进程继续执行;(3)若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度.PV操作对于每一个进程来说,都只能进行一次,而且必须成对使用.在PV原语执行期间不允许有中断的发生.用PV原语实现进程的互斥由于用于互斥的信号量sem与所有的并发进程有关,所以称之为公有信号量.公有信号量的值反映了公有资源的数量.只要把临界区置于P(sem)和V(sem)之间,即可实现进程间的互斥.就象火车中的每节车厢只有一个卫生间,该车厢

3、的所有旅客共享这个公有资源:卫生间,所以旅客间必须互斥进入卫生间,只要把卫生间放在P(sem)和V(sem)之间,就可以到达互斥的效果.以下例子说明进程的互斥实现.例1生产围棋的工人不小心把相等数量的黑子和白子混装载一个箱子里,现要用自动分拣系统把黑子和白子分开,该系统由两个并发执行的进程组成,功能如下:(1)进程A专门拣黑子,进程B专门拣白子;(2)每个进程每次只拣一个子,当一个进程在拣子时不允许另一个进程去拣子;分析:第一步:确定进程间的关系.由功能(2)可知进程之间是互斥的关系.第

4、二步:确定信号量及其值.由于进程A和进程B要互斥进入箱子去拣棋子,箱子是两个进程的公有资源,所以设置一个信号量s,其值取决于公有资源的数目,由于箱子只有一个,s的初值就设为1.实现:begins:semaphore;s:=1;cobeginprocessAbeginL1:P(s);拣黑子;V(s);gotoL1;end;processBbeginL2:P(s);拣白子;V(s);gotoL2;end;coend;end;

5、判断进程间是否互斥,关键是看进程间是否共享某一公有资源,一个公有资源与一个信号量相对应.确定信号量的值是一个关键点,它代表了可用资源实体数.如下实例:例2某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,厅外的购票者可立即进入,否则需要在外面等待.每个购票者可看成一个进程.分析:第一步:确定进程间的关系.售票厅是各进程共享的公有资源,当售票厅中多于20名购票者时,厅外的购票者需要在外面等待.所以进程间是互斥的关系.第二步:确定信号量及其值.只有一个公有资源:售票

6、厅,所以设置一个信号量s.售票厅最多容纳20个进程,即可用资源实体数为20,s的初值就设为20.实现:begins:semaphore;s:=20;cobeginprocessPI(I=1,2,……)beginP(s);进入售票厅;购票;退出;V(s);end;coend当购票者进入售票厅前要执行P(s)操作,执行后若s大于或等于零,说明售票厅的人数还未满可进入.执行后若s小于零,则说明售票厅的人数已满不能进入.这个实现中同时最多允许20个进程进入售票

7、厅购票,其余进程只能等待.用PV原语实现进程的同步与进程互斥不同,进程同步时的信号量只与制约进程及被制约进程有关而不是与整组并发进程有关,所以称该信号量为私有信号量.利用PV原语实现进程同步的方法是:首先判断进程间的关系为同步的,且为各并发进程设置私有信号量,然后为私有信号量赋初值,最后利用PV原语和私有信号量规定各进程的执行顺序.下面我们将例1增添一个条件,使其成为进程间是同步的.例3在例1的基础之上再添加一个功能:(3)当一个进程拣了一个棋子(黑子或白子)以后,必让另一个进程

8、拣一个棋子(黑子或白子).分析:第一步:确定进程间的关系.由功能(1)(2)(3)可知,进程间的关系为同步关系.第二步:确定信号量及其值.进程A和B共享箱子这个公有资源,但规定两个进程必须轮流去取不同色的棋子,因而相互间要互通消息.对于进程A可设置一个私有信号量s1,该私有信号量用于判断进程A是否能去拣黑子,初值为1.对于进程B同样设置一个私有信号量s2,该私有信号量用于判断进程B是否能去拣白子,初值为0.当然你也可以设置s1初值为

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。