文章目录
2.3.1进程同步与进程互斥
一、什么是进程同步?
进程之间需要按顺序访问资源
二、什么是进程互斥
进程之间不能同时访问临界资源
三、处理进程互斥问题
四、同步互斥遵守的原则
- 空闲让进
- 忙则等待
- 有限等待
- 让权等待:进程不能进入临界区时,应当释放处理机,防止进程忙等待
2.3.2 进程互斥的实现方法
一、软件实现方法
1、单标志法
算法思想:两个进程在访问完临界区后会把使用临界区的权限转交给另一个进程。也就是说每个进程进入临界区的权限只能被另一个进程赋予。
代码实现
访问过程
问题
2、双标志先检查
算法思想:设置一个布尔型数组flag[],数组中各个元素用来标记各个进程想进入临界区的意愿,比如“flag[0]=ture”意味着0号进程P0现在想要进入临界区。每个进程在进入临界区之前先检查当前有没有别的进程想进入临界区,如果没有,则把自身对应的标志flag[i]设为true,之后开始访问临界区。
代码实现
问题
3、双标志后检查
算法思想:双标志先检查法的改版。前一个算法的问题是先“检查”后“上锁”,但是这两个操作又无法一气呵成,因此导致了两个进程同时进入临界区的问题。因此,人们又想到先“上锁”后“检查”的方法,来避免上述问题。
代码实现
问题
4、Peterson算法
算法思想,解决双标志后检查法饥饿问题,如果双方都争着想进入临界区,那可以让进程尝试“孔融让梨”,主动让对方先使用临界区。
代码实现
问题