刚才读书的时候看到了进程互斥的实现方法这一章,想到之前面试的时候被问到这一部分的内容,今天来整理总结一下。
-
软件方法
-
单标志法
- 算法思想:两个进程在访问完临界区后会把使用临界区的权限转交给另一个进程。也就是说每一个进程进入临界区的权限只能被另一个进程赋予。
- 算法实现:
-
单标志法
-
-
- 该算法可以实现“同一时刻最多只允许一个进程访问临界区”。
- 单标志法存在的主要问题是:违背“空闲让进”原则。因为如果是允许P1进入临界区,但是P1一直不访问临界资源,那么虽然这个时候临界区是空闲的,但是并不允许P0访问。
-
-
-
双标志先检查法
- 算法思想:设置一个布尔型数组flag[],数组中各元素用来标记各进程想要进入临界区的意思,比如“flag[0] = ture”意味着0号进程P0想要进入临界区。每个进程进入临界区之前先检查当前有没有别的想要进入临界区的进程,如果没有则把自身对应的标志falg[i]设为true,之后开始访问临界区。
- 算法实现:
-
双标志先检查法