P0进程: P1进程:
while(turn != 0); while(turn != 1);
critical section critical section
turn = 1; turn = 0;
remainder section remainder section
缺点:必须交替运行
掌握软件实现互斥同步的发展过程
2、双标志法先检查:
第二章进程管理
Pi进程: Pj进程:
while(flag[j]); while(flag[i]);
flag[i] = TRUE; flag[j] = TRUE;
critical section critical section
flag[i] = FALSE; flag[j] = FALSE;
remainder section remainder section
优点:可以实现互斥同步;缺点:有可能同时进入
3、双标志法后检查:
Pi进程: Pj进程:
flag[i] = TRUE; flag[j] = TRUE;
while(flag[j]); while(flag[i]);
critical section critical section
flag[i] = FALSE; flag[j] = FALSE;
remainder section remainder section
优点:可以实现互斥同步;缺点:有可能都不能进入
4、Peterson’s Algorithm:
Pi进程: Pj进程:
flag[i] = TRUE;turn=j;flag[j] = TRUE;turn=i;
while(flag[j] && turn == j); while(flag[i] && turn == i);
critical section critical section
flag[i] = FALSE; flag[j] = FALSE;
remainder section remainder section
优点:可以完全实现互斥同步的软件算法
硬件实现互斥同步的原理
1、检测和设置(TS)指令(test & set)
while TS(&lock);
critical section
lock = FALSE;
remainder section
缺点:不能实现让权等待
实现临界区互斥的基本方法:软件方法;硬件方法
硬件实现互斥同步的原理
2 swap指令(或exchange指令)
第二章进程管理
、key = true;
do{
swap(&lock,&key);
}while(&key);
critical section
lock = FALSE;
remainder section
缺点:不能让权等待;可能会饥饿