操作系统信号量问答 #1
问题:解释信号量并在上面写一个简短的注释。
答案: Dijkestra 提出了一种重要的技术,用于管理复杂互斥问题的并发进程。 他介绍了一种名为 Semaphore 的新同步工具。
信号量有两种类型 −
二进制信号量
计数信号量
二进制信号量只能取值 0 & 1。 计数信号量可以取非负整数值。
在信号量上定义了两个标准操作,等待和信号。 进入临界区由等待操作控制,退出临界区由信号操作处理。 等待信号操作也称为 P 和 V 操作。 信号量 (S) 的操作发生如下:
等待命令 P(S) 将信号量值减 1。如果结果值变为负值,则延迟 P 命令直到满足条件。
V(S) 即信号操作将信号量值增加 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
信号量操作被实现为操作系统服务,因此等待和信号本质上是原子的,即一旦开始,这些操作的执行就不能被中断。
因此,信号量是一种简单而强大的机制,可确保并发进程之间的互斥。