P,V原语操作能改变信号量的数值,信号量(sem)可代表管理相应临界区公共资源的实体。当sem>=0时,表示可供并发进程使用的资源实体数,当sem 回答于 2022-07-29
PV操作由P操作原语和V操作原语组成(原语是不可中断的过程)。对信号量进行操作,具体定义如下:P(S):①将信号量S的值减1,即S=
S
-
1;
②如果s
>=
0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。
V(S):①将信号量S的值加1,即S
=
S
+
1;
②如果S
>
0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。
PV操作的意义:我们用信号量及PV操作来实现进程的同步和互斥。PV操作属于进程的低级通信。
信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。注意,信号量的值仅能由PV操作来改变。
一般来说,信号量S
>=
0时,S表示可用资源的数量。执行一次P操作意味着请求分配一个单位资源,因此S的值减1;当S<0时,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。而执行一个V操作意味着释放一个单位资源,因此S的值加1;若S
<=
0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。也就是说,有一个未被占用的资源就可以让一个阻塞的进程执行,
而不是S为正是才可以执行。具体系统上的实现怎么使用,可以参考《unix网络编程卷二:进程间通信》。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)