宇宙开发产业的 Linux

简介:

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

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


4f16662849bc09e8431c2c6186ccc587c99f2d84

但这是否意味着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]

相关文章
|
10天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
36 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
2月前
|
算法 Linux 测试技术
Linux C++开发中的代码优化之道:把握时机与策略
Linux C++开发中的代码优化之道:把握时机与策略
49 0
|
12天前
|
Unix Linux Shell
FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库
在Linux环境下交叉编译Android所需的FFmpeg so库,首先下载`android-ndk-r21e`,然后解压。接着,上传FFmpeg及相关库(如x264、freetype、lame)源码,修改相关sh文件,将`SYSTEM=windows-x86_64`改为`SYSTEM=linux-x86_64`并删除回车符。对x264的configure文件进行修改,然后编译x264。同样编译其他第三方库。设置环境变量`PKG_CONFIG_PATH`,最后在FFmpeg源码目录执行配置、编译和安装命令,生成的so文件复制到App工程指定目录。
43 9
FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库
|
1天前
|
前端开发 Linux iOS开发
【Flutter前端技术开发专栏】Flutter在桌面应用(Windows/macOS/Linux)的开发实践
【4月更文挑战第30天】Flutter扩展至桌面应用开发,允许开发者用同一代码库构建Windows、macOS和Linux应用,提高效率并保持平台一致性。创建桌面应用需指定目标平台,如`flutter create -t windows my_desktop_app`。开发中注意UI适配、性能优化、系统交互及测试部署。UI适配利用布局组件和`MediaQuery`,性能优化借助`PerformanceLogging`、`Isolate`和`compute`。
【Flutter前端技术开发专栏】Flutter在桌面应用(Windows/macOS/Linux)的开发实践
|
4天前
|
编解码 Linux
FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
在《FFmpeg开发实战》一书中,介绍了如何在Linux环境下为FFmpeg集成libopus和libvpx,以支持WebM格式的Opus和VP8/VP9编码。首先,下载并安装libopus。接着,下载并安装libvpx。最后,在FFmpeg源码目录下,重新配置FFmpeg,启用libopus和libvpx,编译并安装。通过`ffmpeg -version`检查版本信息,确认libopus和libvpx已启用。
16 1
FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
|
5天前
|
编解码 Linux
FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr
在Linux环境下,为FFmpeg添加对AAC、MP3、OGG和AMR音频格式的支持,需安装libogg、libvorbis和opencore-amr库。首先,从官方源下载各库的最新源码,如libogg-1.3.5、libvorbis-1.3.7和opencore-amr-0.1.6,然后解压并依次执行`./configure`、`make`和`make install`进行编译安装。接着,在FFmpeg源码目录中,使用`./configure`命令重新配置,并重新编译安装FFmpeg。最后,验证FFmpeg版本信息确认已启用ogg和amr支持。
16 0
FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr
|
26天前
|
Linux API C语言
FFmpeg开发笔记(一)搭建Linux系统的开发环境
本文指导初学者如何在Linux上搭建FFmpeg开发环境。首先,由于FFmpeg依赖第三方库,可以免去编译源码的复杂过程,直接安装预编译的FFmpeg动态库。推荐网站<https://github.com/BtbN/FFmpeg-Builds/releases>提供适用于不同系统的FFmpeg包。但在安装前,需确保系统有不低于2.22版本的glibc库。详细步骤包括下载glibc-2.23源码,配置、编译和安装。接着,下载Linux版FFmpeg安装包,解压至/usr/local/ffmpeg,并设置环境变量。最后编写和编译简单的C或C++测试程序验证FFmpeg环境是否正确配置。
44 8
FFmpeg开发笔记(一)搭建Linux系统的开发环境
|
2月前
|
存储 缓存 Linux
探秘Linux块设备驱动程序:成为内核开发大师的第一步
探秘Linux块设备驱动程序:成为内核开发大师的第一步
97 0
|
2月前
|
Linux
linux驱动开发-点亮第一个led灯
linux驱动开发-点亮第一个led灯
23 0
|
2月前
|
网络协议 Java Linux
Java 开发常用的 Linux 命令知识积累
Java 开发常用的 Linux 命令知识积累
38 0