如果没有进程互斥会发生什么呢?

以下介绍四种软件实现互斥的方法,说先需要说明一下:

flag  可以表示为 意愿

turn 可以表示为 谦让

每一个进程之间实际可以交叉运行,但是在这个基础上,我们必须实现互斥的算法!

这就是实现互斥的意义所在!

单标志法

这是一个违反 “空闲让进” 原则的算法。

如何理解呢?

就是说,两个程序必须交替运行,如果说P0-P0-P0这样执行的话,他会因为谦让而无法执行!

双标志先检查

首先两个标志位 同时都是false(我也不是很理解)

这个算法违反了“忙则等待”的条件,如果1、5、2、6、3、7

这样执行,会造成同时执行的情况,严重违反互斥!

双标志后检查

这个算法解决了忙则等待

违反了“有限等待”导致各个进程无法访问资源产生“饥饿”现象

1、5、2、6

Peterson

违反了”让权等待“

1、6、2、7、8 这样就再P0期望执行的情况下执行了P1

总结:

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐