同步与互斥的基本概念
- 临界资源
- 临界资源的访问过程
- 进入区(上锁)
- 临界区(又称临界段)
- 退出区(解锁)
- 剩余区
- 同步(直接制约关系)
- 互斥
- 间接制约关系
- 准则
- 空闲让进
- 忙则等待
- 有限等待
- 让权等待
实现临界区互斥的基本方法
- 软件实现方法
- 单标志法
- 双标志法先检查
- 双标志法后检查
- Peterson’s Algorithm
- 硬件实现方法
- 中断屏蔽方法
- 简单粗暴
- 限制了处理机交替执行程序的能力
- 关中断权力下放,很不明智
- 不适用于多处理机系统
- 硬件指令方法
- TestAndSet(TS指令/TestAndSet Lock/TSL指令)
- Swap指令
- 中断屏蔽方法
互斥锁
- acquire()
- release()
- *自旋锁:需要连续循环忙等的互斥锁,都可称为自旋锁(spin lock),如TSL指令、Swap指令和单标志法等
acquire(){
while(!available); //忙等待
available = false; //获得锁
}
release(){
available=true; //释放锁
}
信号量
- 信号量其实就是一个变量,可以用一个信号量表示系统中某种资源的数量
- wait(S) & signal(S)(P操作和V操作)