这篇文章我们来讲一下进程互斥的软件实现方法
目录
1.概述
2.单标志法
3.双标志检查法
4.双标志后检查法
5.Perterson算法
6.小结
1.概述
首先,我们来看一下这节的大体框架
学习提示:
- 理解各个算法的思想、原理
- 结合上小节学习的“实现互斥的四个逻辑部分”,重点理解各算法在进入区、退出区都做了什么
- 分析各算法存在的缺陷(结合“实现互斥要遵循的四个原则”进行分析)
2.单标志法
算法思想:两个进程在访问完临界区后会把使用临界区的权限转交给另一个进程。也就是说每个进程进入临界区的权限只能被另一个进程赋予
下面用代码进行分析一下:
3.双标志检查法
下面看一下代码:
4.双标志后检查法
算法思想:双标志先检查法的改版。前一个算法的问题是先“检查”后“上锁”,但是这两个操作又无法一气呵成,因此导致了两个进程同时进入临界区的问题。因此,人们又想到先“上锁”后“检查”的方法,来避免上述问题。
下面来看一下代码:
5.Perterson算法
下面看一下代码:
其中1,2,3三行代码是进入区代码
进入区:
- 主动争取
- 主动谦让
- 检查对方是否也想使用,且最后一次是不是自己说了“客气话”
Peterson算法用软件方法解决了进程互斥问题,遵循了空闲让进、忙则等待、有限等待三个原则,但是依然未遵循让权等待的原则。
Peterson算法相较于之前三种软件解决方案来说,是最好的,但依然不够好。
6.小结