锁
互斥锁
解决临界问题最简单的工具就是互斥锁, 一个进程在进入临界区的时候获得锁, 退出的时候释放
两个操作必须是原子操作, 缺点是盲等, 其他进程进入临界区的时候必须连续循环调用acquire(), 有多个进程共享一个CPU的时候浪费时钟周期, 所以常用于多处理器系统
自旋锁: 需要连续循环忙等的互斥锁, 比如TSL和swap指令
违反让权等待, 优点: 等待期间不用切换进程上下文, 多处理机系统中上锁的时间短等待的代价比较低(其他进程在其他处理器处理完成之会释放锁)
不太适用于单处理机系统, 忙等的时候不能解锁