软考知识点——进程管理PV操作

时间:2024-03-15 13:36:32

含义:PV操作是一种实现进程互斥与同步的有效方法。PV操作与信号量的处理相关,P表示通过的意思,V表示释放。
具体定义:
P(S):
①将信号量S的值减1,即S=S-1;
②如果S30,则该进程继续执行;否则该进程置为等待状态,排入等待队列。
V(S):
①将信号量S的值加1,即S=S+1;
②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。
考点:释放、等待
真题:
软考知识点——进程管理PV操作

分析:
首先,有顾客和收银员两进程,所以这个应该有同步的关系,要协作完成工作。顾客进程的主要工作是进入超市,在进超市之前看看自己能不能进,因为超市限制顾客的人数了。然后进去了,就开始买东西,买完了,就找收银员付钱,付完钱就可以走了。而收银员的工作应该是有顾客付钱来了,就要收钱了,收完钱了,再看看有没有买完东西要付钱的顾客,没有的话可以休息,有的话就继续收钱。
单看顾客进程,从上往下看。顾客进入的前提是要看看是不是能进去。题中信号量S1,S2,Sn初值分别为0,0,n。Sn表示超市可以放n个顾客进来,此时表示的是还有n个资源,也就是超市里一个顾客也没有。S1和S2都等于0是表示顾客和收银员都只有0个资源。
首先顾客进入,P(Sn)一下,Sn=Sn-1=n-1,n-1>0,所以可以放人。然后在超市购物,购完物要付款了,得找收银员了。是P一下,还是V一下,是P(S1)还是P(S2),是V(S1)还是V(S2)?
由于S1和S2都是0,虽然是先P,再V。而且一般同步是P自己,V别人。但是如果P一下,变-1<0,就要开始等待了,进行不下去了。所以应该是V一下,V谁呢,V收营员。哪个信号量是收银员? 不如假设一个,S1好了。V(S1),释放一个收营员的资源,S1=S1+1=1>0,所以收银员可以开始收费了。P(S2)一下,S2=S2-1=-1<0,其他顾客,就不要来付钱了,没地。而收银员要收费就看另一边好了
软考知识点——进程管理PV操作

收银员先怎样怎样,然后收费,然后怎样怎样。还是照一般的理,一般是先P,再V。而且一般同步是P自己,V别人。所以看看c1应该是P,P(S1)=S1-1=1-1=0,表示收银员的资源被占用了,其他要结账的顾客我忙着呢等等啊。c2,是收完钱,V(S2),S2=S2+1=1>0,所以顾客又可以开始来付钱了。
软考知识点——进程管理PV操作

最后顾客走了,释放了他在超市里占的那个资源,V(Sn)。 按照分析的结果,a、b1、b2、c1、c2分别是P(Sn),V(S1),P(S2),P(S1),V(S2)。然后根据选项答案是CDA