Quais sistemas operacionais são usados ​​em aviões e em quais linguagens de programação eles são desenvolvidos? [fechadas]

113

Fiquei me perguntando se alguém sabe qual é o sistema operacional usado em aviões comerciais (como Boeing ou Airbus).

Além disso, qual é a linguagem de programação em tempo real (preferencial)? Ouvi dizer que Ada é usado na Boeing, então minha pergunta é - por que Ada? Quais são os critérios que os caras da Boeing tiveram para escolher esse idioma? (Acho que o Java não seria uma ótima opção se exatamente ao levantar o coletor de lixo acordasse).

adhg
fonte
11
Quando vi essa pergunta pela primeira vez, pensei que estava perguntando sobre os sistemas que rodam os filmes de bordo e coisas do tipo nas costas dos assentos. Eu estava em um voo da Delta, onde eles reiniciaram o sistema e você pode dizer que ele estava executando o Linux, uma variante do Debian, acredito.
Kris Harper
1
@ root45: ahhhhhh ... Admito que nem me passou pela cabeça. Poderia ter sido. Eu já vi alguns rodando alguns QNX, eu acho, e outros rodam o Windows Embedded.
haylem
17
"Que tipo de sistema operacional ele usa?" "Eu acho que é o Vista." "Nós vamos morrer!"
StuperUser
1
@StuperUser: um dos meus episódios favoritos da IT Crowd. ( youtube.com/watch?v=8y4akOH8v8Q - 2:34 minutos). Além disso, não apenas as linhas aéreas comerciais, mas seria interessante saber mais sobre o que as aeronaves militares usam, se não for o mesmo. Vista, lol.
Bratch
1
@Piskvor: existem VMs em tempo real para Java (como na linguagem, não na plataforma). Não sei se as variantes do JavaRT foram usadas para sistemas de vôo sérios (e habitados), mas já o vi usado para modelos ou drones.
haylem

Respostas:

157

Aviônica

Para sistemas de controle de aeronaves, não falamos de sistemas operacionais, mas de aviônicos , aviônicos integrados ou sistemas aéreos por computador em geral. E, na verdade, são uma combinação de uma infinidade de sistemas independentes ou interdependentes, para diferentes funções ( controle de vôo , prevenção de colisões , clima, comunicações, caixas-pretas ...).

Cada controlador é geralmente um módulo independente (hardware e software) por razões óbvias de segurança: eles são sistemas críticos de controle e monitoramento e se um deles falhar ou for danificado, é um grande "inconveniente" para as pessoas que estão dependendo da aeronave. A confiabilidade assume todo o seu significado quando você está na máquina voadora. Então geralmente é

  • personalizado construído para o propósito de sua missão,
  • construído para funcionar de forma independente e interagir com outros sistemas,
  • construído para tolerar falhas a suas próprias falhas E a falhas de outros sistemas com os quais a interface é feita (porque você não deseja que o sistema de som do piloto desative os controles do motor, por exemplo).

Não é um grande computador executando tudo. Se você pensar na perspectiva de uma aeronave militar em vez de comercial (embora seja semelhante a esse respeito, a imagem pode ajudar): se uma parte é atingida, você prefere que outras partes possam continuar (a parte que controla os sistemas de comunicação e segurança pode ser interessante para manter viva ...). Daí também o grande número de botões que você vê nos aviões, para acompanhar o status de diferentes sistemas.

Eles geralmente são criados como componentes personalizados operando seu próprio sistema ou são executados e agendados por um micro-kernel (na maioria dos casos, com suporte para recursos em tempo real).

Depende de fornecedores e países, obviamente, mas eles geralmente precisam seguir conjuntos de regulamentos bastante rígidos, requisitos de design e especificações de protocolo, que permitem:

  • o controle de sua estrita conformidade com as normas de segurança e proteção,
  • a intercomunicação com outros sistemas (muito melhor se o avião que você decolou em Reykjavik puder "conversar" com o equipamento de controle de solo em Tóquio ...)

Esforços de padronização

O DO-178B (revisado em 1992) e seu sucessor, o DO-178C (revisado em 2012) (e vários documentos associados) são um exemplo de certificações de referência para esses níveis de conformidade e são reconhecidos pela FAA (EUA), AESA (UE) e Transport Canada, entre outros. Várias outras organizações estão envolvidas na criação de tais documentos, como o EUROCAE .

Esses sistemas aéreos geralmente são softwares personalizados, mas sabe-se que os seguintes sistemas são usados ​​em alguns aviões:

Para lhe dar uma vaga idéia de elementos incorporados ao sistema aviônico, esta lista de acrônimos de aviônicos aponta para alguns deles (com alguma sobreposição).

Línguas notáveis ​​usadas em aviônicos comerciais e militares

Além dos suspeitos usuais que conhecemos no mundo da programação "mainstream", você encontrará nomes frequentemente referenciados como Ada e algumas linguagens menos conhecidas como o (datado e agora "aposentado" desde 2010) JOVIAL .


Perguntas relacionadas ao StackExchange:

haylem
fonte
2
@mattnz: Obrigado. Mas honestamente está um pouco longe do que o OP está pedindo. Tentei fornecer informações e sugestões úteis para fins de documentação, mas quando se trata de detalhes reais da implementação, é mais difícil encontrar dados concretos.
haylem
"E eles são na verdade uma combinação de uma infinidade de sistemas independentes ou interdependentes", você quer dizer que existe um hardware separado para eles?
18712 stjn
2
Sim, eles tendem a ser um hardware criado especificamente. Não há um rack de x86 pcs executando sua aeronave.
Rig
3
@stijn: Bem, sim. Pense desta maneira. São sistemas críticos de controle e monitoramento. Se um deles falhar, isso significa um grande problema, com um F grande e menos educado que isso. Geralmente, é a) construído sob medida para o objetivo de sua missão b) construído para funcionar de forma independente e interface com outros sistemas c) construído para tolerar a falhas de suas próprias falhas E às falhas dos outros sistemas com os quais a interface está relacionada (porque você não quer que o sistema de som do piloto desative os controles do motor, por exemplo). Não é um grande computador executando tudo.
haylem
@stijn: Pense nisso da perspectiva de um avião militar em vez de comercial, se isso ajudar: se uma parte é atingida, você prefere que outras partes possam continuar (eu diria a parte que controla os sistemas de comunicação e segurança pode ser interessante para manter viva ...). Daí também o grande número de botões que você vê nos aviões, para acompanhar o status de diferentes sistemas.
haylem
22

A maioria das aeronaves modernas usa um RTOS (sistema operacional em tempo real) de uso geral, praticamente a mesma coisa que é usada em automação de fábrica, usinas de energia, navios etc.

A Airbus usa alguns, incluindo o INTEGRITY da Northrop-grumman e programa em C / C ++, a Boeing usa o VxWorks entre outros

Martin Beckett
fonte
2
A afirmação "... RTOS de uso geral ..." trivializa o que é necessário para um RTOS transformá-lo em um sistema aviônico, dificilmente é o mesmo RTOS usado no ACME Corps Digital TV Reciever.
mattnz
3
Não, mas VxWorks pode ser usado para qualquer coisa de um Mar Rover para o seu telefone Blackberry
Martin Beckett
Desculpe, é o QNX usado no Blackberry, não no VxWorks. Mas o mesmo princípio se aplica - RTOS COTS de pode ser usado em aeronaves
Martin Beckett
12

Pelo que vale a pena: Para naves espaciais (satélites e interplanetárias) C e C ++ ainda são dominantes (e com uma conformidade estrita com os padrões ISO), geralmente executando o VxWorks. Os laboratórios geralmente aderem ao C ou C ++ com base na familiaridade do desenvolvedor, na confiança na cadeia de ferramentas do compilador e nos padrões internos de codificação. Existem razões convincentes para os dois idiomas para o software de voo em tempo real, mas cada organização tende a se ater a um ou outro. Os instrumentos auxiliares, por outro lado, são comumente programados em Forth, C e em linguagens de script cada vez mais modernas, como Lua.

Bill VB
fonte
3
Normalmente, também é um subconjunto de C ou C ++, como MISRA C ou JSF C ++, até onde eu li.
Coder
10

Também é importante notar que os sistemas de controle geralmente são desenvolvidos usando o design baseado em modelo usando o Simulink. O design é então convertido em código C automaticamente. Os seres humanos ainda leem e validam o código.

Ben Martin
fonte
Meu professor realmente mencionou isso quando falou sobre sistemas críticos em Engenharia de Software.
precisa saber é o seguinte
Acredito que a Airbus usa o SCADE para a especificação funcional do hardware e software em seus sistemas de controle de vôo. A ferramenta pode gerar código C ou Ada.
Dodgy_coder 21/08