苯苯熊.net

苯苯熊的.net学习日记

一道关于协议工程的题目


英格兰铁路隧道协议,目标是避免铁路隧道中同时有两列火车。


采用的技术
具有阻断间隔(block-interval)系统的信号灯
当火车通过时,变为红色
由人工手动地设置为绿色
在 隧道的两端有信号员,他们之间通过电报线相连
阻断间隔系统的故障通过钟声来报警
使用红旗和白旗来替代故障的信号灯

设计的消息
TT:火车在隧道中
TF:隧道空闲
TL:询问火车是否离开了隧道?
无差错的调度(Error free functioning)
火车进入隧道(红灯亮),信号员A给信号员B发信号TT
火车离开了隧道,B给A发信号TF
A手动地将信号灯置为绿色


信号灯故障的情况(Error situation)
火车进入了隧道,A给B发信号TT
钟响了,A向下一列火车打红旗
火车离开了隧道,B给A发信号TF
A给下一列火车打白旗


这样设计的信号机制有没有不足之处?

1861年8月的一天
火车1进入隧道,阻断间隔系统故障/失效
A给B发送信号TT,打出红旗
火车2来得太快,未能及时停下来
火车3看见红旗,停了下来
A向B发送另一TT信号(针对火车2)
B并不理解第二个TT信号
A向B发送TL信号
B看见火车1并发送TF信号
A认为火车2离开了隧道,向火车3打白旗
火车2在这之前看见了红旗,害怕,试图退回到A的位置
结果火车3与火车2相撞,21人死亡,176人受伤

为什么会发生事故?原因?
火车2来得太快,不能及时停下来
B并不理解第二个TT信号
A认为火车2离开了隧道,向火车3打白旗
火车2在这之前看见了红旗,害怕,试图退回到A的位置

教训
即使最简单的协议也可能包含差错
在协议投入使用之前,必须经过彻底地验证
用于构造、分析、验证协议的技术是必需的

问题:怎样设计一种更为有效的协议?

posted on 2006-01-03 15:22  苯苯熊  阅读(797)  评论(1编辑  收藏  举报

导航