“状态集合与转移关系给出最一般的无标号状态机骨架,动作和输入输出再按观察需求逐层加入。轨迹与路径语义从最大执行提取可观察行为;若还要解释状态命题,可在其上建立Kripke 结构。这些语义对象支…”
形式陈述 ​
固定事件或状态字母表
性质
性质
若取
直觉
安全性约束“坏事永远不会发生”。一旦有限历史已经出现两个进程同时进入临界区,任何未来都无法删除这个事实;这段历史已经是完整的反证。
活性关心承诺能否在无限执行中兑现。单凭一次请求已经等待很久,仍不能断言它永远不会完成;只有连同公平调度、消息最终送达等执行假设,才能排除永久拖延。永不响应的系统可以很安全却毫无活性,快速给出矛盾结果的系统则可能持续进展但不安全。
例子与边界
互斥锁的安全性是任意时刻至多一个进程进入临界区;若观察到两个进程同时进入,有限执行前缀已经永久否证它。无饥饿性则要求合格的持续请求者最终进入临界区,正如“每个请求最终得到响应”一样属于活性:无论已经等待多久,都还不能据此断言它永远不会发生。
在记录时间的迹模型中,“每个请求在
推论与应用
在固定
两类性质对应不同证明义务。在状态机上,安全性通常证明初态满足不变式且每一步保持它;违反时,一条到达坏状态的有限前缀已经足够。活性则量化无限执行,需要说明持续使能的动作为什么不能永远被推迟;违反时,反例通常包含可无限重复的环。公平性既可写进性质,也可通过可容许执行限制
具体并发术语应回到各自页面核对完成事件、参与者量词和环境假设。本页只提供有限坏前缀与无限兑现这条分类轴,不把某个名称预先判成纯安全或纯活性,也不靠手工维护下游术语清单。
参考资料
- Bowen Alpern and Fred B. Schneider, “Defining Liveness,” Information Processing Letters 21(4), 1985, pp. 181–185;给出基于有限前缀延伸的 liveness 定义及其与 safety 的区分。
- Bowen Alpern and Fred B. Schneider, “Recognizing Safety and Liveness,” Distributed Computing 2, 1987, pp. 117–126;给出拓扑识别条件,并系统化 safety–liveness 分解。
- Leslie Lamport, “Proving the Correctness of Multiprocess Programs,” 1977.