P操作和V操作是不可中断的程序段,称为原语.PV原语及信号量的概念都是由荷兰科学家E.W.Dijkstra提出的.信号量sem是一整数,sem大于等于零时代表可供并发进程使用的资源实体数,但sem小于零时则表示正在等待使用临界区的进程数.
P原语操作的动作是:
(1) sem减1;
(2) 若sem减1后仍大于或等于零,则进程继续执行;
(3) 若sem减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,然后转进程调度.
V原语操作的动作是:
(1) sem加1;
(2) 若相加结果大于零,则进程继续执行;
(3) 若相加结果小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度.
PV操作对于每一个进程来说,都只能进行一次,而且必须成对使用.在PV原语执行期间不允许有中断的发生.