核能杀手Therac-25:治病机器与杀人软件(5)
2023-04-26 来源:飞速影视
图2 Therac-25 伪代码片段
实际上这个bug相当简单,仅仅是一句放错了位置的代码(见图2),但其隐蔽性要结合Therac-25的操作流程(图3)来解读才能显现出来。
图3 Therac-25执行流程图
把大象装冰箱要分三步,用Therac-25进行治疗也要分三步:第一步,操作员输入处方;第二步,Therac-25根据处方进行机器设置;第三步,开始治疗。正常情况下,三步顺序执行没有任何问题。
但这两次事故中操作员修改处方数据,实际上形成了一种并行。
并行是计算机领域的一个术语,指多件事同时执行,很多简单问题一并行就变的难以理解。
Therac-25的原始射线非常集中,而这对人体危害是很大的,所以Therac-25会在射线路径上放置一系列磁铁,来对射线进行分散。
设置磁铁的伪代码见图2。
如果懂一些编程的话,应该可以发现其标黄的用以清除标记位的指令(注释3)放错了位置,应该放在Magnet函数的循环外(注释4)。
不懂编程也没关系,只需要知道这段代码有bug,而这个bug会让Therac-25在调节磁铁的时候,忽略操作员对处方进行的修改。
调整磁铁需要8秒钟左右,这8秒,便是Therac-25的死亡窗口。
在这两起事故中,操作员的修改均发生在这个窗口内,所以修改都没有生效,也就是说,Therac-25实际执行的是X射线模式。
在Therac-25的设计中,X射线模式的能量只有一种,就是系统最大的25MeV,然后用一个射线过滤器来调节高强度的原始射线,将其减弱到治疗所需强度。
只不过这个过滤装置需要手工放置到照射路径上,而在这两次事故中显然都没有,因为操作员都以为正在执行的是电子束模式!
所以悲剧就这样发生了。
患者受到了原始的高强度射线的照射,事故中他们听到的滋滋声不是电流声,而是射线测量器被射线穿透后发出的声音,就像把42度量程的体温计扔到开水里一样,它已经饱和失效了。
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号