进程互斥的软件实现方法

本文详细介绍了进程互斥的几种软件实现方法,包括单标志法、双标志先检查法、双标志后检查法以及经典的Peterson算法。这些方法旨在确保临界区的安全访问,遵循忙则等待、空闲让进和有限等待的原则,避免进程间的竞争条件。然而,每种方法都有其优缺点,如单标志法可能违背“空闲让进”原则,而双标志法可能存在进程切换问题。Peterson算法则提供了一种在两个进程间实现互斥的有效解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程互斥的软件实现方法

单标志法

img

单标志法的缺点:turn表示当前允许进入临界区的进程号,而只有当前允许进入临界区的进程在访问了临界区之后,才会修改turn的值。也就是说,对于临界区的访问,一定是按P0->P1->P0->P1->…这样轮流访问。这种必须“轮流访问”带来的问题是,如果此时允许进入临界区的进程是P0,而P0一直不访问临界区,那么虽然此时临界区空闲,但是并不允许P1访问。因此,单标志法存在的主要问题是:违背“空闲让进”原则

双标志先检查法

img

原因在于,进入区的“检查”和“上锁”两个处理不是一气呵成的。“检查”后,“上锁”前可能发生进程切换。

双标志后检查法

img

空闲让进:临界区如果没有进程访问,是空闲的,则会让进程进入临界区访问

有限等待:每个进程等待访问临界区的时间必须要是有限的

忙则等待:如果临界区有一个进程正在访问,则其他的进程不能继续访问临界区。

Peterson算法

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr-X~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值