接上期普奥陈德基谈工业互联网(三):为何工业互联网被称为实时物联网?本期陈德基博士从火星探测器背后的英雄及工业互联网实时互联网的研究者等角度进行分享。

火星探测器背后的英雄

很多人记得美国宇航局1997年发射的火星探测器Pathfinder,它被几个气袋包裹着,在火星上弹跳了一段距离,然后无损打开。这是一次非常成功的探索,但在它刚开始运行的时候几乎失败了。它总是反复重启,什么事也做不成。

经过研究,地面人员发现问题出在优先级倒置(Priority Inversion)。有这样三个任务,低优先级任务M3采集地表数据,它与高优先级任务M1共享某个通信资源R。当它锁定R后,如果不完成释放,别的任务不能访问。好在M3使用R的时间小于M1的最长等待时间,在地面测试时也没有发现问题。

到了火星上,那个中等优先级的任务M2总是在M3锁定R后请求执行。因为它的优先级高,操作系统把CPU给了M2,于是M1一直等不到R,错过截止期,触发系统重启。如此反复,Pathfinder死在了那儿。这就是所谓的Priority Inversion,高优先级任务居然被中优先级任务抢了CPU。

Priority inheritance协议可以解决这个问题。我们先给共享资源一个优先级,等于所有需要访问它的任务中优先级最高的那个。当低优先级任务使用共享资源时,它临时继承(inherit)共享资源的优先级。这样中优先级的任务就不能抢占它使用的CPU了。

Pathfinder使用的是WindRiver公司的实时操作系统VxWorks。WindRiver的工程师读到过那篇Priority Inversion的文章,已经在VxWorks实现了对priority inheritance协议的支持。因此,他们通过Pathfinder的调试口超远程修改了一个开关位,使能了该协议。借用一个英文成语,The rest is history。

大概是2001年时,我去参加RTSS会议。会议邀请WindRiver的CTO作报告,他讲述了这个故事。出乎他的意料,主持人当场请那篇文章的作者们(Lui Sha、John Lehoczky、和Raj Rajkumar)站了起来,全场掌声雷动。

工业互联网是实时物联网:谁研究实时?

当计算机专业出现时,教授们都来自多个领域。我留学的系里还有一个哲学教授。实时系统研究的好多权威也都来自不同专业,有学统计的,有搞航空的。我的导师是电子工程系毕业的,现在大家基本上都在计算机系了。

早期的研究基本上集中在实时任务模型的研究,上世纪八、九十年代达到了高峰,我称之为经典时代。EDF、RMA、Priority Inversion、Untilization Bound等概念在那个阶段得到了深入的研究。现在的学术会议RTSS、RTAS上,task scheduling的session依然是会议重点。

当我们谈到实时系统时,经常是指硬实时。就是说,违背时间约束的后果是完全的失败,如重大经济损失或人员伤亡。当后果可以容忍时,我们称作软实时。软实时系统可以通过事后补救来保持系统的持续运行,硬实时是学术界研究的重点。

计算机一出现,制造业就开始采用了。所以实时系统在工业界的历史其实还早于学术界。不过学术成果的影响还是很明显的。上述调度算法都已经成为商业实时操作系统的标配了。一个案例是火星探测器的故事,地面人员通过其实时操作系统远程解决了一个Priority Inversion的事故。

工业界用的词汇是嵌入式系统。学术界也有专门研究嵌入式系统的,可以称作实时系统的实践研究,嵌入式芯片、嵌入式软件(操作系统、数据库、网络)、嵌入式开发等。我在同济接手的一门课就叫嵌入式系统(一直想把这门课改名为信息物理系统 )。

最近流行的一个词叫“物联网操作系统”,如华为的LiteOS。严格意义上讲它们就是实时操作系统,不像GE的“互联网操作系统”那样拓展了操作系统这个词的定义。安卓和苹果手机的iOS,在我看来是介乎传统操作系统和实时操作系统之间的一个新物种。