进程管理——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就可以坐下了。