PV操作-2

来源:互联网 发布:250bp进入编程 编辑:程序博客网 时间:2024/06/05 04:07

1.p操作和v操作是不可中断的程序段,称为原语。PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意     思。

   P原语操作的动作是: (1)S减1; 

                                       (2)若S减1后仍大于或等于零,则进程继续执行; 

                                       (3)若S减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调                                                       度。 

   V原语操作的动作是: (1)S加1; 

                                       (2)若相加结果大于零,则进程继续执行; 

                                       (3)若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进                                                 程继续执行或转进程调度。 

   需要提醒大家的是:PV操作首先是一个原语操作,对于每一个进程来说,都只能进行一次。而且必须成对使用。且    在PV原语执行期间不允许有中断的发生。

2.信号量(semaphore):它的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与      相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使    用该资源的进程个数。注意,信号量的值仅能由PV操作来改变。

   PV操作的意义:我们用信号量及PV操作来实现进程的同步和互斥。PV操作属于进程的低级通信一般来说,信号量      S>0时,S表示可用资源的数量。执行一次P操作意味着请求分配一个单位资源,因此S的值减1;当S<0时,表示已    经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。而执行一个V操作意味着释放一个单      位资源,因此S的值加1;若S<0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下    去。


0 0
原创粉丝点击