中文

支持动态加入的可写 LL/SC 与 CAS 的持久化算法

分布式、并行与集群计算 2023-02-02 v1 数据结构与算法

摘要

我们给出两个著名通用原语——CAS(比较并交换)及其无 ABA 对应原语 LLSC(链接加载、条件存储)——的持久化实现。我们所有实现均为:可写,即支持 Write() 操作;每次操作具有常数时间复杂度;允许动态加入,即新创建的任意名称的进程(亦称线程)可加入协议并访问我们的实现;并具有自适应空间复杂度,即空间使用随实际使用该对象的进程数 nn 缩放,而非先前为最大进程数 NN 设计的协议。我们的持久化可写 CAS 实现 DuraCAS 需要 O(m+n)O(m + n) 空间来支持被 nn 个进程访问的 mm 个对象,改进了最优现有 O(m+N2)O(m + N^2)。按定义,LLSC 对象除对象值外还必须存储“上下文”。我们的可写 LLSC 实现 DuraLL 需要 O(m+n+C)O(m + n + C) 空间,其中 CC 为所有对象存储的“上下文”数。尽管 LLSC 因无 ABA 而优于 CAS,但对象定义似乎需要额外的空间开销。为应对此权衡,我们定义了 LLSC 的外部上下文(EC)变体。我们的 EC 可写 LLSC 实现无 ABA 且空间复杂度仅为 O(m+n)O(m + n)。据我们所知,我们首个给出允许动态加入的持久化 CAS 算法,且我们的算法首个展现自适应空间复杂度。据我们所知,我们首个实现任何类型的持久化 LLSC 对象。

关键词

引用

@article{arxiv.2302.00135,
  title  = {Durable Algorithms for Writable LL/SC and CAS with Dynamic Joining},
  author = {Prasad Jayanti and Siddhartha Jayanti and Sucharita Jayanti},
  journal= {arXiv preprint arXiv:2302.00135},
  year   = {2023}
}

备注

36 pages: 15 page main body + References + Appendix