从2015年以前发表的帖子来看,国内上天的卫星产品没有使用Linux系统的。
一、Linux系统
Linux作为一款抢占式多任务操作系统,上下文切换和中断在所难免。但可以给任务进程设置运行优先级(nice/renice)和进行CPU核心亲缘性绑定(taskset)。就算发生上下文切换,那也是微秒级别的耗时,还是很快的,只是相对没有那么“实时”而已,如果航天器相差万分之一秒会导致的严重的错误,这时就不适合使用Linux了。
二、航天器对计算机操作系统的要求
由于为了对抗高能粒子等原因,计算机的频率会很低(天宫一号的主机计算频率貌似在20MHz上下),制作尺寸也很大,空间小(VxWorks653内核能裁剪到很小(8000行代码),也能支持SPARC架构,据说天宫什么的用的就是这个,VxWorks653也能关闭动态内存申请),不能跑标准版的系统。军工航天口,实时操作系统一般都用风河公司的Vxworks。军工航天领域对计算机系统的要求是稳定、高可靠性、体积不要太大、实时性高。
1、稳定:就意味着内核代码不能经常改变,Linux版本变化太快,这一点就不符合要求。NASA用的代码是WindRiver十年前的代码。
2、高可靠性:就是这个系统运行很长时间不能有bug,据说连续运行时间最长的是一款Unix(不是很确定),而Windows最长连续运行时间才1年多(这个数据较早,可能是WIN2K的数据);
3、体积不要太大:因为要留出足够的内存给其它任务,比如探测器的数据保存等工作,内核体积要足够小,一个典型的Linux内核大概是几M,Windows的内核文件NTOSKRNL.EXE也是几M,这还只是镜像的体积,运行时的内存就占的更大了。而VxWorks最小内核可以小到几百K,运行内存也是几MB就足够了。有人会说DOS也可以这么小,但是DOS是16位系统,并且常见的只能在X86平台,VxWorks是跨平台(MIPS/PPC/X86/ARM...),并且是完整的32位系统。
4、实时性高:实时性主要是指对中断响应的速度,大多数应用操作系统对中断的响应速度是极慢的,具体表现就是关中断时间太长,如果有大量的中断发生,会出现丢中断的情况。VxWorks在这一点是最具有优势的,它处理中断采用的方式与其它OS不同,能保证关中断的时间非常短。