软考学习--PV操作一--概念解析

来源:互联网 发布:js字符串match的用法 编辑:程序博客网 时间:2024/05/16 23:39

写博客的原因

PV操作,尽管做了N道题,也听过人家讲课,但是依旧没有懂.一是跟我没有静下心来慢慢分析有关,二是其实自己也不想学这个,反正软考考的也是上午题,最多1,2分.一点都不会,我可以靠蒙,正确率也还好;运气不好,最多也就扣掉1,2分,并且这个还不是年年都考.所以,作为考试,我觉得我不想学它.但是作为攻克一个知识点,我还是蛮想试试的.

由于我写博客的时候会比较认真,以前看不进去的东西,写博客的时候都会认真地看,所以我觉得把PV操作写成一篇博客,要是写完了这篇博客,我还弄不懂PV操作,应该不会吧……要相信自己的人品

                                                    --2013/10/10 14:18

 

PV操作的相关概念

 

    PV操作是操作系统中进程之间通信用到的两种操作,PV操作中的P是荷兰语的Passeren(通过),相当于英文的pass(通过),V是荷兰语的Verhoog(提高,增多),相当于英文中的increment(递增,增大).(翻译出自Google翻译) .也就是P是通过,V是增加.我理解的,他们的通过和增加是针对资源来说的,V是增加资源,P是减少资源.

 

    还有一个信号量的概念,摘自百度百科:

 

信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。所以图中蓝色的矩形和红色的指针加起来是信号量的数据结构.

 

 

对于信号量有值和指针,那信号量的值是什么?

 

百科理解:

 

信号量的值与相应资源的使用情况有关

当它的值大于0时,表示当前可用资源的数量;

当它的值小于0时,其绝对值表示等待使用该资源的进程个数

我的理解:

 

    也就是说,信号量的值>=0,值是多少,表示有多少资源可用.如信号量的值为2,则有2个资源可用.

 

而信号量的值<0,表示没有任何资源了,而值的绝对值表示有多少个在等待该资源的进程.如信号量为-2,则表示没有资源都被占完了,还有2个进程在等待使用该资源.

 

下面是PV操作的文字解释,我觉得解释的很好.

 

百科理解:

 

一般来说,信号量S>=0时,S表示可用资源的数量。

 

执行一次P操作意味着请求分配一个单位资源,因此S的值减1;

    P(S)   S=S-1

当S<0时,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。

 

而执行一个V操作意味着释放一个单位资源,因此S的值加1;

    V(S)  S=S+1

若S<=0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。

 

我的理解:

 

也就是P(S)表示,进程请求分配一个资源给它,所以S减去1.

如果S原来等于2,进程请求分配1个,那么给他1个,还有1个资源.2减1,S=1,1>0,表示有资源,那么该进程就可以分配到一个资源,而且s=1资源还剩1个;

 

如果S原来等于0,已经只有0个资源,如果进程再请求一个资源,没有资源分配,它只能等着.所以0,P(S)一下,变成-1,-1<0,那么没有资源,该进程必须等着,并且S=-1,表示有一个进程在等着.(终于明白为什么要先P(S),S=S-1一下,再去判断了,有资源就少掉一个资源,没有资源还可以表示等着的进程数)

 

V(S)表示,一个进程用完了,释放了资源,所以S+1.若S为2,那么释放一个资源,就有3个资源可用了;如果S=-2,表示有2进程在等着,V操作释放了资源,那么等着的其中一个进程就可以获得资源执行了.V(S),S加1变成-1,-1<0,有进程在等着呢,就唤醒一个等待的进程.

 

总的概念理解:

 

    P就是请求资源,V就是释放资源,信号量的值,大于等于0,表示资源的个数;<0,表示等着资源的进程数.P请求,发现没资源就等着;V释放,发现有进程在等着,就去唤醒一个进程,该干活了.

 

    说完概念,说一下应用,因为参考的资料是这么做的,所以我也这么做.

 

原创粉丝点击