中国航天用的SpaceOS主要内容是仿造美国风河系统公司的VxWorks653(653是产品名,并非版本号)。

先解释为什么用这个系统不用Linux:

航天器的内存和CPU都非常弱,弱到什么程度呢:天宫一号的CPU是10MHz的,内存是2M

,这种配置跑Linux比较费劲,虽然也并非不可能但要裁剪Linux内核确实太麻烦了。

而Linux的致命缺陷就是Linux不是一个硬实时操作系统。实时操作系统(RTOS)有一系列严格的定义:包括严格按照任务优先级抢占执行,快速的中断响应,对关中断的时间有非常严格的控制,Linux是一个民用的操作系统,其内核设计并没有考虑到这些点,所以Linux不适用于航天领域。

实际上,Linux的主要应用还是在通用计算机和服务器方面,在工业控制、自动化方面还有各种各样的操作系统:ucos,nuclues,threadX,greenhill,VxWorks等等。

有人提到了RT-Linux,这个说的简单点,就是底下是一层RTOS,上面是Linux,这种Linux复杂度太高,也不能裁剪的太小。

有人说到SpaceX公司用的是Linux,这没错,是火箭用的,SpaceX的龙号飞船用的是VxWorks系统。

另外,很多人听了可能会难过的就是中国的国防军工行业的自动化控制部分实际上也都是VxWorks称霸的,虽然号称自主知识产权,但实际上不是那么回事。

家用系统多数情况下要求系统的均衡运行,比如,你可以同时玩游戏,上网,听音乐,但实时系统都是重要任务先执行,不重要的任务往后放,设计理念是不一样的。

下面讨论一下这个系统的规模问题,8000行应该说差不多正合适,一个内核、一个调度器、若干任务、中断处理,甚至可能不包含动态内存分配,不要觉得连动态内存分配都没有还算系统吗?算,有的系统就是这么设计的,要知道内存碎片对于只有几M内存的设备来说是很可怕的。甚至有的系统里是没有中断的,中断处理是通过轮询的方式实现,为的是系统状态可以实时追踪。

这么小的系统需要的是精确可靠,有人说自己一个月就能写8K行代码,你要这么说,我说我也可以写出来,操作系统不是写应用,需要考虑的设计细节非常多,而且一旦定型,修改又非常麻烦,而且需要大量的测试,NASA那边是一个开发对应几十个甚至上百的测试的比例,对于航天工业来说,可靠性是最重要的。

最后想说的就是,Linux/Unix/Windows这些都是通用操作系统,跟专用的操作系统差别很大,设计思路也完全不一样,不要从通用操作系统的角度去看待它们

-----------------------

漏掉一点:为什么航天器的计算机配置都这么差:

因为太空辐射、极端温度的原因,计算机系统首先要求的是可靠性,高温100多度,低温零下100多度,这种温度下一般家用计算机早就挂了,所以为了对应这个极端环境,主要的硬件都被设计成很耐用的状态,这就使得计算机速度不是一个重要的指标。另外太空辐射会造成位翻转,频率越高越容易被干扰,所以低频是主流。

(转)神舟飞船上的计算机使用什么操作系统,为什么是自研发不是 Linux?的更多相关文章

  1. 神舟飞船上的计算机使用什么操作系统,为什么是自研发不是 Linux?

    中国航天用的SpaceOS主要内容是仿造美国风河系统公司的VxWorks653(653是产品名,并非版本号). 先解释为什么用这个系统不用Linux: 航天器的内存和CPU都非常弱,弱到什么程度呢:天 ...

  2. 神舟K650c i7(W350STQ)上成功装好Mac OS X 10.9,兼谈如何安装WinXP、7、8.1、OSX、Ubuntu五系统(Chameleon、MBR)

    作者:zyl910 参考教程——http://bbs.pcbeta.com/viewthread-1432534-1-4.html笔记本SNB和IVY平台Win7/Win8/Win8.1安装OS X ...

  3. 成功在神舟K650c-i7 d2(i7-4700MQ、HM87)上装好了Windows XP

    成功在神舟K650c-i7 d2(i7-4700MQ.HM87)上装好了Windows XP 本来已经在K650c上装好了Windows7.Windows8双系统,奈何某些旧软件只能在Windows ...

  4. [SSD大法好]神舟K480-I5-D3鸟枪换炮M6S

    Hello,SSD 期盼已久,终于入手了M6S的256G固态硬盘,白天就不安生一直百度.谷歌.必应,势必要把所有相关消息查个清楚这神舟K480I5D3怎生拆呢. 最后心里隐约有了安装的法门. 但到得开 ...

  5. FreeRTOS+FreeModbus+神舟IV号

    下面的这个例子是FreeModbus和FreeRTOS在神舟IV号上的应用,仅当做学习用途. 这个demo完成的功能也比较简单,创建了两个任务,一个任务用于控制板子上的LED1,使它每1秒钟闪烁一次. ...

  6. 神舟+win10+ubuntu16.04+256GSSD+1THHD双系统安装加openssl踩坑之旅

    上海最近搞活动调休,要搞深度学习,win上还是不方便,准备弄个ubuntu.于是有以下回忆文字. 在机器上装了个双系统.花了两天.再也不想玩了. 准备用ubuntu来做深度学习的. 本文写于2019年 ...

  7. 神舟zx6-ct5da装黑苹果Macos 10.15.6记录

    可能是一时脑子抽风,突然就想体验一把mac系统.以前就了解过,给非苹果电脑装macos叫黑苹果,emmmmm.好吧,给我的神船也整一个. 看了很多个视频,整理一下装黑苹果过程.本人电脑系统是win10 ...

  8. 【转载】如何从零开始开发一款嵌入式产品(20年的嵌入式经验分享学习,来自STM32神舟系列开发板设计师的总结

    [好文章值得分享,摘自作者:jesse] 来源:www.armjishu.com作者:jesse转载请注明出处 我的另一篇文章:<STM32嵌入式入门必看之文章-----介绍非常详细!(学STM ...

  9. Windows Server 2012 R2在桌面上显示计算机/网络图标

    原文 Windows Server 2012 R2在桌面上显示计算机/网络图标 从Windows2012开始,微软取消了服务器桌面个性化选项,如何重新调出配置界面,可以使用微软命令调出.具体方法如下: ...

随机推荐

  1. BNU 26349——Cards——————【区间dp】

    题目大意:给你n张牌,排成一排放在桌子上,可以从左端拿也可以从右端拿.现在有A,B两人轮流取牌,A先取,两人足够聪明,即都想取最大的牌总和,问A能取到的最大值. 解题思路:定义dp[i][j][k]. ...

  2. Actor的一生

    Actor应该怎么去形容它呢?它是一段代码扮演的角色.它拥有自己的状态机,能根据外界的消息进行适当的反应.他有记忆能力,可以记住来自外界的多个消息并依次进行反应.Actor就像一个小的生命体,有自己的 ...

  3. (生产)animate.css 动画库

    官网:https://daneden.github.io/animate.css/ Animate.css是一个有趣的,跨浏览器的css3动画库 用法 首先引入animate css文件:    &l ...

  4. 我的Android开发之路——百度地图开源工具获取定位信息

    定位技术在现在的移动设备上是必不可少的,许多app都会使用定位功能. 通常定位方式有两种:GPS定位:网络定位. Android系统对这两种定位方式都提供了相应的API支持,但是因为google的网络 ...

  5. 带你了解强大的Cadence家族,你可能只用到了它1/10的工具

    [转载自 SI-list[中国]http://mp.weixin.qq.com/s/qsdfzQwIVjvwHXuCdvrPXA ] 本篇对2017年初版Cadence的全套所有EDA工具的技术特性特 ...

  6. linux单机限速工具

    wondershaper是国外人开发的一款在Linux内核下基于TC工具的对整块网卡的限度工具. http://lartc.org/wondershaper/ 安装wondershaper: [roo ...

  7. Linux CentOS下部署Java Web项目

    本文讲解如何在Linux CentOS下部署Java Web项目的步骤. 一.环境准备: (1)Linux CentOS (2)apache-tomcat-9.0.10 (3)XShell 二.启动t ...

  8. 用iSee图片专家制作淘宝店标教程

    普通的淘宝店铺都会有店标.店标都显示在店铺首页的显现位置,买家在逛淘宝店的时候,一眼都会瞄到店标.因此,如果可以制作一个专属于自己店铺的店标,可以吸引买家的眼光,也更好地宣传了店铺. 下面就用iSee ...

  9. IOS 设置ipone状态栏的样式

    /** 控制状态栏的样式 */ -(UIStatusBarStyle)preferredStatusBarStyle { //白色 return UIStatusBarStyleLightConten ...

  10. JAVA对list集合进行排序Collections.sort()

    对一个集合中的对象进行排序,根据对象的某个指标的大小进行升序或降序排序.代码如下: // 进行降序排列 Collections.sort(list, new Comparator<ResultT ...