114

I was wondering if anyone knows what is the operating system used in commercial airplanes (say Boeing or Airbus).

Also, what is the (preferred) real-time programing language? I heard that Ada is used in Boeing, so my question is - why Ada? what are the criteria the Boeing-guys had to choose this language? (I guess Java wouldn't be a great choice if exactly on lift-off the garbage collector wakes up).

12
  • 12
    When I first saw this question I thought it was asking about the systems that run the in-flight movies and such in the backs of seats. I was once on a Delta flight where they rebooted that system and you could tell that it was running Linux, a Debian variant I believe. Commented Jun 18, 2012 at 12:28
  • 1
    @root45: ahhhhhh... I admit it didn't even cross my mind. Could have been. I've seen some run some QNX I think, and others run Windows Embedded.
    – haylem
    Commented Jun 18, 2012 at 13:03
  • 18
    "What kind of operating system does it use?" "I think it's Vista." "We're going to die!"
    – StuperUser
    Commented Jun 18, 2012 at 15:42
  • 1
    @StuperUser: One of my favorite I.T. Crowd episodes. (youtube.com/watch?v=8y4akOH8v8Q - 2:34 minutes). Also, not just commercial airlines, but it would be interesting to know more about what military aircraft use, if it's not the same. Vista, lol.
    – Bratch
    Commented Jun 18, 2012 at 22:04
  • 1
    @Piskvor: there are real-time VMs for Java (as in the language, not the platform). I don't know if JavaRT variants have been used for serious (and inhabited) flight systems, but I've seen it used for models or drones.
    – haylem
    Commented Jun 19, 2012 at 10:39

4 Answers 4

158

Avionics

For aircraft control systems, we don't speak of operating systems but of avionics, integrated avionics or computer airborne systems in general. And they are actually a combination of a multitude of independent or inter-dependent systems, for different functions (flight control, collision avoidance, weather, communications, blackboxes...).

Each controller is usually an independent module (hardware and software) for obvious security and safety reasons: they are critical control and monitoring systems and if one of them were to fail or get damaged, it's a rather big "inconvenience" for the people which are depending on the aircraft. Dependability takes all its meaning when you are in the flying machine. So usually it's

  • custom built for the purpose of their mission,
  • built to work independently and interface with other systems,
  • built to be fault-tolerant to its own failures AND to failures of the other systems it's interfaced to (because you don't want the pilot's sound system taking down the engine controls, for instance).

It's not a big computer running everything. If you think of it from the perspective of a military aircraft rather than a commercial one (though it's similar in this respect, the image might help): if a part gets shot at, you'd rather at least have some other parts be able to keep going (the part controlling the communications and safety systems might be interesting to keep alive...). Hence also the big bunch of buttons you see in jetliners, to keep track of the status of different systems.

They are usually either built as custom components operating their own system, or they are run and scheduled by a micro-kernel (in most cases, with support for real-time capabilities).

It depends across vendors and countries, obviously, but they usually at least need to follow rather strict sets of regulations, design requirements and protocol specifics, which allow for:

  • the control of their strict-compliance to security and safety standards,
  • the inter-communication with other systems (much better if that airplane you took off with in Reykjavik can "talk" to that ground-control equipment in Tokyo...)

Standardization Efforts

The DO-178B (revised in 1992) and its successor the DO-178C (revised in 2012) (and a bunch of associated documents) are an example of reference certifications for such compliance levels, and are recognized by the FAA (US), the EASA (EU), and Transport Canada, amongst others. Multiple other organizations are involved in the creation of such documents, like the EUROCAE.

Such airborne systems are usually bespoke software, but the following systems are known to be used in some airplanes:

To give you a vague idea of elements built into an avionics system, this list of avionics acronyms points to some of them (with some overlap).

Notable Languages used in Commercial and Military Avionics

Apart from the usual suspects we know in the "mainstream" programming world, you'll come up some often referenced names like Ada, and some less known languages like the (dated and now "retired" since 2010) JOVIAL.


Related StackExchange Questions:

11
  • 2
    @mattnz: Thanks. But it's honestly a bit far from what the OP is asking. I tried to provide useful insight and pointers for documentation purposes, but when it comes to actual implementation details it's harder to find hard data.
    – haylem
    Commented Jun 18, 2012 at 4:43
  • "And they are actually a combination of a multitude of independent or inter-dependent systems" do you mean there is seperate hardware for these?
    – stijn
    Commented Jun 18, 2012 at 9:53
  • 2
    Yes, they tend to be purpose built hardware. There isn't a rack of x86 pcs running your aircraft.
    – rlperez
    Commented Jun 18, 2012 at 12:04
  • 3
    @stijn: Well, yeah. Think of it this way. They are critical control and monitoring systems. If one of them fails, that means big freakin' problem, with a super big F and less polite than that. So usually it's a) custom built for the purpose of their mission b) built to work independently and interface with other systems c) built to be fault-tolerant to its own failures AND to failures of the other systems it's interfaced to (because you don't want the pilot's sound system taking down the engine controls, for instance). It's not a big computer running everything.
    – haylem
    Commented Jun 18, 2012 at 12:43
  • @stijn: Think of it from the perspective of a military aircraft rather than a commercial one, if that helps: if a part gets shot at, you'd rather at least have some other parts be able to keep going (I'd say the part controlling the communications and safety systems might be interesting to keep alive...). Hence also the big bunch of buttons you see in jetliners, to keep track of the status of different systems.
    – haylem
    Commented Jun 18, 2012 at 12:45
23

Most modern aircraft use a general purpose RTOS (realtime operating system) pretty much the same thing that is used in factory automation, power stations, ships etc

Airbus use a few, including INTEGRITY from Northrop-grumman and program it in C/C++, Boeing use VxWorks among others

3
  • 2
    The statement "...general purpose RTOS..." trivializes what it takes for an RTOS to make it into an avionics system, it's hardly the same RTOS thats using in ACME Corps Digital TV Reciever .
    – mattnz
    Commented Jun 18, 2012 at 4:08
  • 3
    No but VxWorks can be used for anything from a Mar Rover to your Blackberry phone Commented Jun 18, 2012 at 4:52
  • Sorry it's QNX that is used in Blackberry, not VxWorks. But the same principle applies - COTS rtos's can be used in aircraft Commented Jun 20, 2012 at 14:22
12

For what it's worth: For spacecraft (satellites and interplanetary ones) C and C++ is still dominant (and with very strict compliance to ISO standards), generally running VxWorks. Labs will generally stick with either C or C++ based on developer familiarity, confidence in the compiler toolchain, and internal coding standards. There are compelling reasons for both languages for real-time flight software, but each organization tends to stick with one or the other. Ancillary instruments, on the other hand, are commonly programmed in Forth, C, and increasingly modern scripting languages like Lua.

1
  • 3
    Usually it's also a subset of C or C++, like MISRA C or JSF C++, as far as I've read.
    – Coder
    Commented Jun 18, 2012 at 17:43
10

Also worth noting that the control systems are often developed using model-based-design using Simulink. The design is then converted into C code automatically. Humans still read and validate the code.

2
  • My professor indeed mentioned it when talked about critical systems in Software Engineering. Commented Jan 11, 2013 at 19:28
  • I believe Airbus uses SCADE for the functional specification of the hardware and software in their flight control systems. The tool can generate either C or Ada code. Commented Aug 21, 2014 at 4:30

Not the answer you're looking for? Browse other questions tagged or ask your own question.