PV操作例题解析

虽然自己看了书,老师讲了课,以为对PV操作理解了,可是遇到题的时候还是不会思考。以下这道题,花了非常长时间才弄明确,如今把思路写出来,大家共同探讨下。

大家都来思考:

信号量S1、S2、S3、S4分别代表什么含义?

误区:

把S1、S2、S3、S4当成是P1、P2、P3、P4的信号量

关键点:

1.P1运行不须要信号量的制约

2.信号量初始值为0

3.结合前驱图

4.从简单入手(P4)

我的思路:

依据图中P2运行完后V(S3),P3运行完后V(S4),结合前驱图,P2在P3之前,P3在P4之前,能够easy得出,d处应为P(S4);

那么c呢,从前驱图能够看到,P1和P2均有一个指向P3的箭头,所以c处不仅含有P(S3),还有还有一个P操作,是P1运行后V的;

而P2的前驱是P1,故P1运行完后须要V一个供P2运行P操作。

答案:

a:V(S1)V(S2)    b:P(S1)    c:P(S2)P(S3)   
d:P(S4)

感受:

思路不清晰,思维局限,打不开,总认为欠缺一点东西。审题的时候一定细致,看懂每一句的含义。假设不会做,能够依据现有知识去猜測,考场上不必弄明确每一道题的原理。

时间: 2024-08-25 00:26:32

PV操作例题解析的相关文章

PV 操作经典例题---三个进程之间的同步

问题: 总共有 读入.执行.打印 三个进程,试用PV操作描述读入B1打印B2的同步过程. 问题解读: 这个问题就是说了这样一件事:一个输入B1,被操作之后,成为B2,将B2打印.怎样用PV操作来说这件事.那么新的问题来了:啥是个PV操作? 就拿这道题来解释PV操作吧,我想打印一个值,前提条件是这个值存在吧,如果不存在,那么打印这个动作就不应该被执行,不能说啥也没有在那瞎打印吧.那么怎样才能让它不执行呢? 这就需要引入信号量机制了: 当一个操作的信号量为负数的话,就会挂起等待,不执行. 当一个操作

PV操作,我终于懂你了!

上个星期,米老师给我们讲课实在是精彩!本人终于对Pv操作有了自己的理解.之前一直不太理解Pv操作,现在总结一下,以供下阶段学习和总结. 为什么叫PV操作?原因是:这是狄克斯特拉用荷兰文定义的,因为在荷 兰文中,通过叫passeren,释放叫vrijgeven,PV操作因此得名. 这张图乍一看谁也不知道我想说明什么.我想通过这张图来给大家解释一下PV操作! 中间这加粗的黑线是秤杆,就像我们生活中的上下控制的电源开关!只有两个状态,一个是向上,一个是向下. 这张图的上面是消费者(儿子),对于消费者来

Operating System-进程/线程内部通信-信号量、PV操作的实现和应用(解决哲学家进餐和生产者消费者问题)

本文主要内容: 信号量的实现 利用信号量解决哲学家用餐问题 利用信号量解决生产者消费者问题 一.信号量的实现 1.1 信号量结构 typedef struct { int value; struct process * list } semaphore; value代表当前信号量可以使用的数量,list代表当前信号量上所等待的进程. 1.2 P操作实现 P(semaphore * s) { s.value--; if(s.value < 0) { add current process to s

Operating System-进程/线程内部通信-信号量和PV操作

本文介绍操作系统进程管理的两个核心概念: 信号量 PV操作 一.信号量介绍 1.1 信号量引入 信号量(Semaphore)1965年由Dijkstra引入的.信号量一般由一个值是一个变量,其值有可能是0,或者一个正数,或者是负数: 0表示没有资源可以使用 大于0,标识可用资源的数量 小于0,其绝对值表示等待这个资源的进程的个数 针对信号量,Dijkstra提出了两个操作: P操作 V操作 信号量的值只有通过PV操作来完成. 1.2 PV原语操作(atomic action) PV操作里面会有一

clients(PV操作共享内核内存进行输入输出分屏) - server(进程间通信)模型实现

1.拓扑结构 2.PV操作共享内核内存进行输入输出分屏 (1) 1 int semop(int semid,struct sembuf *sops,size_t nsops): 功能描述 操作一个或一组信号. semid: 信号集的识别码,可通过semget获取. sops: 指向存储信号操作结构的数组指针,信号操作结构的原型如下 1 struct sembuf 2 { 3 unsigned short sem_num; /* semaphore number */ 4 short sem_op

软考征程之Pv操作

一.概念 1.PV操作的含义 PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下: P(S):①将信号量S的值减1,即S=S-1: ②如果S30,则该进程继续执行:否则该进程置为等待状态,排入等待队列. V(S):①将信号量S的值加1,即S=S+1: ②如果S>0,则该进程继续执行:否则释放队列中第一个等待信号量的进程. PV操作的意义:我们用信号量及PV操作来实现进程的同步和互斥.PV操作属于进程的低级通信. 2.进程的同步和互斥 同步:指在并发进程之

信号量与PV操作

在操作系统中进程之间经常会存在互斥和同步两种关系.为了有效处理这种情况,W.Dijskra在1965年提出信号量和PV操作的概念(1)信号量:一种特殊的变量,表现形式是一个整型S和一个队列(2)P操作:也成为"down()和wait()操作",使S=S-1,若S<0,进程暂停执行并放入信号量的等待队列.(3)V操作,也称为"up()和signal()操作",使S=S+1,若S<=0,唤醒等待队列中的一个进程. PV操作属于进程的低级通信. 利用信号量和P

PV操作 (转载)

PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思.信号量是最早出现的用来解决进程同步与互斥问题的机制,包括一个称为信号量的变量及对它进行的两个原语操作. 信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程.信号量的值与相应资源的使用情况有关.当它的值大于0时,表示当前可用资源的数量:当它的值小于0时,其绝对值表示等待使用该资源的进程个数.注意,信号量的值仅能由PV操作来改变. 一般来说,信号量S>=0时,S表示可用资源的数量.执行一次P操作意

P-V操作

1.P-V操作原理 P操作和V操作是不可中断的程序段,称为原语. P原语操作的动作 (1).sem减1: (2).若sem减1后仍大于或等于0,则进程继续执行: (3).若sem减1后小于0,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度. V原语操作的动作 (1).sem加1: (2).若相加结果大于0,则进程继续执行: (3).若相加结果小于或等于0,则从该信号的等待队列中唤醒一等待进程,然后转进程调度. 注意:P.V操作对于每一个进程来说,都只能进行一次,而且必须是成对使用,且