定义
临界区(Critical Section)是访问临界资源的那段代码。临界资源是一次仅允许一个进程使用的资源。
临界资源访问过程
do{
entry section; // 进入区:申请进入临界区
critical section; // 临界区:访问临界资源
exit section; // 退出区:释放临界区
remainder section; // 剩余区:其他代码
} while(true)同步机制原则
- 空闲让进:临界区空闲时,允许请求进入的进程立即进入
- 忙则等待:已有进程进入临界区,其他进程必须等待
- 有限等待:保证请求进程在有限时间内进入临界区
- 让权等待:不能进入临界区的进程应立即释放 CPU(非必须)
实现方法
- 软件方法:单标志法、双标志法、Peterson 算法
- 硬件方法:中断屏蔽、TestAndSet 指令、Swap 指令
- 信号量方法
- 管程方法