互斥算法:从基础到无锁自由的进阶
1. 引言
在并发编程领域,互斥问题是一个核心挑战。互斥算法的目标是确保在多个进程或线程访问共享资源时,同一时间只有一个进程或线程能够进入临界区,从而避免数据竞争和不一致的问题。DijkstraME算法虽然能保证互斥和进度,但存在一些不足,如无法保证公平地将临界区授予不同用户,可能导致某些用户被锁定或饥饿,并且使用了共享的多写者/多读者寄存器,实现难度和成本较高。因此,人们设计了许多改进的互斥算法,本文将重点介绍Peterson提出的一系列无锁自由互斥算法。
2. 互斥算法的更强条件
2.1 高级公平性的概念
在讨论改进算法之前,需要明确互斥算法保证高级公平性的含义。这里的高级公平性与之前讨论的进程步骤和用户自动机步骤的公平执行不同,主要涉及资源的公平授予。根据算法的使用场景,定义了三种高级公平性的概念:
- 无锁自由(Lockout - freedom) :
- 尝试区域的无锁自由 :如果所有用户总是归还资源,那么任何到达尝试区域T的用户最终都会进入临界区C。
- 退出区域的无锁自由 :任何到达退出区域E的用户最终都会进入剩余区域R。
- 时间界限b(Time bound b) :
- 尝试区域的时间界限b :如果每个用户在被授予资源后的时间c内总是归还资源,并且每个进程在尝试区域T或退出区域E中连续步骤之间的时间最多为g,那么任何到达尝试区域T的用户将在时间b内进入临界区C。 <
超级会员免费看
订阅专栏 解锁全文
1178

被折叠的 条评论
为什么被折叠?



