操作系统信号量问答 #1



问题:解释信号量并写一个简短的说明。

答案:Dijkstra提出了一种重要的技术,用于管理复杂互斥问题的并发进程。他引入了一种新的同步工具,称为信号量。

信号量分为两种类型:

  1. 二元信号量

  2. 计数信号量

二元信号量只能取值 0 & 1。计数信号量可以取非负整数。

在信号量上定义了两个标准操作,wait 和 signal。进入临界区由 wait 操作控制,退出临界区由 signal 操作控制。wait 和 signal 操作也称为 P 和 V 操作。信号量 (S) 的操作如下:

  1. wait 命令 P(S) 将信号量值减 1。如果结果值变为负数,则 P 命令被延迟,直到条件满足。

  2. V(S) 即 signal 操作将信号量值加 1。

在 P(S) 和 V(S) 内强制执行信号量的互斥。如果多个进程同时尝试 P(S),则只允许一个进程继续,其他进程将等待。这些操作定义如下:

P(S) or wait(S): 
If S > 0 then
   Set S to S-1
Else
   Block the calling process (i.e. Wait on S)

V(S) or signal(S): 
If any processes are waiting on S
   Start one of these processes
Else
   Set S to S+1

信号量操作实现为操作系统服务,因此 wait 和 signal 本质上是原子的,即一旦开始,这些操作的执行就不能中断。

因此,信号量是一种简单而强大的机制,可以确保并发进程之间的互斥。

广告