PV操作:PV操作 什么时候用P操作 什么时候用V操作 时间:2023-02-05 08:34:39 由诗词网小编 分享 复制全文 下载本文 诗词网小编2023-02-05 08:34:39 复制全文 下载全文 目录1.PV操作 什么时候用P操作 什么时候用V操作2.如何写操作系统原理的PV原语操作?思路是什么啊?3.PV操作的定义4.操作系统原理PV操作,为何同时有互斥操作和同步操作时,互斥操作的p操作要在同步操作的p操作的前面?5.PV操作和WAIT SIGNAL到底是什么区别啊?6.在操作系统中,P操作和V操作各自的动作是如何定义的?7.PV操作的详细过程是怎么样?1.PV操作 什么时候用P操作 什么时候用V操作P就是请求资源,V就是释放资源。为保证乘客的安全,司机和售票员应协调工作:停车后才能开门,关车门后才能行车。用PV操作来实现他们之间的协调。是否允许司机启动汽车的变量S2:是否允许售票员开门的变量driver()/司机进程{ while (1)/不停地循环 { P(S1);请求启动汽车 启动汽车;到站停车;V(S2);释放开门变量。2.如何写操作系统原理的PV原语操作?思路是什么啊?在计算机操作系统中,PV操作是进程管理中的难点。首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,①将信号量S的值减1,即S=S-1;否则该进程置为等待状态;①将信号量S的值加1:即S=S+1,则该进程继续执行,否则释放队列中第一个等待信号量的进程;PV操作的意义。我们用信号量及PV操作来实现进程的同步和互斥:PV操作属于进程的低级通信。什么是信号量。信号量(semaphore)的数据结构为一个值和一个指针?指针指向等待该信号量的下一个进程,信号量的值与相应资源的使用情况有关。表示当前可用资源的数量,当它的值小于0时;其绝对值表示等待使用该资源的进程个数,信号量的值仅能由PV操作来改变,信号量S,S表示可用资源的数量,执行一次P操作意味着请求分配一个单位资源。因此S的值减1,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,而执行一个V操作意味着释放一个单位资源。因此S的值加1,表示有某些进程正在等待该资源?因此要唤醒一个等待状态的进程,利用信号量和PV操作实现进程互斥的一般模型是,进程P1 进程P2 …… 进程Pn…… …… ……P(S)。…… …… …… …… 其中信号量S用于互斥;使用PV操作实现进程互斥时应该注意的是,(1)每个程序中用户实现互斥的P、V操作必须成对出现。先做P操作:(2)P、V操作应分别紧靠临界区的头尾部,临界区的代码应尽可能短。(3)互斥信号量的初值一般为1,利用信号量和PV操作实现进程同步PV操作是典型的同步机制之一。用一个信号量与一个消息联系起来。表示期望的消息尚未产生,当信号量的值非0时,表示期望的消息已经存在;用PV操作实现进程同步时,调用P操作测试消息是否到达。调用V操作发送消息,使用PV操作实现进程同步时应该注意的是,(1)分析进程间的制约关系。确定信号量种类:在保持进程间有正确的同步关系情况下,哪个进程先执行。哪些进程后执行,彼此间通过什么资源(信号量)进行协调,从而明确要设置哪些信号量,(2)信号量的初值与相应资源的数量有关,也与P、V操作在程序代码中出现的位置有关。(3)同一信号量的P、V操作要成对出现,但它们分别在不同的进程代码中。【例1】生产者-消费者问题在多道程序环境下,而生产者-消费者问题是其中一个有代表性的进程同步问题,下面我们给出了各种情况下的生产者-消费者问题。公用n个环形缓冲区 在这个问题中,不仅生产者与消费者之间要同步,而且各个生产者之间、各个消费者之间还必须互斥地访问缓冲区。定义四个信号量:empty——表示缓冲区是否为空,初值为n。full——表示缓冲区中是否为满,mutex1——生产者之间的互斥信号量,mutex2——消费者之间的互斥信号量,初值为1。设缓冲区的编号为1~n-1,定义两个指针in和out,分别是生产者进程和消费者进程使用的指针,指向下一个可用的缓冲区。生产者进程while(TRUE){ 生产一个产品;P(empty);产品送往buffer(in);V(full);} 需要注意的是无论在生产者进程中还是在消费者进程中,两个P操作的次序不能颠倒。应先执行同步信号量的P操作,然后再执行互斥信号量的P操作,否则可能造成进程死锁。允许存放一只水果。爸爸可向盘中放苹果,儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一只水果供吃者取用,请用P、V原语实现爸爸、儿子、女儿三个并发进程的同步。分析在本题中,盘中一次只能放一个水果。当盘子为空时,爸爸可将一个水果放入果盘中。若放入果盘中的是桔子,若放入果盘中的是苹果,本题实际上是生产者-消费者问题的一种变形。生产者放入缓冲区的产品有两类,应设置三个信号量S、So、Sa,信号量S表示盘子是否为空,信号量So表示盘中是否有桔子,信号量Sa表示盘中是否有苹果,int So=0;*父亲进程*/son();*儿子进程*/daughter();*女儿进程*/将水果放入盘中;if(放入的是桔子)V(So);从盘中取出桔子;吃桔子;} } daughter() { while(1) { P(Sa);从盘中取出苹果;V(S);吃苹果;四个进程A、B、C、D都要读一个共享文件F,系统允许多个进程同时读文件F。但限制是进程A和进程C不能同时读文件F,进程B和进程D也不能同时读文件F。为了使这四个进程并发执行时能按系统要求使用文件,现用PV操作进行管理,请回答下面的问题:(1)应定义的信号量及初值:(2)在下列的程序中填上适当的P、V操作。3.PV操作的定义你好.PV操作的定义:PV操作与信号灯的处理相关,P表示通过的意思,V表示释放的意思。4.操作系统原理PV操作,为何同时有互斥操作和同步操作时,互斥操作的p操作要在同步操作的p操作的前面?v=signal 叫法不同而已。5.PV操作和WAIT SIGNAL到底是什么区别啊?你应该可以认为p=wait,v=signal 叫法不同而已。6.在操作系统中,P操作和V操作各自的动作是如何定义的?即S=S-1;②如果S≥0,则该进程继续执行;则把该进程的状态置为阻塞态,把相应的PCB连入该信号量队列的末尾,进行等待(直至其它进程在S上执行V操作,V操作顺序执行下述两个动作:即S=S+1;则该进程继续运行;如果S≤0。7.PV操作的详细过程是怎么样?在操作系统理论中有一个非常重要的概念叫做P,在我们研究进程间的互斥的时候经常会引入这个概念,V操作方法与加锁的方法相比较,来解决进程间的互斥问题。V原语的理论不得不提到的一个人便是赫赫有名的荷兰科学家E.W.Dijkstra。提起解决图论中最短路径问题的Dijkstra算法应当是我们再熟悉不过的了。V原语的概念以及P,V操作当中需要使用到的信号量的概念都是由他在1965年提出的。信号量是最早出现的用来解决进程同步与互斥问题的机制,包括一个称为信号量的变量及对它进行的两个原语操作。信号量为一个整数,我们设这个信号量为:sem。我们规定在sem大于等于零的时候代表可供并发进程使用的资源实体数,sem小于零的时候,表示正在等待使用临界区的进程的个数。在给信号量附初值的时候,p操作和v操作是不可中断的程序段,称为原语。相当于英文的pass,V是荷兰语的Verhoog,P原语操作的动作是:则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度。则进程继续执行;则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。需要提醒大家一点就是P,而且必须成对使用。V愿语执行期间不允许有中断的发生。可以用硬件实现,也可以用软件实现。我们采用如下的定义:{ s.value=s.value-1;{ s.value=s.value+1;} 其中用到两个标准过程:asleep(s.queue);执行此操作的进程控制块进入s.queue尾部,进程变成等待状态 wakeup(s.queue);将s.queue头进程唤醒插入就绪队列 对于这个过程,s.value初值为1时,用来实现进程的互斥。虽软说信号量机制毕加锁方法要好得多,这种信号量机制必须有公共内存,不能用于分布式操作系统,V原语不但可以解决进程管理当中的互斥问题,而且我们还可以利用此方法解决进程同步与进程通信的问题。(1)用P V原语实现进程互斥 把临界区置于P(sem) 和V(sem)之间。当一个进程想要进入临界区时,它必须先执行P原语操作以将信号量sem减1,在进程完成对临界区的操作后,它必须执行V原语操作以释放它所占用的临界区。从而就实现了进程的互斥:具体的过程我们可以简单的描述如下:V(sem) PB;V(sem) (2) 用P V原语实现进程同步 进程同步问题的解决同样可以采用这种操作来解决;我们假设两个进程需要同步进行;一个进程是计算进程,另一个进程是打印进程,那么这个时候两个进程的定义可以表示为,PC(表示计算进程) A。置空标记 V(bufempty) end (3)用P V原语实现进程通信 我们以邮箱通信为例说明问题:发送进程发送消息的时候;邮箱中至少要有一个空格能存放该消息,接收进程接收消息时;邮箱中至少要有一个消息存在;发送进程和接收进程我们可以进行如下的描述,Deposit(m)为发送进程。接收进程是remove(m). Fromnum为发送进程的私用信号量:信箱空格数n,mesnum为接收进程的私用信号量。 复制全文下载全文 复制全文下载全文