刚开始学习操作系统的时候就聽说PV操作,简单说说PV操作
到底怎么分析,下面看看一个具体的问题:
首先设信号量S1S2,其中
S1表示是否允许司机启动汽车,其初值为0
S2,表示是否允许售票员开车门初值为O;
司机进程暂停执行,放入信号量的等待队列(售票员进程)
(解释:唤醒司机进程,使司机进程成为僦绪状态司机可以启动车辆,正常行驶……,直到到V(S2) S2=S2+1 得:S2=0+1=1>0 ,司机进程在此时往下就没有操作了;
在唤醒司机进程的同时售票员可以售票,执行售票进程到P(S2)。
如果之前司机进程到V(S2)这里P(S2):S2=S2-1得:S2=1-1=0 ≥ 0,接着往下执行到最后上下客;
如果之前司机进程未到V(S2),售票员的进程到P(S2)则如下进行)
在售票员进程进程到V(S1),往下售票的同时司机可以启动车辆、……
● 使用PV操作实现进程同步时应该注意的是:
(1)分析进程间的制约关系确定信号量种类。在保持进程间有正确的同步关系情况下哪个进程先执行,哪些進程后执行彼此间通过什么资源(信号量)进行协调,从而明确要设置哪些信号量
(2)信号量的初值与相应资源的数量有关,也与P、V操作在程序代码中出现的位置有关
(3)同一信号量的P、V操作要成对出现,但它们分别在不同的进程代码中