PV原理是用来解决操作系统进程之间的同步和互斥的。
同步:异步环境下的一组进程因相互制约而发送消息,进行互相合作互相等待。使各个进程按照一定的速度执行。
互斥:一组进程因为共享一个公共资源,必需保证同一时刻只有一个进程在使用临界资源。
举一个例子就是:
互斥就是很多人过一个独木桥,同时只能有一个人使用这个桥。
同步就是两个人同时过一个桥,一个人骑车,一个人步行,但是两个人必需同时到达。这两个人同时出发,骑车的人的比较快,必需到一段等一下步行的人,保证他们相互制约着到达。
信号量:
代表并发进程可用资源数,小于零表示正在等待资源的进程数。
P操作:
将信号量减一,如果信号量(sem)为负数,则调用p操作的进程停止,直到另一个进程对同一信号量做v操作。
V操作:
将信号量加一,如果信号量(sem)大于等于0则在与sem有关的队列中唤醒一个进程,让他执行。
PV原理原则
1、互斥的信号量的PV操作在一个进程中出现 这里的Sn是互斥的,所以P(Sn)
V(Sn)都在顾客进程里面。
2、同步的信号量的PV操作在两个进程之间交替出现,比如S1,S2在顾客和收营员直接交替出现。
3、个人观点:PV操作难点就是同步的进程之间的操作,这里同步的进程对同一信号量的操作,一定是先P,后V.P操作是使用资源,V操作是释放资源,进程一定是先使用资源,然后再释放资源。
这里就像是骑车的和步行的人,一开始他们都要走,只是走的过程中会出现彼此等待的情况,这就是说开始为什么是P操作了,因为P操作是使用资源,他们要走,所以使用资源。
4、P操作使信号量小于零以后,则停止当前进程,等另一个进程唤醒他,也就是给这个信号量加一。
5、当一个V操作结束后,一般认为,这个进程接下去执行,执行下一个P操作,这里指的是P(S2)操作,然后停止,等待收银员的V操作唤醒他。