进程管理——PV操作

PV操作是用来解决互斥和同步之间的问题。

临界区:每个进程中访问临界资源的那段代码称为临界区。

信号量:信号量是一种特殊的变量,可以理解为计数器,通过PV操作控制计数器来实现进程的互斥和同步。信号量可以分为互斥信号量 同步信号量。

PV操作:解决互斥和同步的问题,PV操作是分开来看的;

P操作:使S=S-1,若S≥0,则该进程继续执行,否则该进程排入等待队列。

V操作:使S=S+1,若S≤0,唤醒等待队列中的一个进程。

互斥信号量:为了解决资源一次只能被一个进程占用的问题;

同步信号量:代表资源的个数


例题

目前又2个凳子,但是有4个人,分别为A、B、C、D。

A现在需要坐凳子,在坐之前先判断凳子是否被占用,就会先进行一个P操作:

因为有2个凳子,P操作时S=S-1,

2-1=1,S=1

当S≥0时,进程执行,所以A坐下。

现在到B想要坐下,也是先进行P操作,因为有一个凳子已经被A占了,所以P操作是1-1=0,当S≥0时,进程执行,所以B也可以坐下。

现在到C想要坐下,也是P操作,因为2个凳子都已经被占用,所以P操作的结果为0-1=-1,S=-1,当S≥0时程序执行,否则等待,所以现在C只能等待。

现在到D想要坐下,先进行P操作,-1-1=-2,S=-2,S小于0,所以D进入等待队列。

P操作执行完成后执行V操作,V操作=S=S+1,首先时A进行V操作,目前凳子数为-2,进行V操作:

S=S+1=-2+1=-1,当S≤0,唤醒等待队列中的一个进程,所以现在C可以坐下,以此类推,当B进行V操作之后D就可以坐下了。


二维码

发表评论