欢迎来到天天文库
浏览记录
ID:52714855
大小:50.00 KB
页数:5页
时间:2020-03-29
《进程的PV操作详解.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、进程的PV操作在操作系统中,P、V操作是进程管理中的难点。这是1968年荷兰人Dijkstra给出的一种解决并发进程间互斥和同步关系的通用方法。1.P、V操作的意义定义了信号量及其上的P操作和V操作,来实现并发进程间的同步和互斥,甚至可以用来管理资源的分配。P、V操作因交换的信息量少,属于进程的低级通信。b5E2RGbCAP2.什么是信号量?信号量2、号量的一般结构及PCB队列信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。注意,信号量的初值不能为负,且其值只能由P、V操作来改变。DXDiTa9E3d3.P、V操作的含义P、V操作由P操作原语和V操作原语组成<原语是不可中断的过程),对信号量S进行操作,具体定义如下:P3、GiTV4、.利用信号量和P、V操作实现进程互斥一般地,n个进程利用信号量和P、V操作实现进程互斥的一般模型如下:进程P1进程P2……进程Pn………………xHAQX74J0XP5、MI1<2)P、V操作应分别紧靠临界区的头尾部,临界区的代码应尽可能短,不能有死循环。<3)互斥信号量的初值一般为1。5.利用信号量和P、V操作实现进程同步P、V操作是典型的进程同步机制之一。用一个信号量与一个消息联系起来,当信号量的值为0时,表示期望的消息尚未产生;当信号量的值为非0时,表示期望的消息已经存在。用P、V操作实现进程同步时,调用P操作测试消息是否到达,调用V操作来发送消息。rqyn14ZNXI使用P、V操作实现进程同步时应该注意的问题是:<1)分析进程间的制约关系,确定信号量种类。在保持进程间有正确的同步关系情况下,哪个6、进程应先执行,哪些进程后执行,彼此间通过什么信号量进行协调,从而明确要设置哪些信号量。EmxvxOtOco<2)信号量的初值与相应资源的数量有关,也与P、V操作在程序代码中出现的位置有关。<3)同一信号量的P、V操作要成对出现,但它们分别在不同的进程代码中。6.P、V操作举例【例1】生产者-消费者问题在多道程序环境下,进程同步是一个十分重要又令人感兴趣的问题,而生产者-消费者问题是其中一个有代表性的进程同步问题。下面我们给出了各种情况下的生产者-消费者问题,深入地分析和透彻地理解这个例子,对于全面解决操作系统内的同步、互斥问题将有很大帮7、助。SixE2yXPq5<1)一个生产者,一个消费者,公用一个缓冲区{P(full>。从Buffer取出一个产品。V(empty>。消费该产品。}full——表示缓冲区中是否为满,初值为0。6ewMyirQFL生产者进程while(TRUE>{生产一个产品。P(empty>。产品送往Buffer。V(full>。}<2)一个生产者,一个消费者,公用n个环形缓冲区。定义两个同步信号量:empty——表示缓冲区8、是否为空,初值为n。full——表示缓冲区中是否为满,初值为0。消费者进程while(TRUE>{P(full>。从buffermodn;V(empty>。消费该
2、号量的一般结构及PCB队列信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。注意,信号量的初值不能为负,且其值只能由P、V操作来改变。DXDiTa9E3d3.P、V操作的含义P、V操作由P操作原语和V操作原语组成<原语是不可中断的过程),对信号量S进行操作,具体定义如下:P
3、GiTV
4、.利用信号量和P、V操作实现进程互斥一般地,n个进程利用信号量和P、V操作实现进程互斥的一般模型如下:进程P1进程P2……进程Pn………………xHAQX74J0XP
5、MI1<2)P、V操作应分别紧靠临界区的头尾部,临界区的代码应尽可能短,不能有死循环。<3)互斥信号量的初值一般为1。5.利用信号量和P、V操作实现进程同步P、V操作是典型的进程同步机制之一。用一个信号量与一个消息联系起来,当信号量的值为0时,表示期望的消息尚未产生;当信号量的值为非0时,表示期望的消息已经存在。用P、V操作实现进程同步时,调用P操作测试消息是否到达,调用V操作来发送消息。rqyn14ZNXI使用P、V操作实现进程同步时应该注意的问题是:<1)分析进程间的制约关系,确定信号量种类。在保持进程间有正确的同步关系情况下,哪个
6、进程应先执行,哪些进程后执行,彼此间通过什么信号量进行协调,从而明确要设置哪些信号量。EmxvxOtOco<2)信号量的初值与相应资源的数量有关,也与P、V操作在程序代码中出现的位置有关。<3)同一信号量的P、V操作要成对出现,但它们分别在不同的进程代码中。6.P、V操作举例【例1】生产者-消费者问题在多道程序环境下,进程同步是一个十分重要又令人感兴趣的问题,而生产者-消费者问题是其中一个有代表性的进程同步问题。下面我们给出了各种情况下的生产者-消费者问题,深入地分析和透彻地理解这个例子,对于全面解决操作系统内的同步、互斥问题将有很大帮
7、助。SixE2yXPq5<1)一个生产者,一个消费者,公用一个缓冲区{P(full>。从Buffer取出一个产品。V(empty>。消费该产品。}full——表示缓冲区中是否为满,初值为0。6ewMyirQFL生产者进程while(TRUE>{生产一个产品。P(empty>。产品送往Buffer。V(full>。}<2)一个生产者,一个消费者,公用n个环形缓冲区。定义两个同步信号量:empty——表示缓冲区
8、是否为空,初值为n。full——表示缓冲区中是否为满,初值为0。消费者进程while(TRUE>{P(full>。从buffermodn;V(empty>。消费该
此文档下载收益归作者所有