进程的同步和互斥
-
同步
- 所谓进程同步,即AB(协作关系)两进程之间存在运行的固定顺序(或者对同一个共享资源的特定调用顺序),如A-B,需要某些机制保障两进程按上述特定的顺序执行。
-
互斥
- 所谓进程互斥,即AB(竞争关系)两进程之间存在对同一个共享资源的竞争(没有顺序上的关系)。
-
软件实现
- 单标志法
- 进入区只检查不上锁(某一时刻只允许某一进程进入,即使临界区空闲也不让别的进程进入,故不满足空闲让进)
- 双标志先检查
- 进入区会上锁,但是由于用了while循环,导致没进去的进程会一直运行,所以不满足忙则等待。
- 双标志后检查
- 先上锁再检查,当f1、f2都上锁,就过不了后面的while,于是就卡死在这,产生饥饿现象
- Peterson算法
- 在双标志后检查的基础上,主动谦让,并检查对方进程是否想进,但这种仍然有忙则等待问题(while)
- 单标志法
-
硬件实现
- 中断屏蔽
- 简单、高效
- TestAndSet指令
- 上锁+检查变成原子操作,但不满足让权等待
- Swap指令
- 同上
- 中断屏蔽