PV操作
Posted 一路追寻
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PV操作相关的知识,希望对你有一定的参考价值。
三态模型
进程通常分为就绪、运行和阻塞三种工作状态。
三种状态在某些条件下可以转换,具体转换关系如下:
进程三个状态之间的转换是通过PV操作和信号量来控制的,其中信号量起到了很重要的作用。
信号量
信号量是最早出现的用来解决进程同步与互斥问题的机制。
信号量(Saphore)由一个值和一个指针组成,指针指向等待该信号量的进程,信号量的值表示相应资源的使用情况。
信号量
S>=0
时,S
表示可用资源的数量,执行一次P操作意味着请求分配一个资源,因此S
的值减1
;信号量
S<0
时,表示已经没有可用资源,S
的绝对值表示当前等待该资源的进程数,请求者必须等待其他进程释放该类资源才能继续运行,而执行一个V操作意味着释放一个资源,因此S
的值加1
;若
S<0
,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。注意,信号量的值只能通过PV操作来改变。
两类问题
在说明这两类问题之前首先解释一些相关的概念:
PV操作:一种实现进程互斥与同步的有效方法,包含P操作与V操作。
P操作:使 S=S-1
,若 S>=0
,则该进程继续执行,否则排入等待队列。
V操作:使 S=S+1
,若 S>0
,唤醒等待队列中的一个进程。
临界资源:同一时刻只允许一个进程访问的资源,与上面所说的 S
有关联。
参考:
[1] https://blog.csdn.net/strikedragon/article/details/82791450
[2] https://blog.csdn.net/wuxy720/article/details/78936912
[3] https://baike.baidu.com/item/PV%E6%93%8D%E4%BD%9C/122128?fr=aladdin
以上是关于PV操作的主要内容,如果未能解决你的问题,请参考以下文章