同步,互斥
与异步相对,让进程按照一定顺序执行
-
互斥的要素
- 临界区被访问时,另一个想访问的进程只能等待
- 一个进程等待的时间是有限的
- 一个进程等待时,应释放CPU,不能忙等
- 临界区空闲时应能让一个进程访问
-
互斥的软件实现
-
单标志法
-
缺点
- 只能交替进行,一个去干别的,另一个就要歇菜
-
- 双标志先检查法
-
缺点- 会出现两个进程同时访问临界区的情况
- 双标志后检查法
- 缺点
- 两个都进不去
- peterson算法
- 缺点
- 另一个没有进入临界的进程还是占用CPU,忙等
-
互斥硬件实现
- 中断屏蔽
- 优点
- 简单高效
- 缺点
- 是特权指令,随便给出会有危险
- 不适合多处理机,关中断只能对一个处理机有效
- 优点
- 中断屏蔽
- TS指令
- 用硬件实现这样一个过程 (上锁,检查,这个过程不可以被打断)
- swap逻辑上相同
- 优点
- 适合多处理机
- 缺点
- 忙等(进程等待,却没有释放处理机)
bool TestAndSet( bool *lock)
{
bool old;
old = *lock;
*lock = false;
return old;
}
- & 取一个变量的地址; * 取一个指针所指向的内存单元储存的内容