P-V操作定义:

假设sem是个整型变量。
P原语的主要操作是:

(1)sem减1;

(2)若sem减1后仍大于或等于零,则该进程继续执行;

(3)若sem减1后小于零,则该进程被阻塞,在相应队列中排队,然后转向系统的进程调度。

V原语的主要操作是:

(1)sem加1;

(2)若相加结果大于零,则进程继续执行;

(3)若相加结果小于或等于零,则唤醒一阻塞在该信号量上的进程,然后再返回原进程继续执行或转进程调度。

 
我原先对于PV操作的概念很模糊,就知道  P操作是减法运算(S:=S-1),当信号量S小于0时申请资源;V操作是加法运算(S:=+1),当信号量小于等于0时释放资源;P、V操作二者必须成对出现。
但是关于具体含义,我是一点也不清楚。但是昨晚经过我们讨论后,我对其中原理的理解渐渐的就理解了,但是同样往更深层次的理解要求也就更深了,我这样,别人也一样!
这就是为什么后来小组讨论进入了最后一个也是最有争议的一点(只要明白了这一点,PV操作就全部明白了),如下图:
【b1:V(S1);b2:P(S2);c1:P(S1);c2:V(S2);S1=0;S2=0】
争议的地方是:执行到V(S1)时,唤醒收银员进程执行P(S1),那么此时顾客进程是否还继续执行呢?换句换说唤醒收银员进程到底是怎么唤醒的。
其实我认为最为正确的PV原理解释是(如果有不对的地方可以及时提出):
顾客进程与收银员进程由于是同步关系,所以二者进程其实在一开始就并发执行,收银员进程执行到P(S1)时,由于S=S-1,S1得-1,所以等待,顾客进程执行到V(S1)时此时由于S1为-1,经S=S+1计算S1为0,所以唤醒收银员进程P(S1),此时顾客进程是继续进行的,执行到P(S2)时,S2经计算得-1,所以等待,收银员进程执行到V(S2)时,S2经计算得0,所以唤醒顾客进程,收银员进程继续执行,执行到P(S1)时,由于S1经计算得-1,所以等待,而此时顾客进程执行完毕离开超市。
其实蓝字部分还有一种可能,就是唤醒收银员进程后,收银员进程首先进行到V(S2)【比顾客进程到达P(S2)早】,其实最终结果是不会变的,V(S2)经过计算此时为1,所以继续执行,执行到P(S1),可此S1经计算为-1,所以等待,而顾客进程执行到P(S2)时,S2经过计算为0,所以继续执行,最终离开超市。
通过以上我们可以看出,站在不同角度分析,就会有多种解释的方法,这也是造成我们产生歧义的主要原因,就是谁说的都对,最终结果都一样,但是到底谁才是真理呢?我猜想,大家的猜想是把所有的可能都包含在内了,但是我们不明白,所以总认为有一方是错的,其实谁的解释都是正确的。
基本类型的变量如果是临时变量,只要定义了,就会分配内存空间,不管是否被赋值;如果是作为对象的属性出现,只要该对象不实例化,就不会分配内存空间。

一个完整的Java程序运行过程会涉及以下内存区域:
1、寄存器:JVM内部虚拟寄存器,存取速度非常快,程序不可控制。
2、 栈:保存局部变量的值,包括:
1)用来保存基本数据类型的值;
2)保存类的实例,即堆区对象的引用(指针)
3)也可以用来保存加载方法时的帧
3、堆:用来存放动态产生的数据,比如new出来的对象。注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因为同一个类的对象拥有各自的成员变量,存储在各自的堆中,但是他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。 4、常量池:JVM为每个已加载的类型维护一个常量池,常量池就是这个类型用到的常量的一个有序集合。包括直接常量(基本类型,String)和对其他类型、方法、字段的符号引用(1)。池中的数据和数组一样通过索引访问。由于常量池包含了一个类型所有的对其他类型、方法、字段的符号引用,所以常量池在Java的动态链接中起了核心作用。常量池存在于堆中。 5、代码段:用来存放从硬盘上读取的源程序代码。
6、数据段:用来存放static定义的静态成员

关于P,V操作理解的分析的更多相关文章

  1. 关于P,V操作理解的突破,关于并发设计与并行

    今天又找了一篇博客研究P,V操作.. 发现..它有一个变量没有声明.. 我就换了篇博客..http://c.biancheng.net/cpp/html/2600.html 然后就看懂了.. 关键突破 ...

  2. P,V操作实例分析

    刚开始学习操作系统的时候,就听说PV操作,简单说说PV操作. ●  P(S): S=S-1 如果S≥0,则该进程继续执行:               S<0,进程暂停执行,放入信号量的等待队列 ...

  3. 操作系统中的P,V操作(转)

    无论是计算机考研.计算机软件水平考试.计算机操作系统期末考试还是其他计算机岗位考试,P.V原语操作都是一个常考点.下面笔者总结了关于P.V操作的一些知识. 信号量是最早出现的用来解决进程同步与互斥问题 ...

  4. P.V操作【转】

    阐述P,V原语的理论不得不提到的一个人便是赫赫有名的荷兰科学家 E.W.Dijkstra.如果你对这位科学家没有什么印象的话,提起解决图论中最短路径问题的Dijkstra算法应当是我们再熟悉不过的了. ...

  5. ElasticSearch Index操作源码分析

    ElasticSearch Index操作源码分析 本文记录ElasticSearch创建索引执行源码流程.从执行流程角度看一下创建索引会涉及到哪些服务(比如AllocationService.Mas ...

  6. P,V操作及同步互斥实例

    无论是计算机考研.计算机软件水平考试.计算机操作系统期末考试还是其他计算机岗位考试,P.V原语操作都是一个常考点.下面笔者总结了关于P.V操作的一些知识. 信号量是最早出现的用来解决进程同步与互斥问题 ...

  7. RAC某节点v$asm_disk查询hang分析处理

    主题:RAC某节点v$asm_disk查询hang分析处理 环境:Oracle 11.2.0.3 RAC 故障描述:RAC环境2个节点,节点1查询v$asm_disk正常返回结果,节点2查询v$asm ...

  8. 另类P、V操作问题-详细图解

    问题模型 有一个系统,定义如下P.V操作: P(s): s.count--; then 将本进程插入相应队列末尾等待; V(s): s.count++; then 从相应等待队列队尾唤醒一个进程,将其 ...

  9. 【HANA系列】SAP HANA数据处理的理解与分析一

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA数据处理的理解与 ...

随机推荐

  1. ios中的几种多线程实现

    iOS 支持多个层次的多线程编程,层次越高的抽象程度越高,使用起来也越方便,也是苹果最推荐使用的方法.下面根据抽象层次从低到高依次列出iOS所支持的多线程编程范式:1, Thread;2, Cocoa ...

  2. iOS开发摇动手势实现详解

    1.当设备摇动时,系统会算出加速计的值,并告知是否发生了摇动手势.系统只会运动开始和结束时通知你,并不会在运动发生的整个过程中始终向你报告每一次运动.例如,你快速摇动设备三次,那只会收到一个摇动事件. ...

  3. 如何用jar命令对java工程进行打包

    如何用jar命令对java工程进行打包 有时候为了更方便快捷的部署和执行Java程序,要把java应用程序打包成一个jar包.而这个基础的操作有时候也很麻烦,为了方便java程序员们能够方便的打包ja ...

  4. c/c++指针

    指针主要分: 指向单一的某个对象/变量, 用于多态或函数指针, 这个不难 - 一级指针 其次是指向数组, 用来操作/遍历数组元素 - 一级/二级指针 指向数组的一级指针很简单了: p指向的是数组的元素 ...

  5. lamp 网站打不开,不显示也不报错,

    原因是该网站的编程员,习惯简写,<? ?>;而服务器版本的php.ini 默认不支持只支持<?php ?>这种格式. 解决方法vim /usr/loacl/php/etc/ph ...

  6. 《Hadoop基础教程》之初识Hadoop

    Hadoop一直是我想学习的技术,正巧最近项目组要做电子商城,我就开始研究Hadoop,虽然最后鉴定Hadoop不适用我们的项目,但是我会继续研究下去,技多不压身. <Hadoop基础教程> ...

  7. (9)UI(容器)

    1.基础容器   基础容器可以设置子容器布局.是否裁切子元素.填充颜色.背景图片资源等属性.   使用场景.   在官方示例中,大量使用了基础容器作布局管理,如下面的主界面中,用户名称,钻石和金币就使 ...

  8. /run/systemd/private: No such file or directory

    今天执行consul脚本的时候报错 /run/systemd/private: No such file or directory reboot -f 重启电脑private文件就出现了.

  9. HNU 12847 Dwarf Tower(最短路+队列优化)

    题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12847 解题报告:有n样物品,编号从1到n第i样物品可以通过金 ...

  10. HNU 12833 Omar’s Bug(分情况讨论)

    题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12833&courseid=268 解题报告:有个11个 ...