ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

PV原语 稍微 详细点的表示方法

2021-09-25 09:33:57  阅读:226  来源: 互联网

标签:PV S2 S1 稍微 信号量 原语 进程 唤醒


PV原语的边界条件写的太精简,所以我稍微详细点的表示。

 

https://www.cnblogs.com/cocowool/archive/2012/06/11/2544823.html这篇文章中精简的表示如下:

PV原语

P原语:P是荷兰语Proberen(测试)的首字母。为阻塞原语,负责把当前进程由运行状态转换为阻塞状态,直到另一个进程唤醒它。具体操作为:申请一个空闲资源(把信号量减1),若成功,则退出;若失败,则该进程被阻塞。

V原语:V是荷兰语Verhogen(增加)的首字母。为唤醒原语,负责把一个被阻塞的进程唤醒,他有一个参数表,存放着等待被唤醒的进程信息。具体操作为:释放一个被占用的资源(把信号量加1),如果发现有被阻塞的进程,则选择一个唤醒。

表示方法

P(S):表示将信号量S的值减一,即S=S-1;如果S>=0,则该进程继续执行,否则该进程置为等待状态,排入等待队列(队列Q)。

V(S):表示将信号量S的值加一,即S=S+1;如果S>0,则该进程继续执行,否则释放队列(Q)中第一个等待信号量的进程。

 

我的稍微详细点表示方法

P(S):表示将信号量S的值减一,即S1= S; S2=S1-1;如果S2>=0,也就是S1>=1,说明有现成的资源直接可以用,不用等!,则该进程继续执行,否则(也就是S2<0变成负数)该进程置为等待状态,排入等待队列(队列Q)。

V(S):表示将信号量S的值加一,即S1=S; S2=S1+1;如果S2>0,也就是S1>-1也就是S1>=0,也就是说明V操作之前S1不是负数,说明根本不存在等待资源的进程,等待队列是空的!,则该进程继续执行,否则(也就是V操作之后释放了一个资源,又有至少一个正在等待资源的进程,那就去唤醒这个进程)释放队列(Q)中第一个等待信号量的进程。

标签:PV,S2,S1,稍微,信号量,原语,进程,唤醒
来源: https://www.cnblogs.com/zjsxwc/p/15333452.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有