进程互斥硬件实现方法
中断屏蔽方法 🔒
中断屏蔽方法 🔒
- ⚙️实现原理
- 通过"关中断"和"开中断"指令实现,与原语实现思想相同
- 📝执行流程
- 关中断 → 临界区 → 开中断
- ✅优点
- • 实现简单高效
• 逻辑清晰
- ❌缺点
- • 仅适用于单处理机系统
• 需要特权指令(只能在操作系统内核态下运行)
• 不适用于用户进程
TestAndSet指令 💻
TestAndSet(TS/TSL)指令 💻
- 📛别名
- TS指令/TSL指令(TestAndSetLock)
- ⚙️硬件特性
- 由硬件实现,执行过程不可中断
- 🔧实现逻辑
- • 使用布尔型共享变量lock表示临界区状态
• 原子操作:读取原状态 → 设置新状态 → 返回原状态
- ✅优点
- • 实现简单
• 适用于多处理机环境
• 检查和上锁一气呵成
- ❌缺点
- • 不满足"让权等待"原则(进程会忙等待)
Swap指令 🔄
Swap(XCHG)指令 🔄
- 📛别名
- Exchange指令/XCHG指令
- ⚙️硬件特性
- 由硬件实现,执行过程不可中断
- 🔧实现逻辑
- 交换两个变量的值
- 🆚与TS指令比较
- • 逻辑功能相同(都是检查原状态并设置新锁)
• 硬件实现方式不同
- ✅❌优缺点
- 同TS指令(实现简单、适用多处理机、但不满足让权等待)
方法比较 📊
三种方法比较 📊
- 🔒中断屏蔽
- • 适用环境: 单处理机
• 特权要求: 需要(内核态)
• 让权等待: 满足
• 多处理机支持: 不支持
- 💻TS/TSL指令
- • 适用环境: 单/多处理机
• 特权要求: 不需要
• 让权等待: 不满足
• 多处理机支持: 支持
- 🔄Swap指令
- • 适用环境: 单/多处理机
• 特权要求: 不需要
• 让权等待: 不满足
• 多处理机支持: 支持