信号量机制学习卡片

📌 信号量基本概念
🔹信号量机制
通过设置进程的阻塞和唤醒实现让权等待,解决了硬件/软件实现互斥的缺陷
🔹信号量值
表示资源剩余数量,值小于0时表示有进程正在等待该资源
🔹PV操作
  • P操作:申请资源(若资源不足则阻塞)
  • V操作:释放资源(若有等待进程则唤醒)
🔒 进程互斥实现
🔹实现步骤
  1. 分析并发进程的关键活动,划定临界区
  2. 设置互斥信号量mutex,初值为1
  3. 进入临界区前执行P(mutex)
  4. 退出临界区后执行V(mutex)
⚠️注意事项
  • 不同临界资源需要不同的互斥信号量
  • PV操作必须成对出现
    • 缺少P会导致互斥失效
    • 缺少V会导致进程永久阻塞
🔄 进程同步实现
🔹同步本质
解决并发进程执行顺序的不确定性
🔹实现技巧
口诀:前V后P
  1. 设置同步信号量S,初值为0
  2. 在前操作之后执行V(S)
  3. 在后操作之前执行P(S)
🔹工作原理
  • 初始资源为0,后操作进程会因P操作阻塞
  • 只有前操作进程执行V操作后才能唤醒后操作进程
⏩ 前驱关系实现
🔹本质
多级同步问题的组合
🔹解决方案
  1. 分析前驱图,将每对前驱关系视为一个同步问题
  2. 为每对关系设置同步信号量(初值为0)
  3. 在前操作后执行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的信号量)