关于P,V操作理解的分析

毫米汞柱关于P,V操作理解的分析
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)。池中的数据和数组⼀样通过索引访问。由于常量池包含了⼀个类型
5、代码段:⽤来存放从硬盘上读取的源程序代码。
6、数据段:⽤来存放static定义的。

本文发布于:2024-09-23 06:26:00,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/257912.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:进程   操作   对象   收银员   常量   理解
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议