PV操作

PV操作最简单的理解:

比方说我们办公的地点只有一台打印机(资源个数是1),甲同事正在使用它(P操作,占用资源,信号量,这个时候资源个数-1),甲同事使用完了之后,释放打印机资源(V操作,这个时候资源个数+1)。

 

临界资源:如千军万马过独木桥,其中独木桥就是临界资源。

临界区:访问临界资源的代码段

信号量:我们经常见到的PSVS)中的S就是信号量,也就是说pv操作,操作的是信号量。在这里我们就可以将信号量理解为资源的个数。信号量的取值范围一般是 系统资源个数-——进程数-系统资源个数,如果出现负数,表示当前有几个进程正在排队等待。

PV操作说白了就是两种原子操作的组合,有P操作和V操作。

下面进行详细的解答:

P操作:

(1)将信号量S的值减1,即S=S-1;

(2)如果S>=0,则该进程继续执行;否则该进程置为等待状态。

V操作:

(1)将信号量S的值加1,即S=S+1;

(2)如果S>0该进程继续执行;否则说明有等待队列中有等待进程,需要唤醒等待进程。

 

 

 

注意:单缓存区一次只能缓存一个产品。

说白了P操作就是减操作,V操作就是加操作。也可以理解成:P是加锁操作,V是解锁操作。

 

 

 答题技巧:

图中有几条箭线,信号量就标注几个,这是答题的技巧,在标注信号量的时候,遵循的规则是:从左到右,从小到大。在设置信号量的时候,还要注意前驱关系,一定要保证自己设置的信号量能够符合前驱关系。

初始进程没有P操作,结束进程没有V操作。

哪个进程开始执行的时候,一定会索要资源,这个时候就会执行P操作。也就是加锁操作。V操作也可以理解为是开锁操作。

posted on 2021-08-07 17:50  ~码铃薯~  阅读(2877)  评论(0编辑  收藏  举报

导航