进程预序关系:测试、拒绝、失败追踪与公平测试
1. 测试预序概述
在进程分析中,测试预序是评估进程之间关系的重要工具。其中,⊑may 预序关系较弱,但优势在于无需全局测试。而其他测试预序虽使用全局测试,不过相较于观察预序,其使用方式更为受限。这些测试预序所做的区分虽不如观察预序丰富,但也相当可观。
由于 ⊑conv 是区分能力最强的测试预序,后续我们将其简称为测试预序,记为 ⊑T,其诱导的等价关系记为 ≃T。
2. 拒绝测试
2.1 测试场景
拒绝测试结合了拒绝操作与测试预序。其测试场景基于完全跟踪语义,将进程视为带有显示当前动作窗口的黑盒,当死锁发生时窗口为空。为每个可能的动作 a ∈ Act 配备一个开关,将开关拨到“开”可阻塞动作 a,进程自主选择执行路径,但只能从非阻塞动作开始执行,且在进程执行过程中可随时更改开关配置。
2.2 测试表达式与语义
形式上,我们限制测试集 O,仅允许形式为 (5.1) - (5.5) 的表达式,以及 (5.12) 的受限变体:
o = ao1 + ao2 (5.13)
该表达式的语义可由 (5.12) 和 (5.4) 的语义得出。同时,我们区分死锁和发散,将测试结果集扩展为 {⊤, 0, ⊥},其中 ⊥ 仅表示发散,0 表示死锁。相应地,修改 (5.2)、(5.3) 和 (5.4) 形式表达式的语义:
obs(Fail, p) = {0}
超级会员免费看
订阅专栏 解锁全文
28

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



