Skip to content

执行历史

检索别名:Execution history · History

区分并发对象接口历史与分布式系统完整执行的导航入口。

条目类型
导航

形式陈述

“执行历史”在不同研究传统中指向两类不同对象,本页是导航与消歧条目,而不是第三种统一模型:

  1. 并发对象历史:由操作调用、返回、参数、结果及线程内顺序组成,保留对象接口上可观察的行为;
  2. 分布式执行:由局部步骤、消息发送与接收、配置变化、故障及调度组成,保留系统内部因果结构。

完整分布式执行通常可通过投影得到某个接口历史:

πapi:ExecutionHistory.

该投影会丢掉内部消息、重试、未暴露状态与调度选择,因此一般不是单射,也没有唯一逆映射。后续定义应直接依赖自己量化的精确对象,而不把本页作为形式前置。

直觉

并发对象历史像一份 API 收据:谁调用了什么、何时返回、得到什么结果。分布式执行像系统内部录像:进程走了哪些步骤、消息何时发送接收、哪些节点故障。两者都可能被口语称作 “history”,但保留的信息和可证明性质不同。

线性一致性只需要接口历史来寻找线性化见证;消息因果、故障检测与公平进展则必须观察完整执行。先选对象,再写性质,可以避免把内部调度边误当成客户端可见顺序。

例子与边界

验证并发队列时,若性质只谈 enqueuedequeue 的调用、返回值和实时先后,应使用并发对象历史。分析复制协议中的因果一致性时,发送、接收、程序顺序和版本可见关系不能丢失,应使用分布式执行。

检查线性一致性时,可先从内部执行投影出接口历史,再寻找满足顺序规格的线性化。验证时序性质时,则把完整执行解释为轨迹或路径。每一步都应说明保留了哪些事件和顺序。

运行日志不自动等于任一形式对象。墙钟会漂移,采集器可能漏事件,写盘顺序也未必表示因果顺序,接口日志还可能缺少调用—返回配对。用日志验证前必须给出正规化、缺失事件与并列时间戳的处理规则。

推论与应用

新条目若讨论对象一致性,应直接引用并发对象历史;若讨论消息、故障、调度或无限进展,应直接引用分布式执行。只有正文需要解释两种含义的差别时,才链接本页。

将两种对象强行合并成包含大量可选字段的统一 History 类型,不会消除区别;每个定理仍需重新声明自己量化的事件、可见性与顺序。显式分流反而使关系图和学习路径更精确。

参考资料
  • Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996, Chapters 1–3.
  • Maurice Herlihy and Nir Shavit, The Art of Multiprocessor Programming, rev. 1st ed., Morgan Kaufmann, 2012, Chapters 2–3.
  • Hagit Attiya and Jennifer Welch, Distributed Computing, 2nd ed., Wiley, 2004, Chapters 2–3.
术语导航仅作分流

沿正文链接进入正式概念页;本页不参与六类关系。