互斥算法:从单写共享寄存器到下限证明
在并发系统中,互斥问题是一个核心问题,它确保在同一时间只有一个进程可以访问临界区,从而避免数据竞争和不一致性。本文将介绍几种互斥算法,包括使用单写共享寄存器的算法和面包店算法,并探讨共享寄存器数量的下限。
1. 无界旁路与时间上限
在并发系统中,可能会出现无界旁路的情况。例如,进程 n - 1 可能比进程 0 快得多,在进程 0 甚至还未在第 1 层获胜之前,进程 n - 1 就可以多次到达顶部并获胜。这是因为没有对进程的步长时间设定下限。但需要注意的是,无界旁路和时间上限并不矛盾,因为没有进程会被长时间锁定,无界旁路只是因为某些进程运行得非常快。
2. 使用单写共享寄存器的算法 - BurnsME
由于多写寄存器通常难以实现,因此研究仅使用单写共享寄存器的算法是有价值的。BurnsME 算法就是这样一种算法,它解决了互斥问题,但不保证任何高级公平性条件。
共享变量 :
for every i, 1 ≤ i ≤ n:
flag(i) ∈ {0, 1}, initially 0, writable by i and readable by all j ≠ i
进程 i 的代码 :
超级会员免费看
订阅专栏 解锁全文
26

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



