并发程序状态空间缩减:调度不敏感技术解析
1. 并发程序基础概念
在并发程序中,存在着线程的状态、转换等概念。对于转换 (t: (a_i, g, u, b_i)),我们用 (pre(t)) 和 (post(t)) 分别表示控制位置 (a_i) 和 (b_j)。线程 (T_i) 的转换 (t = (a_i, g, u, b_i)) 在状态 (s) 中启用的条件是 (s[i] = a_i) 且保护条件 (g) 在 (s) 中为真。若 (s[i] = a_i) 但 (g) 不一定为真,则称 (t) 在 (s) 中被调度。我们用 (s \xrightarrow{t} s’) 表示执行 (t) 使状态从 (s) 转变为 (s’)。每个并发程序 (CP) 都定义了一个全局转换系统 (A_G = (S, \Delta, s_0)),其中 (\Delta \subseteq S \times S) 是转换关系,(s_0) 是初始状态。
2. 现有状态空间缩减技术及新方法
当前并发程序分析中,部分顺序缩减(POR)是最先进的状态空间缩减技术。POR 仅根据计算所诱导的部分顺序对计算进行分类,这些部分顺序是相对于全局状态(包括控制位置和程序变量的值)定义的。然而,仅基于控制行为对计算进行分类会提高部分顺序的抽象级别,导致多个不同的(状态定义的)部分顺序合并,即那些诱导相同控制行为的部分顺序。理想情况下,POR 会为每个部分顺序探索至少一个计算,而新的缩减方法旨在为所有这些合并的部分顺序仅探索一个计算,从而实现显著的状态空间缩减。
3. 并发定义 - 使用链和控制依赖
线程内的控制流由条件语句的赋值决定。但以不同顺序执行访问共享对象的线程转换可能会导致共
超级会员免费看
订阅专栏 解锁全文
5万+

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



