Skip to content

可容许执行

Admissible execution

满足给定调度、公平性和故障模型约束的执行。

条目类型
定义

形式陈述

设系统由一组进程与通信介质组成,行为由各组件的局部转移规则给出。一个执行是配置与事件交替出现的(有限或无限)序列

C0e1C1e2C2e3,

其中 C0 是初始分布式配置,每个事件 ekCk1 中可用,Ck 是执行它的结果;这样的路径是一条分布式执行可容许执行是在转移规则之外还满足给定环境假设的执行,典型约束包括:

  • 故障上界:至多 f 个进程按指定故障类型(如崩溃故障)失效;
  • 通信可靠性:发送给正确进程的消息最终被交付;
  • 公平性:每个未故障进程被调度无穷多次,或动作满足指定的弱公平、强公平条件;
  • 同步界:若模型为同步或部分同步,进程步伐与消息延迟满足相应上界。

算法性质一律量化于所有可容许执行:断言"算法满足性质 P",意为每个可容许执行都满足 P。其中公平条件必须与进展结论逐项配对:弱公平与强公平约束动作何时最终被选择;solo execution 则筛选某进程最终独占足够长区间的执行。它们是不同的环境条件,不能用一个含糊的“公平调度”相互替代。

直觉

转移规则只回答系统"能做什么",不回答环境"会做什么"。同一套代码,放进消息可能永远丢失的网络与放进最终必达的网络,能证明的结论完全不同,所以规格里必须有一个明确位置存放"环境承诺"。可容许性就是这个位置:状态机先枚举一切物理上可能的动作交错,可容许条件再筛掉模型明确不打算处理的场景——超过 f 个故障、永远不调度某进程的调度器、无限期扣押消息的信道。可以把它理解为算法与环境之间的契约:算法只对遵守契约的对手负责。契约必须写进规格而不是藏在证明中,否则"算法正确"这句话就没有确定的量化范围,不同读者会默认不同的环境假设。

例子与边界

取异步消息传递模型,假设"至多一个进程崩溃、发给正确进程的消息最终交付、每个正确进程被调度无穷多次"。此时所有进程都走无穷多步且无消息丢失的执行是可容许的;进程 p 在第 10 步后永久停止的执行同样可容许(把 p 计入故障预算即可);而两个进程都永久停止的执行不可容许,算法无须对它负责。反过来,若删去公平性假设,"调度器从此只运行进程 q"的执行就成为可容许的,一切依赖其他进程推进的活性性质随之失去证明可能。这说明活性结论对公平性极其敏感;安全性则通常对更宽的执行集合成立,因为"坏事不发生"是对每个有限前缀的断言,与调度是否公平无关。

两个常见误用值得单独指出。其一,"异步可靠信道允许任意长但有限的延迟"不同于"延迟存在已知上界":前者是异步模型,后者已经是同步假设,混同二者等于偷换时间模型。其二,FLP 不可能性所构造的永不终止执行完全满足其模型的可容许条件——每个进程走无穷多步、每条消息最终交付、实际可以无故障——因此以"这种调度不现实"为由拒绝它不能反驳定理;想绕开定理,只能显式修改模型,即收紧可容许执行的集合。

异步系统的可靠信道模型中,可容许执行通常允许任意有限延迟,却要求发给非故障进程的消息最终到达。一个执行若永久不调度某个正确进程,可能违反进程公平性。FLP 证明构造的无限执行需同时保持相应公平条件,不能简单理解为“攻击者停止所有消息”。

推论与应用

可容许执行是分布式算法规格的承重结构:故障模型、调度公平性与网络假设全部经由它进入定理陈述。分布式共识领导者选举与自稳定算法的正确性都写成“在所有可容许执行中满足某性质”的形式,其中安全性与活性分别承担“任何前缀不出错”与“最终有好事发生”两类断言。轨迹语义给出被量化的执行对象,公平性约束从中筛选环境承诺允许的无限轨迹;时序逻辑或模型检查算法再判断性质,不能反过来替规格偷偷补入公平假设。证明 deadlock-free、lock-free 或个体无饥饿时,必须明确进程是否持续取步骤、动作是持续使能还是反复使能,以及故障进程是否仍在量化范围内。

可解性与不可能性的分界同样由可容许集合的大小决定:加入同步界或故障检测器等假设会收紧集合,使更多任务可解;放宽假设则相反。比较两个算法或两条不可能性结果时,第一步永远是核对它们的可容许执行集合是否一致。

参考资料
  • Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996,Chs. 1–25。
  • Hagit Attiya and Jennifer Welch, Distributed Computing: Fundamentals, Simulations, and Advanced Topics, 2nd ed., Wiley, 2004,Chs. 1–18。
关系图谱18 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系

使用的工具

被这些条目使用