Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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).

share|improve this question
9  
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. –  Kris Harper Jun 18 '12 at 12:28
    
@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 Jun 18 '12 at 13:03
10  
"What kind of operating system does it use?" "I think it's Vista." "We're going to die!" –  StuperUser Jun 18 '12 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 Jun 18 '12 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 Jun 19 '12 at 10:39

4 Answers 4

up vote 124 down vote accepted

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 systemsm and if one of them were to fail or get damaged, it's a rather big "inconvenience" for the people depending 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:

share|improve this answer
9  
+1 Superb answer. –  mattnz Jun 18 '12 at 4:08
1  
@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 Jun 18 '12 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 Jun 18 '12 at 9:53
2  
Yes, they tend to be purpose built hardware. There isn't a rack of x86 pcs running your aircraft. –  Rig Jun 18 '12 at 12:04
2  
@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 Jun 18 '12 at 12:43

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

share|improve this answer
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 Jun 18 '12 at 4:08
1  
No but VxWorks can be used for anything from a Mar Rover to your Blackberry phone –  Martin Beckett Jun 18 '12 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 –  Martin Beckett Jun 20 '12 at 14:22

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.

share|improve this answer
3  
Usually it's also a subset of C or C++, like MISRA C or JSF C++, as far as I've read. –  Coder Jun 18 '12 at 17:43

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.

share|improve this answer
    
My professor indeed mentioned it when talked about critical systems in Software Engineering. –  Balder Jan 11 '13 at 19:28

protected by Yannis Rizos Nov 21 '12 at 17:26

Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site.

Would you like to answer one of these unanswered questions instead?

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