自从1997年7月4日抵达火星表面后,火星探路者(The Mars Pathfinder)一直被大肆宣称为“完美的”。它确实包含了很多成功之处,从它那非传统的着陆方式――被巨大的气囊包裹着蹦蹦跳跳着陆,然后释放出火星探路者――开始,直到它收集并向地球发回的大量火星第一手数据,比如后来流传到Web上并让人叹为观止的各种火星表面全景图。但是在着陆后的第10 天,也就是开始采集气象资料后不久,探路者开始犯傻――开始无规律地重启,每次重启都造成了数据丢失,在每天的记者招待会上这都是记者们不会放过的最热门的话题。NASA(美国国家航空航天局)的公共关系部门只是用一些术语比如“software glitches”来解释,他们告知外界,原因是计算机试图同时完成太多的事情所以造成了故障。
在上周的IEEE实时系统会议上,WindRiver CTO David Wilner给出了一个很有意思的新说法。当然,众所周知,该公司的实时嵌入式内核VxWorks,就用在火星探路者上。在该会议上,他详细解释了哪些真正的软件问题导致了探路者整个系统的重启,以及他们是如何诊断并解决该问题的,让我们分享一下这个故事。
先了解一些基本情况。
VxWorks提供基于优先级的可强占调度方式。探路者上的任务均被赋予优先级,采用的是常规方式――按任务的紧急程度――划分优先级。
探路者有一个“information bus”,可以看作是一块共享存储区,该区域用于在探路者的不同组件之间传递信息。当然,随之就有一个总线管理任务,该任务以高优先级运行,负责在总线上放入或者取出各种数据。它被设计为最重要的任务,并且要保证能够每隔一定的时间就可以操作总线。对总线的异步访问是通过互斥
Vxworks 中的 优先级翻转
最新推荐文章于 2024-02-04 14:51:27 发布
本文讲述了火星探路者任务中VxWorks实时操作系统遇到的优先级翻转问题,导致系统频繁重启。问题由低优先级任务持有互斥锁,高优先级任务被中优先级任务抢占引起。通过启用优先级继承机制解决了此问题,强调了在关键系统中保留调试功能和理解优先级翻转的重要性。


2043

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



