P,V操作实例分析
刚开始学习操作系统的时候,就听说PV操作,简单说说PV操作。
● P(S): S=S-1
如果S≥0,则该进程继续执行;
S<0,进程暂停执行,放入信号量的等待队列
● V(S): S=S+1
如果S>0,则该进程继续执行;
S≤0, 唤醒等待队列中的一个进程
到底怎么分析,下面看看一个具体的问题:

首先设信号量S1,S2,其中
S1,表示是否允许司机启动汽车,其初值为0,
S2,表示是否允许售票员开车门,初值为O;

● 分析:
司机进程:
P:S1=S1-1 得:S1=0-1=-1<0 司机进程暂停执行,放入信号量的等待队列(售票员进程)
售票员进程:
关车门;
V:S1=S1+1得:S1=-1+1=0≤ 0 唤醒等待队列中的一个进程
(解释:唤醒司机进程,使司机进程成为就绪状态,司机可以启动车辆,正常行驶,……,直到到V(S2), S2=S2+1 得:S2=0+1=1>0 ,司机进程在此时往下就没有操作了;
在唤醒司机进程的同时,售票员可以售票,执行售票进程,到P(S2)。
如果之前司机进程到V(S2),这里P(S2):S2=S2-1得:S2=1-1=0 ≥ 0,接着往下执行,到最后上下客;
如果之前司机进程未到V(S2),售票员的进程到P(S2),则如下进行)
售票;(同时司机可能,启动车辆;正常行驶;……)
P:S2=S2-1得:S2=0-1=-1< 0 售票员进程暂停执行,放入信号量的等待队列(运行司机进程)
司机进程:
(接着上面未完成的继续往下执行)
启动车辆;
正常行驶;
到站停车;
S2=S2+1 得:S2=-1+1=0≤ 0 唤醒等待队列中的一个进程(运行售票员进程)
售票员进程:
开车门;
上下客;
以上过程(可以是如下):

在售票员进程进程到V(S1),往下售票的同时司机可以启动车辆、……
● 使用PV操作实现进程同步时应该注意的是:
(1)分析进程间的制约关系,确定信号量种类。在保持进程间有正确的同步关系情况下,哪个进程先执行,哪些进程后执行,彼此间通过什么资源(信号量)进行协调,从而明确要设置哪些信号量。
(2)信号量的初值与相应资源的数量有关,也与P、V操作在程序代码中出现的位置有关。
(3)同一信号量的P、V操作要成对出现,但它们分别在不同的进程代码中。
P,V操作实例分析的更多相关文章
- python条件变量之生产者与消费者操作实例分析
python条件变量之生产者与消费者操作实例分析 本文实例讲述了python条件变量之生产者与消费者操作.分享给大家供大家参考,具体如下: 互斥锁是最简单的线程同步机制,面对复杂线程同步问题,Pyth ...
- JQUERY链式操作实例分析
本文实例讲述了jQuery链式操作.分享给大家供大家参考,具体如下: 从过去的实例中,我们知道jQuery语句可以链接在一起,这不仅可以缩短代码长度,而且很多时候可以实现特殊的效果. <scri ...
- python 发送json数据操作实例分析 - python
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 本文实例讲述了python 发送json数据操作.分享给大家供大家参考,具体如下: # !/usr/bin/env py ...
- Java学习笔记:基本输入、输出数据操作实例分析
Java学习笔记:基本输入.输出数据操作.分享给大家供大家参考,具体如下: 相关内容: 输出数据: print println printf 输入数据: Scanner 输出数据: JAVA中在屏幕中 ...
- 关于P,V操作理解的分析
P-V操作定义: 假设sem是个整型变量. P原语的主要操作是: (1)sem减1: (2)若sem减1后仍大于或等于零,则该进程继续执行: (3)若sem减1后小于零,则该进程被阻塞,在相应队列 ...
- P,V操作及同步互斥实例
无论是计算机考研.计算机软件水平考试.计算机操作系统期末考试还是其他计算机岗位考试,P.V原语操作都是一个常考点.下面笔者总结了关于P.V操作的一些知识. 信号量是最早出现的用来解决进程同步与互斥问题 ...
- 使用PHPExcel操作Excel用法实例分析
本文实例分析了使用PHPExcel操作Excel用法.分享给大家供大家参考.具体分析如下: PHPExcel下载地址:http://www.codeplex.com/PHPExcel http://w ...
- Camera图像处理原理及实例分析-重要图像概念
Camera图像处理原理及实例分析 作者:刘旭晖 colorant@163.com 转载请注明出处 BLOG:http://blog.csdn.net/colorant/ 主页:http://rg ...
- Mahout机器学习平台之聚类算法具体剖析(含实例分析)
第一部分: 学习Mahout必需要知道的资料查找技能: 学会查官方帮助文档: 解压用于安装文件(mahout-distribution-0.6.tar.gz),找到例如以下位置.我将该文件解压到win ...
随机推荐
- JavaScript 参数传递与变量复制
ECMAScript 变量可能包含两种不同数据类型的值:基本类型值和引用类型值. 基本类型值指的是简单的数据段,而引用类型值指那些可能由多个值构成的对象. 5 种基本数 ...
- Hadoop源码之Configuration
本文hadoop版本为最新版本2.6.Configuration做为Hadoop的一个基础功能承担着重要的责任,为Yarn.HSFS.MapReduce.NFS.调度器等提供参数的配置.配置文件的分布 ...
- 如何用sql批量删除一个id段内的dedecms文章?
之前因为ytkah批量添加了dedecms文章,数量有些多,后面出现问题了,想要删除一部分织梦文章,后台一篇篇删,删到手软(相关内容:修改dedecms关键词到手软),于是就想到了sql数据库操作!那 ...
- shell截取字符串
image_tag="pangu-20151021102145\"" 1.用#号截取,符号-右面所有字符串 TMP=${image_tag#*-} echo $TMP 得 ...
- HDU 4915 Parenthese sequence
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4915 解题报告:从前往后遍历一次,每次判断')'的数目是不是满足 n < (i +1)/ 2,从 ...
- ios5之后arc的问题
原创: 自从ios5以后, apple官方引进了ARC (automaically reference count 自动索引计数) 这个新特性, 简单的说就是对象设置为nil(空引用)之后, 当自动索 ...
- [OpenJudge 3066]随机序列
[OpenJudge 3066]随机序列 试题描述 Bob喜欢按照如下规则生成随机数: 第一步:令a[0] = S, 当n = 0: 第二步:a[n+1] = (a[n]*A+B)%P: 第三步:如果 ...
- 从零开始写一个武侠冒险游戏-8-用GPU提升性能(3)
从零开始写一个武侠冒险游戏-8-用GPU提升性能(3) ----解决因绘制雷达图导致的帧速下降问题 作者:FreeBlues 修订记录 2016.06.23 初稿完成. 2016.08.07 增加对 ...
- hdu4255筛素数+广搜
Mr. B has recently discovered the grid named "spiral grid".Construct the grid like the fol ...
- Sybase IQ导出文件的几种方式
IQ有四种方法,将表的数据导出为文本文件:1.重定向 SELECT * FROM TABLE1 ># D:MYDATATABLE1.TXT -- 文件生成在执行语句的客户端上 2.通过选项导出 ...