死锁检测及相关系统建模分析
1. 哲学家问题的“管家”解决方案
在哲学家问题中,对于 3 个哲学家的情况,采用“管家”解决方案。两个管家负责禁止所有哲学家首先拿起左边的叉子,也禁止所有哲学家首先拿起右边的叉子。对于 5 个哲学家的模型,除了“管家”模型针对 4 个哲学家进行验证外,其余都在 Dedan 下完全验证。而对于更多哲学家的模型,则使用外部模型检查器 Uppaal 进行验证。
2. 交通路口建模
2.1 路口资源与车辆行为
验证技术可用于交通系统建模,以路口为例,路口的各个区域可视为资源,车辆依次占用这些区域。路口的区域 Q 和接近区域 A 用方位编码。车辆离开路口后会回到等待相应接近区域的车辆队列中,例如从西北区域(QNW)向西离开的车辆会进入西边接近区域(AW)的队列。
2.2 避免队列形成的协议
若车辆离开当前区域后等待下一个区域空闲,可能会在相邻区域间形成车辆队列。为避免这种情况,车辆必须在释放当前区域前获得下一个区域。这需要三种消息(请求、授权、移动),形成获取区域的协议。以从东南区域(QSE)到东北区域(QNE)为例:
- 请求 :车辆占用 QSE 并想获取 QNE 时,从 QSE 向 QNE 发送消息 try。若 QNE 被占用,该消息可能会无限期等待接受。
- 授权 :若 QNE 最终接受了 try 消息(QNE 当前空闲),则从 QNE 向 QSE 发送消息 ok。此时 QNE 状态从空闲变为预留,其他车辆不能占用。
- 移动 :QSE 被释
超级会员免费看
订阅专栏 解锁全文
30

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



