信号量机制学习卡片
📌 信号量基本概念
🔹
信号量机制
通过设置进程的
阻塞和唤醒
实现
让权等待
,解决了硬件/软件实现互斥的缺陷
🔹
信号量值
表示
资源剩余数量
,值小于0时表示有进程正在等待该资源
🔹
PV操作
P操作
:申请资源(若资源不足则阻塞)
V操作
:释放资源(若有等待进程则唤醒)
🔒 进程互斥实现
🔹
实现步骤
分析并发进程的关键活动,划定
临界区
设置
互斥信号量mutex
,初值为1
进入临界区前执行
P(mutex)
退出临界区后执行
V(mutex)
⚠️
注意事项
不同临界资源需要
不同的互斥信号量
PV操作必须
成对出现
:
缺少P会导致
互斥失效
缺少V会导致
进程永久阻塞
🔄 进程同步实现
🔹
同步本质
解决并发进程
执行顺序的不确定性
🔹
实现技巧
口诀:
前V后P
设置
同步信号量S
,初值为0
在前操作之后执行
V(S)
在后操作之前执行
P(S)
🔹
工作原理
初始资源为0,后操作进程会因
P操作阻塞
只有前操作进程执行
V操作
后才能唤醒后操作进程
⏩ 前驱关系实现
🔹
本质
多级同步问题
的组合
🔹
解决方案
分析前驱图,将每对前驱关系视为一个
同步问题
为每对关系设置
同步信号量
(初值为0)
在前操作后执行
V
,在后操作前执行
P
📝
案例解析
S1→S2
:S1后V(a),S2前P(a)
S2→S5
:S2后V(d),S5前P(d)
S3→S6
:S3后V(f),S6前P(f)
⚖️ 关键对比
特性
互斥信号量
同步信号量
初始值
1
0
操作位置
临界区前后
操作代码前后
资源对应
临界区进入名额
无实际资源,仅表示顺序
PV操作目的
保护临界区
控制执行顺序
💡
应用扩展
信号量也可用于资源分配(如3台打印机对应初值为3的信号量)
上一张
下一张