宇宙开发产业的 Linux

地球的资源终会有耗尽的一天,为此各国都有投入资源开发太空科技。方向之一是活用Linux等开源软件,将资源作最有效运用。在宇宙开发产业中,Linux扮演什么角色?

转用Linux的理由不外乎成本和安全。以国际太空站(ISS)为例,2013年5月负责管理ISS的United Space Alliance(USA),就披露ISS曾经感染病毒,因此将系统都更换为Linux。2014年1月,日本宇宙航空研究开发机构JAXA,就宣布将美日合作的太阳观测卫星“日出”(SOLAR-B),以及磁气圏尾部观测卫星GEOTAIL的卫星管制功能,转移至Linux平台上,借此加强系统的灵活性和稳定性。

但这是否意味着Linux能在任何场景下使用呢?当然不是。例如美国的航天飞行器,采用的操作系统是Wind River公司开发的VxWorks 653,这也是中国航天飞行器系统SpaceOS的主要模仿对象。这些系统并没有使用Linux,原因是航天飞行器的记忆体和CPU都非常的阳春。阳春到什么程度呢?以中国天宫一号为例,其CPU速度是10MHz,记忆体只有2MB,这种配置跑Linux比较费劲,虽然也并非不可能,但如果要裁剪Linux核心才能用,就实在太麻烦了。

为什么航天飞行器的电脑配置都这么差?因为太空辐射、极端温度等原因,系统首先要求的是可靠性,必须在高温摄氏100多度、低温摄氏零下100多度下也可正常运作。换了是一般家用电脑在这种温度下早就挂了,所以为了对应这个极端环境,主要的硬体都被设计成很耐用的状态,令“电脑的速度”从来都不是一个重要的指标。另外太空辐射会造成位元翻转,频率越高越容易被干扰,所以低频的设计是主流。

而Linux的“缺点”,就是它不是一个真正的实时操作系统。实时操作系统(RTOS)有 一系列严格的定义,包括严格按照任务优先级别执行,快速的中断回应等等,都有非常严格的控制。“实时”简单的说,就是运行一个程序功能,像是进程切换的时 间,是精确而且可估计的。操作系统必须能及时处理外界中断、通讯等任务。如果不能及时回应导致数据丢失,对于一般系统而言可能问题不大,但对航天飞行器来 说,严重的话甚至有可能造成人命伤亡。

家用系统多数情况下,要求的是系统的“均衡运行”。例如你可以同时玩游戏、上网和听音乐,但实时系统却是“重要任务先执行,不重要的任务往后放”,设计理念是不一样的。Linux的进程切换需要在核心进行,用户状态和核心状态的切换,会耗费很多时间。有人会说Linux不是有个实时系统叫RT-Linux吗?这个说得简单一点,就是底下是一层RTOS,上面是 Linux 。这种 Linux 复杂度太高,也不能裁剪得太小。

例如嵌入式领域很流行的操作系统µC/OS-II,总共只有两三千行程序码,但是已经通过美国的行业认证,可以用在商业飞行器上,证明了其高效稳定性。这么小的系统,需要的是精确可靠。操作系统需要考虑的设计细节非常多,一旦定型修改又非常麻烦,而且需要大量的测试,以NASA为例,每个新开发的功能要进行几十个甚至上百个的测试。有人说SpaceX不是也有用Linux吗?是的。但其飞行器上使用的,却是VxWorks系统。事实上中国的国防军工行业的自动化控制部分,也是VxWorks的天下。虽然号称自主知识产权,但实际上仍然以美制系统为主流。

中国能不能写出自己的通用操作系统呢?我觉得是可以的,只是在这个操作系统之上的应用软 件一定不够多,最后没人会去用。因此目前中国团队做的操作系统,一般的目的都不是跟微软竞争,而是满足一些特殊需要。在基础领域很多项目没法做,是因为涉 及专利,基础理论专利在人家手里。龙芯研发负责人胡伟武说过,技术问题其实不难解决,只要有钱,大可去Intel和AMD挖角。但如果开发软件等配套服务跟不上,也是没用的。中国错过了电脑基础理论发展的黄金阶段,我们现在看到的,实际是几十年前埋下的苦果。开源技术可以是合法地发展自家科技的契机,关键只在乎我们是否愿意掌握。

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-09-20 05:46:49

宇宙开发产业的 Linux的相关文章

学习如何在基于IBM POWER的服务器上开发和部署Linux应用程序

在 IBM System p 和 System i POWER 平台上开发和部署 Linux 应用程序与在其他 Linux 系统上的开发和部署相似.在本文中,讨论对于 Linux on POWER 系统应该了解的相似性和差异. 简介 System p 和 System i 服务器都基于相同的 POWER 处理器架构,在 System p 或 System i 上的 Linux 发行版中编译的二进制代码可以在这两种平台上运行.但是,在 System p 和 System i 服务器之间,I/O 支

ARM开发板嵌入式Linux修改开机启动LOGO的方法

1.嵌入式 Linux LOGO显示原理 嵌入式Linux是直接在FrameBuffer的基础上.直接显示一个ppm格式的图象.它 kernel/drivers/video/fbcon.c中的fbcon_show_logo()完成,最大颜色支持224色而不常见的255色. 默认的logo文件是 drivers/video/logo/logo_linux_clut224.ppm. 2.制作流程 因为LINUX LOGO格式需要ppm格式来显示.这种格式是一种用ASCII来描述图像数据一种格式.一般

.NET Core多平台开发体验[3]: Linux (Windows Linux子系统)

如果想体验Linux环境下开发和运行.NET Core应用,我们有多种选择.一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux Distribution,目前来说像RHEL.Ubuntu.Debian.Fedora.CentOS和SUSE这些主流的Distribution都是支持的.如果读者朋友们觉得这种方式比较麻烦,我们也可以采用虚拟机的形式安装相应的Linux Distribution,比如我经常使用的都是安装在VirtualBox上的Ubuntu.对于64

linux-软件开发,安装Linux系统

问题描述 软件开发,安装Linux系统 软件开发,安装Linux系统的话,是把整个电脑都换成Linux系统,还是建立虚拟环境,在虚拟环境中使用Linux系统呢?哪样比较好?求高人指点迷津 解决方案 如果只是做纯软件开发,安装在虚拟机中完成没有问题.这样使用起来也方便,特别是在你不熟悉 Linux.而习惯使用 Windows 系统的情况下. 解决方案二: 学习英语,是在说外国本地英语坏境好,还是本地的英语角模拟英语环境好? 解决方案三: 看你方便,虚拟机里面转个linux 也是可以的.你如果不用w

ubuntu-求助:在开发板和LINUX间用NFS挂载文件看不到?

问题描述 求助:在开发板和LINUX间用NFS挂载文件看不到? 在FL2440开发板和ubuntu12.10间搭建NFS,用mount命令挂载后,在开发板上文档管理器中查看不到挂载文件,在minicom中用ls 也看不到,但在PC LINUX终端中创建了个hello测试文件,在minicom下执行是能成功(同样ls也看不到该文件),反过来在minicom中用touch命令创建个文件,在PC LINUX上却能看到这个文件,那说明NFS是肯定是挂载成功了的吧?为何却在开发板上却看不到挂载目录中的文件

《Android深度探索(卷1):HAL与驱动开发》——6.5节使用Eclipse开发和测试Linux驱动程序

6.5 使用Eclipse开发和测试Linux驱动程序 Android深度探索(卷1):HAL与驱动开发 在前面几节开发的word_count驱动和测试程序大多都需要在Linux终端进行编译(Android应用程序除外)和运行,而且也无法跟踪到Linux内核函数.变量.宏的内部(除非自己到Linux内核源代码中就寻找这些源代码文件),这并不利于深入了解Linux内核技术.在本节将为读者展示如何在Eclipse中开发Linux驱动程序,并且可以像跟踪Java代码一样直接跟踪到Linux内核源代码.

让你提前认识软件开发(51):VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改

第3部分 软件研发工作总结 VC++集成开发环境中Linux下Pclint工程的配置方法及常见错误修改   [文章摘要]         Pclint是一种C/C++软件代码静态分析工具.它是一种更加严格的编译器,能够发现普通编译器所不能发现的代码中的很多问题,因此被广泛应用于软件开发项目中.        本文介绍了如何在VC++集成开发环境中配置Linux下的Pclint工程,给出了C语言中pclint规则A检查的常见错误,并描述了对应的修改办法.   [关键词]          VC++

搭建Linux开发环境及Linux目录结构及文件使用学习

下图是我们在 windows 下开"计我的电脑"看到的是一个个的盘符:   开发环境及Linux目录结构及文件使用学习-">  在 Linux 下,我们是看不到这些盘符,我们看到的是文件夹(目录):     在早期的 UNIX 系统中,各个厂家各自定义了自己的 UNIX 系统文件目录,比较混乱.Linux 面世不久后,对文件目录进行了标准化,于1994年对根文件目录做了统一的规范,推出 FHS ( Filesystem Hierarchy Standard ) 的 Li

hdmi输出-Zedboard开发板linaro linux移植的问题

问题描述 Zedboard开发板linaro linux移植的问题 本人新手,初次接触这块开发板.准备移植linaro linux系统.现在linaro在开发板上可以成功启动,但是据说这个是有HDMI输出的图形化界面的,但是我接了显示器却没有任何反应.是哪个过程出现了问题呢?