操作系统 PV原理

时间:2024-03-19 21:18:35

PV原理是用来解决操作系统进程之间的同步和互斥的.

同步:一补环境下的一组进程因相互制约而发送消息,进行互相合作互相等待.使各个进程按照一定的速度执行.

互斥:一组进程因为共享一个公共资源,必需保证同一时刻只有一个进程在使用临界资源.

举一个例子就是:

互斥就是很多人过一个独木桥,同时只能有一个人使用这个桥

同步就是两个人同时过一个桥,一个人骑车,一个人步行.但是两个人必需同时到达.这两个人同时出发,骑车的人的比较快,必需到一段等一下步行的人.保证他们相互制约着到达.

信号量:

代表并发进程可用资源数,小于零表示正在等待资源的进程数.

P操作:

将信号量减一,如何信号量(sem)为负数,则调用p操作的进程停止,直到另一个进程对同一信号量做v操作 .

V操作:

将信号量加一,如何信号量(sem)大于等于0则在与sem有关的队列中唤醒一个进程,让他执行.

这里通过一个例子来讲述PV操作不容易理解的地方.

操作系统 PV原理

这里的信号量Sn代表允许顾客人数

S1代表收银员收费

S2代表顾客付款

a:P(Sn) b1:V(S1) b2:P(S2) c1:P(S1) c2:V(S2)

分析说明:

我们不明白的一般都是c1 c2 b1 b2这几个代表什么

其实可以这么来判断:

有这几个原则:

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操作唤醒他.

这些是个人看法,欢迎大家指证