信号量和PV操作
信号量包括一个整数值和一个等待数列.S.queue,信号量只能通过两个原语P,V操作来访问它,信号量的定义:
Struct semaphore{
Int value;
Struct PCB *queue;
}
P原语所执行的操作可用wait(s)来表示:
Void wait(semaphore s)
{
s.value=s.value-1;
if(s.value<0)
block(s.queue); //进程阻塞,并将其投入等待数列s.queue
}
V原语所执行的操作可用下面的函数siganl(s)来表示:
Void signal(semaphore s)
{
S.value=s.value+1;