我想知道是否有人知道商用飞机使用什么操作系统(例如波音或空中客车公司)。

,(首选的)实时编程语言是什么?我听说波音公司使用了Ada,所以我的问题是-为什么要使用Ada?波音人选择该语言的标准是什么? (我猜想Java并不是一个不错的选择,如果正好在提起垃圾收集器时醒来)。

评论

当我第一次看到这个问题时,我以为是在问运行电影的系统以及座椅靠背等系统。我曾经在一次达美航班上,他们重新启动了该系统,您可以说它正在运行Linux,我相信这是Debian的变种。
@ root45:啊……我承认它甚至还没引起我的注意。本来可以。我已经看到有些运行我认为的QNX,而其他运行Windows Embedded。

“它使用哪种操作系统?” “我认为是Vista。” “我们要死了!”

@StuperUser:我最喜欢的IT之一人群情节。 (youtube.com/watch?v=8y4akOH8v8Q-2:34分钟)。另外,不仅是商业航空公司,而且如果不一样,更多地了解军用飞机的使用也会很有趣。 Vista,哈哈。

@Piskvor:存在用于Java的实时VM(如使用语言,而不是平台)。我不知道JavaRT变体是否已用于严肃的(和有人居住的)飞行系统,但是我已经看到它用于模型或无人机。

#1 楼

航空电子

对于飞机控制系统,我们通常不谈操作系统,而是说航空电子,集成航空电子或计算机机载系统。它们实际上是针对不同功能(飞行控制,避撞,天气,通信,黑匣子……)的众多独立或相互依赖的系统的组合。每个控制器通常是一个独立模块(硬件和软件),出于明显的安全性和安全性考虑:它们是关键的控制和监视系统,如果其中之一发生故障或损坏,对于依赖飞机的人员来说是一个很大的“麻烦”。当您在飞行器中时,可靠性具有所有意义。所以通常是


是为执行任务而定制的,
是独立工作并与其他系统接口的,
是为其容错的自身的故障以及与之相连的其他系统的故障(例如,因为您不希望飞行员的音响系统取消发动机控制)。

这不是一台运行一切的大型计算机。如果您是从军用飞机而不是商用飞机的角度考虑它(尽管在这方面很相似,但该图像可能会有所帮助):如果有人射击了某部分,则您至少希望有一些其他部分能够继续前进(控制通讯和安全系统的部分可能很有趣……)。因此,您还会在喷气客机中看到一大堆按钮,以跟踪不同系统的状态。

它们通常是作为运行其自身系统的自定义组件构建的,或者由微内核运行和调度的(在大多数情况下,它们都支持实时功能)。
显然,这取决于供应商和国家/地区,但他们通常至少需要遵循相当严格的一套法规,设计要求和协议细节,以实现: -符合安保和安全标准,
与其他系统进行相互通信(如果您在雷克雅未克起飞的飞机可以与东京的地面控制设备“对话”,那就更好了。)

标准化工作

DO-178B(于1992年修订)及其后继产品DO-178C(于2012年修订)(以及大量相关文件)是参考认证的一个示例达到此类合规水平,并获得美国联邦航空局(FAA),欧洲航空安全局(EASA)(EU)和加拿大运输部等的认可。此类文件的创建还涉及多个其他组织,例如EUROCAE。

此类机载系统通常是定制软件,但已知以下系统可用于某些飞机:



WindRiver的VxWorks(请参见航空航天和国防用途),

QNX(实际上不确定QNX是否用于飞机,但是否用于地面控制系统)

为了使您对航空电子系统中内置的元素有一个模糊的认识,此航空电子首字母缩写词列表指向其中一些(有些重叠)。和军用航空电子设备

除了我们在“主流”编程世界中认识的通常的怀疑者之外,您还会想到一些经常被引用的名称,例如Ada,以及一些鲜为人知的语言,例如(已于2010年“退休”)JOVIAL。


相关的StackExchange问​​题:飞机计算机使用哪个操作系统?


评论


@mattnz:谢谢。但说实话,这与OP的要求相差甚远。我试图提供有用的见解和用于文档目的的指针,但是当涉及到实际的实现细节时,很难找到硬数据。

– Haylem
2012年6月18日下午4:43

“它们实际上是许多独立或相互依赖的系统的组合”,您是说这些设备有单独的硬件吗?

–stijn
2012年6月18日,9:53

是的,它们往往是专用硬件。没有一架运行飞机的x86电脑。

–钻机
2012年6月18日12:04

@stijn:是的,是的。这样想吧。它们是关键的控制和监视系统。如果其中之一失败了,那就意味着大发狂的问题,F超级大,礼貌程度不高。因此通常是a)为执行任务而定制的b)独立运行并与其他系统接口的c)能够容错自身的故障以及所连接的其他系统的故障(因为您不愿意)例如,不希望飞行员的音响系统取消引擎控制)。这不是一台运行所有内容的大型计算机。

– Haylem
2012年6月18日12:43

@stijn:如果有帮助的话,从军用飞机而不是商用飞机的角度考虑:如果有部分被射击,您宁愿至少还有其他一些部分能够继续前进(我想控制通讯和安全系统的部分可能会很有趣……)。因此,您还会在喷气客机中看到很多按钮,以跟踪不同系统的状态。

– Haylem
2012年6月18日12:45

#2 楼

大多数现代飞机都使用通用RTOS(实时操作系统),几乎与工厂自动化,电站,轮船等中使用的东西相同。用C / C ++对其进行编程,波音公司除其他外还使用VxWorks

评论


“ ...通用RTOS ...”的陈述使RTOS进入航空电子系统所需的花费变得微不足道,这几乎与ACME Corps Digital TV Reciever中使用的RTOS几乎相同。

–mattnz
2012年6月18日4:08

否,但是VxWorks可以用于从Mar Rover到Blackberry手机的任何事物

–马丁·贝克特(Martin Beckett)
2012年6月18日下午4:52

抱歉,Blackberry中使用的是QNX,而不是VxWorks。但是同样的原则适用-COTS rtos可以在飞机上使用

–马丁·贝克特(Martin Beckett)
2012年6月20日14:22

#3 楼

物有所值:对于航天器(卫星和星际飞机),C和C ++仍然占主导地位(并且非常严格地符合ISO标准),通常运行VxWorks。根据开发人员的熟悉程度,对编译器工具链的信心以及内部编码标准,实验室通常会使用C或C ++。对于实时飞行软件,两种语言都有令人信服的理由,但是每个组织都倾向于坚持使用其中一种。另一方面,辅助工具通常使用Forth,C和越来越现代的脚本语言(例如Lua)进行编程。

评论


就我所知,它通常还是C或C ++的子集,例如MISRA C或JSF C ++。

–编码器
2012年6月18日17:43

#4 楼

同样值得注意的是,控制系统通常使用Simulink使用基于模型的设计来开发。然后将设计自动转换为C代码。人们仍在阅读并验证代码。

评论


当谈到软件工程中的关键系统时,我的教授确实提到了它。

–迪尔森销售
2013年1月11日19:28

我相信空中客车公司将SCADE用于其飞行控制系统中硬件和软件的功能规范。该工具可以生成C或Ada代码。

– dodgy_coder
2014年8月21日在4:30