信号量及PV原语
操作系统中进程互斥和同步的实现的一个最基本的方方是使用信号量和PV原语。
信号量S的物理意义:当S≥0的时候表示,某个资源可以使用的数量,当S<0的时候,其绝对值表示等待某个资源的进程数。
一般实现进程间的互斥操作的时候S的初始值为1或资源的数目,实现进程间同步的时候S的初始值为0或某个正整数。
P操作表示进程申请一个资源,其定义如下:
S=S-1,如果S≥0,那么执行P操作的进程继续执行,否则执行P操作的进程转换成阻塞状态。
V操作表示进程释放一个资源,其定义如下:
S=S+1,如果S≤0,那么从阻塞状态中唤醒一个进程,插入到就绪队列中,执行V操作的进程继续执行,否则执行V操作的进程继续执行,其他进程无影响。
关于PV操作的理解,首先P进程是申请一个资源,那么只需要管自己是否有执行的机会对其他进程没啥影响,如果资源满足执行P操作进程执行的话就执行,否则就阻塞,而V操作是释放一个资源,那么释放完资源,不管现在资源怎样对执行V进程的进程都没有影响,所以执行完V操作之后,该进程总是继续执行,同时V操作可能会对其他进程有所影响,如果执行V操作之后所释放的资源刚好有其他进程在等待,那么就可以从那些等待的进程中唤醒一个插入到就绪队列中了。如果执行P操作后S≥0,那么显然执行P操作(请求资源)之前S>0(有资源可用),所以P进程就可以执行啦,否则就是执行P之前S≤0(没资源可用),所以P进程就被阻塞了。V操作也是一样,如果执行V操作之后S≤0,那么说明执行V之前是S<0(有进程等着用该资源)的,而V操作正好要释放一个这样的资源,所以需要在等待的进程中唤醒一个插入到就绪队列中。这里经常搞混的地方是S=0的时候,按照上述分析如果P操作后S=0,那么P之前S=1,所以有资源可用,。。。如果V操作之后S=0,那么V之前,S=-1,有一个进程在等待,。。。
互斥操作:A、B两个进程对S资源互斥就是他们不能同时使用S资源
S初值为设为1
A: B:
P(S) P(S)
使用S资源 使用S资源
V(S) V(S)
同步操作:进程B需要从进程A获得消息后才执行,而这消息,要在A产生消息之后才提供
S初始值设为0
A: B:
产生消息 P(S)
V(S) 获得消息
信号量及PV原语的更多相关文章
- 信号量与PV操作
在计算机操作系统中,PV操作是进程管理中的难点.首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下: P(S):①将信号量S的 ...
- 转 信号量与PV操作
在计算机操作系统中,PV操作是进程管理中的难点.首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下: P(S):①将信号量S的 ...
- PV原语操作详解
from http://www.blogjava.net/wxqxs/archive/2009/05/10/277320.html PV原语通过操作信号量来处理进程间的同步与互斥的问题.其核心就是一段 ...
- windows多线程(九) PV原语分析同步问题
一.PV原语介绍 PV原语通过操作信号量来处理进程间的同步与互斥的问题.其核心就是一段不可分割不可中断的程序. 信号量的概念1965年由著名的荷兰计算机科学家Dijkstra提出,其基本思路是用一种新 ...
- Operating System-进程/线程内部通信-信号量和PV操作
本文介绍操作系统进程管理的两个核心概念: 信号量 PV操作 一.信号量介绍 1.1 信号量引入 信号量(Semaphore)1965年由Dijkstra引入的.信号量一般由一个值是一个变量,其值有可能 ...
- Pintos修改优先级捐赠、嵌套捐赠、锁的获得与释放、信号量及PV操作
Pintos修改优先级捐赠.嵌套捐赠.锁的获得与释放.信号量及PV操作 原有的优先级更改的情况下面没有考虑到捐赠的情况,仅仅只是改变更改了当前线程的优先级,更别说恢复原本优先级了,所以不能通过任何有关 ...
- 信号量和PV操作写出Bakery算法的同步程序
面包店烹制面包及蛋糕,由n个销售员卖出.当有顾客进店购买面包或蛋糕时,应先在取号机上取号,然后等待叫号,若有销售员空闲时便叫下一号,试用信号量和PV操作写出Bakery算法的同步程序. 设计要求 1) ...
- 用信号量及其PV操作处理实际问题
43.现有3个生产者P1.P2.P3,他们都要生产橘子汁,每个生产者都已分别购得两种不同的原料,待购齐第三种原料后就可配制成橘子汁装瓶出售.有一供应商能源源不断的供应糖.水.橘子精,但每次只拿出一种原 ...
- Operating System-进程/线程内部通信-信号量、PV操作的实现和应用(解决哲学家进餐和生产者消费者问题)
本文主要内容: 信号量的实现 利用信号量解决哲学家用餐问题 利用信号量解决生产者消费者问题 一.信号量的实现 1.1 信号量结构 typedef struct { int value; struct ...
随机推荐
- LintCode-Fast Power
Calculate the an % b where a, b and n are all 32bit integers. Example For 231 % 3 = 2 For 1001000 % ...
- ios关于layer的一些常用属性
UILabel * labb = ... //set the border of labb labb.layer.borderWidth = 1; labb.layer.borderColor = [ ...
- 视频学习_css基础学习
块状元素 block element 容器元素 设置高宽 width height 可以容纳 文本 内脸 和其他块状 霸道 独占一行 特例:form 只容纳 块状元素 常见元素 http:// ...
- 1068: [SCOI2007]压缩 - BZOJ
Description 给一个由小写字母组成的字符串,我们可以用一种简单的方法来压缩其中的重复信息.压缩后的字符串除了小写字母外还可以(但不必)包含大写字母R与M,其中M标记重复串的开始,R重复从上一 ...
- C#中Json和List/DataSet相互转换
#region List<T> 转 Json /// <summary> /// List<T> 转 Json /// & ...
- 安装 SQL SERVER PROFILER
SQL SERVER 2008 R2 (10.50.40) 版本,安装 SQL SERVER PROFILER:通过 command prompt,使用以下命令:setup.exe /FEATURES ...
- 1-Highcharts环境介绍及配置
Highcharts:功能强大.开源.美观.图表丰富.兼容绝大多数浏览器的纯js图表库,废话不多说,直接进入主题! 首先,下载Highcharts包文件,下载地址如下: 中文网下载中心:http:// ...
- unity3d 射线扫描 忽略图层
原地址:http://blog.csdn.net/w88193363/article/details/38331205 函数说明 static RaycastHit2D[] RaycastAll(Ve ...
- HDU 1385 Minimum Transport Cost (最短路,并输出路径)
题意:给你n个城市,一些城市之间会有一些道路,有边权.并且每个城市都会有一些费用. 然后你一些起点和终点,问你从起点到终点最少需要多少路途. 除了起点和终点,最短路的图中的每个城市的费用都要加上. 思 ...
- 使用 C# 对文件进行压缩和解压
C#中对文件压缩和可以使用两个类: GZipStream 类 此实例分为几个模块,分别为: 压缩函数: /// <summary> /// 压缩文件 /// </summary> ...