信号量是操作系统中的一种进程同步与互斥的机制,对信号量的操作有两种,P操作
和V操作
,两个操作在执行时不被中断,必须成对使用。
在操作系统中,信号量表示资源的实体,由S
(一个具有非负初值的整型变量)和Q
(一个初始状态为空的队列)组成。S
表示操作系统中某类资源的使用情况,当其值大于0时,表示操作系统中该资源的可用数量;当其值小于0时,其绝对值表示操作系统中因请求该类资源而阻塞等待的进程数目。除信号量的初值外,信号量的值能由P
操作和V
操作改变。
P(S)
的主要功能是:先执行S=S-1
;若S
大于或等于0,则该进程继续执行;若S
小于0,则该进程阻塞,并将其插入到该信号量的等待队列Q
中。
V(S)
的主要功能是:先执行S=S+1
;若S
大于0,则该进程继续执行;若S
小于或等于0,则从该信号量的等待队列Q
中移出第一个进程,使其变为就绪状态。