7、死锁检测示例:Dedan 环境的应用

死锁检测示例:Dedan 环境的应用

1. “两个信号量” 模型

1.1 模型概述

在这个示例中,有两个分布式计算,分别运行在各自的服务器上,它们使用两个信号量,每个信号量位于不同的服务器。以下是相关的代码表示:

A1:
A2:
sem1.wait;
sem2.wait;
sem2.wait;
sem1.wait;
sem1.signal;
sem2.signal;
sem2.signal;
sem1.signal;
stop
stop

当 A1 持有 sem1 并等待 sem2,同时 A2 持有 sem2 并等待 sem1 时,系统会陷入完全死锁。但如果我们在服务器 r 上添加另一个代理进程 A3,它只是简单地循环并执行自己的计算,情况就会发生变化。A3 的代码如下:

A3:
loop {
r.left;
r.right
}

此时系统不是完全死锁,而是部分死锁。部分死锁很难用模型检查技术识别,因为没有系统状态是 “没有未来的状态”。在这个系统中,代理 A1 和 A2 的终止并非不可避免(死锁并不意味着终止)。使用 IMDS,可以通过提出的通用公式识别 A1 和 A2 的部分死锁,这些公式表明这些代理缺乏终止条件。而代理 A3 不终止是预期的,因为它在一个没有终止动作的无限循环中工作。

1.2 验证环境

验证是在 Dedan 环境中进行的,Dedan 由一个规范部分和 TempoRG 模型检查器组成。这个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值