(OSDI'04 Note)Enhancing Server Availability and Security Through Failure-Oblivious Computing
Martin Rinard et al
这篇文章提出了一个很有意思的想法:
如果一个函数发生了非法内存访问,那么一般情况下会有两种结果:1、抛出一个Exception,如果程序没有接到,或者压根就没法接(比如C),那么退出。2、非法操作成功,继续执行下去,整个程序处于不稳定状态。
那么能否有第三种方法:忽略它。更详细一点,就是说没有Exception,也不会有什么操作,简单的进行函数返回,只不过返回一个杜撰出来的值,这个值可能是错的,也可能没有意义,不过总比让整个程序崩溃了要好一些,而且很可能逻辑中对函数的返回值会做检查,从而能将预料外的非法变成预料中的非法。对于某些程序来说,这样做是可以接受的。这,就是作者所谓的Failure-Oblivious Computing。
本文主要是对内存访问的错误操作提出了方案,改写了一个编译器,在一些地方插入了内存访问的检查指令,如果不合法,则返回一个杜撰值。
对于具体的实现细节,并没有看的很细,觉得有这样一个想法就已经很不容易了(或者很容易?)。同样是为了提高服务的Availability,有人想出了Isolation(虚拟机):死了不要影响别人;有人想出了Fail-Stop:要死赶快死;有人想出了Oblivious的方法:好死不如赖活。呵呵,真的很好玩。


At 4:49 PM,
Andy Yang said…
你太有幽默了,哈哈……
看来需要你做个报告了,题目就叫《关于软件的N种死法》,呵呵
Post a Comment