信号量又称信号灯,是用来协调不同进程间的数据对象。本质上是一个计数器,用来记录对某个资源的使用情况。信号量是一个特殊的变量,只有两个操作可以改变其值:wait signal.
在Linux中用P(wait)、V(signal)表示。passenren、vrjeven(荷兰语)。
P操作负责把当前进程由运行状态转换成阻塞状态,直到另一个进程唤醒他。具体操作为:申请一个空白资源(信号量减一),成功则继续,失败则阻塞。
V操作负责把一个被阻塞的进程唤醒,他有一个参数表,存放着等待被唤醒的进程信息。具体操作:释放一个被占的资源(信号量减一),如果有阻塞的进程则选择释放一个。