重命名与定向流形:理论与实践
1. 引言
想象一下,有 (n + 1) 架飞机在大西洋上各个方向飞行。为了避免碰撞,每架飞机都需要被分配一个独特的高度(以千英尺为单位)。在集中式空中交通控制系统中,这个任务很简单,只需按航班号对飞机进行排序,然后将第 (i) 架飞机分配到第 (i) 个高度即可。
但如果我们希望飞机自己协调分配高度呢?这就是重命名任务:每架飞机最初有一个来自大命名空间的唯一名称(航班号),最终要获得一个来自较小命名空间的唯一名称(高度)。由于我们事先不知道哪些飞机参与,且通信可能会丢失或延迟,所以我们对异步协议感兴趣。为了便于说明,这里假设飞机通过某种共享读写内存进行通信。
2. 两架飞机的重命名问题
考虑两架飞机 (P0) 和 (P1) 的简单分层执行协议。它们共享一个初始全为 (\perp) 的数组。在每一层,每架飞机都会立即进行快照:先将其航班号写入内存,然后对内存进行快照。
- 如果一架飞机只看到自己的航班号,它选择 (1000) 英尺的高度。
- 如果一架飞机看到两个航班号,它会比较它们:
- 如果自己的号码小于另一个,它选择 (2000) 英尺。
- 否则,它选择 (3000) 英尺。
为什么两架飞机需要三个高度呢?假设 (Pi) 的航班号小于 (Pj)。如果 (Pi) 看到了 (Pj) 的航班号,那么 (Pj) 可能看到也可能没看到 (Pi) 的航班号。如果 (Pj) 没看到 (Pi) 的号码,它会选择 (1000) 英尺;如果看到了,它会选择 (3000) 英尺。所以 (Pi) 唯一安全的选择是 (2000) 英尺。
两架飞机能否在两个高度中选择
超级会员免费看
订阅专栏 解锁全文
33

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



