Os sistemas aviônicos críticos para a segurança rodam Linux?

23

Eu ouvi coisas diversas sobre isso. Algumas pessoas afirmam que executar o Linux em sistemas aviônicos críticos para a segurança é uma péssima idéia. Por outro lado, algumas pessoas (que não estão familiarizadas com aviônicos) disseram que isso não é verdade.

Então, eu gostaria de saber, as aeronaves atualmente funcionam com uma distribuição Linux? É uma boa idéia incorporar o Linux em aeronaves? Se não, por que?

por traducerad 04.04.2017 / 02:39

5 respostas

Nenhum dos sistemas aviônicos em que trabalhei utilizou Linux ou qualquer sistema operacional do tipo consumidor. Existem alguns problemas principais.

Primeiro é o prático. A maioria dos aviônicos críticos para a segurança envolve um loop de controle e, portanto, tem um requisito em tempo real. Isso significa que não é apenas importante executar um processo e obter uma resposta, você precisa obter a resposta dentro de uma restrição de tempo bem controlada. Todo processo de software crítico em uma aeronave está programado para garantir que você tenha um loop de controle estável. Para fazer isso, você precisa de um sistema operacional em tempo real e o Linux não é um.

O segundo é a necessidade de certificação. O software usado em uma aeronave deve ser desenvolvido para atender ao nível de garantia de desenvolvimento (DAL) apropriado para o nível de risco associado. Os sistemas críticos de segurança são necessários para atender ao nível DAL "A". Qualquer sistema operacional usado deve atender ao mesmo DAL da função executada nele. Esses requisitos são definidos no RTCA DO-178C. O Linux não foi desenvolvido para esse padrão. Existem apenas algumas plataformas de desenvolvimento de SO / software capazes de serem certificadas. Green Hills, Wind River e LynxOS são os poucos sistemas com os quais estou familiarizado que atendem aos requisitos.

Há também uma outra restrição: a certificação requer controle de versão muito rigoroso. A aviônica existe no campo por muitos anos e quaisquer alterações nela também precisam ser certificadas. Geralmente, não há motivo válido para atualizar o sistema operacional em uma unidade antiga e, em muitos casos, você não poderia fazer isso sem atualizar o hardware (que é uma despesa maior que ninguém deseja). Portanto, ao atualizar uma unidade antiga, tenho que criar o 'novo' software para rodar na versão do sistema operacional existente no produto. Essa poderia ser uma plataforma de anos (ou mais antiga) da 15 ou 20. Um sistema operacional em rápida evolução, como o Linux, teria um impacto negativo no suporte a longo prazo do produto.

04.04.2017 / 15:01

A resposta curta é que nenhum sistema aviônico de segurança crítica que eu saiba usar o Linux, e os sistemas de maior criticidade geralmente não usam um sistema operacional comercial. No entanto, o Linux é usado em outros aplicativos críticos de segurança, como o Space X Falcon 9 e aplicativos médicos. É difícil fazer uma explicação mais detalhada sem se aprofundar demais, pois a pergunta é como perguntar "as estruturas modernas são feitas com nanomateriais?", Onde uma explicação detalhada teria que cobrir os prós e os contras do material, lugares onde seu uso faz mais e menos sentido, diferenças nos fabricantes e uma visão geral do que é usado, etc. Tentarei abordar todos esses pontos de forma sucinta com links para mais informações.

De acordo com a este relatório da FAA da 2001, alguns dos principais sistemas operacionais para aviônicos certificados eram VRTX, LynxOS, PSOS, VxWorks e OSE da Enea, embora os aviônicos não críticos às vezes usem outros sistemas como o Windows NT. (Sim, o LynxOS é baseado no Unix e o Linux é considerado "semelhante ao Unix", mas há muitas diferenças entre os dois, assim como o Linux não é semelhante ao Mac OS X baseado em BSD). No entanto, os sistemas mais críticos não usam um sistema operacional comercial. Eles observam "Com as evidências disponíveis hoje, em geral, pode-se afirmar que os produtos COTS normalmente não atendem aos requisitos do software de criticidade de nível A." Para os leigos, isso significa que a maioria dos aviônicos desenvolvidos com software de terceiros, do VxWorks ao Linux, não estavam sendo testados e analisados ​​o suficiente para serem colocados em algo crítico, como um sistema de pouso, unidade TCAS ou unidade crítica de exibição. Isso provavelmente mudou nos anos 10 + desde que o relatório foi escrito, no entanto. Aqui está um mais recente artigo sobre o uso do sistema operacional em tempo real em aviônicos.

O que significam RTOS e COTS?

Um conceito importante aqui é um sistema operacional em tempo realou RTOS. Um RTOS em poucas palavras fornece garantias de que o software não ficará sem tempo de computação programado, as mensagens entre partes do software serão passadas em um curto período de tempo, a memória não se esgotará e outras tarefas importantes serão garantidas em vez de funcionar bem em condições normais e depois quebrando em condições incomuns. Os sistemas operacionais normais não podem dar tais garantias. Essas garantias, ou substitutos aceitáveis, são necessárias para a certificação da maioria dos aviônicos.

Outro conceito importante é a diferença entre sistemas internos e comerciais (COTS). Os sistemas comerciais prontos para uso estão disponíveis ao público e não são muito personalizados para cada fabricante. Este artigo fornece um bom resumo dos prós e contras dos sistemas operacionais comerciais e internos. Muitos aviônicos de alta criticidade ainda possuem o software principal desenvolvido internamente devido às vantagens envolvidas.

O Linux atende aos requisitos de certificação?

Sim, o Linux não é "certificado pela FAA", mas, na verdade, nenhum RTOS é "certificado pela FAA" ou "atende ao DO-178C". O DO-178C fornece objetivos que os engenheiros de sistemas aviônicos devem cumprir para certificar todo o seu software aviônico (os objetivos abrangem auditorias, testes, análise de segurança e redação de requisitos, entre outras coisas). Portanto, o melhor que o fornecedor do sistema operacional pode fazer é fornecer o software "DO-178C ready" ou seguir as diretrizes do DO-178C. Observe que o DO-178C reconhece vários níveis de segurança; portanto, o que é certificável no DO-178C para um sistema de manutenção pode não ser certificável no DO-178C para uma unidade de exibição crítica. O problema com o Linux não é que o Linux não é "certificado pelo DO-178C", é difícil certificar-se devido aos desafios mencionados abaixo. É possível certificar um sistema usando Linux, mas isso pode ser proibitivamente difícil devido às análises extras, medidas de segurança e documentação que seriam necessárias, especialmente para os aviônicos mais críticos. Alguns desses desafios e métodos alternativos de conformidade estão descritos em este relatório da FAA.

Vantagens e desvantagens do Linux

Há vantagens em usar o Linux, que é parcialmente compartilhado com outros sistemas comerciais. Mais funcionários já terão experiência com Linux, e o sistema operacional foi projetado com mais experiência e tempo do que a maioria das organizações dispõe. Os sistemas comerciais também têm um preço de etiqueta muito mais baixo do que o software interno. Os sistemas comerciais também são mais adaptáveis ​​e permitem alterações no hardware e espaço para crescimento futuro sem voltar à prancheta. As ferramentas para trabalhar com o software são mais desenvolvidas e também podem ter um histórico de serviço mais longo, que fornece confiança no software.

Aqui estão alguns dos problemas que o Linux enfrenta em um sistema aviônico ao competir com um RTOS, de este relatório da FAA:

  • particionamento: se dois programas devem estar em execução de forma independente, é preciso haver evidências de que um programa não pode interferir com outro através da estrutura de memória compartilhada, caches, suporte e firmware da placa, erros, interrupções etc.

  • pior caso de execução: na computação de mesa, tudo bem se eu atolar meu PC com muitas solicitações ou condições incomuns ao mesmo tempo e o sistema desacelera ou pula algumas etapas do programa. Em aviônicos, isso não é aceitável por razões óbvias. O fornecedor precisaria verificar isso por meio de modelos de CPU, memória etc. ou testes rigorosos de laboratório e análise de tempo. Ambos são mais difíceis, quanto mais complexo é o seu hardware e software.

  • Cobertura do MCDC: Os testes nos aviônicos mais críticos (Nível A) requerem a execução de linhas de código e condições de decisão suficientes para atingir o padrão de cobertura de código do MCDC, que fica entre "executar todas as linhas de código" e testes exaustivos de todas as combinações de condições. Alguns sistemas operacionais como o Linux podem ser extremamente difíceis de testar completamente o suficiente para atender a esse padrão.
  • documentação: análise rigorosa e teste de estresse exigem muita documentação sobre o funcionamento interno do sistema operacional
  • considerações de segurança: O Linux, por design, tem mais problemas de segurança do que um aplicativo interno enxuto. Essas questões de segurança estão se tornando cada vez mais importantes, especialmente nas forças armadas.
  • código morto e inacessível: Desabilitar cuidadosamente as muitas funções não utilizadas do Linux e garantir que elas não interfiram no seu software geralmente é necessário para a certificação

Outras indústrias críticas para a segurança

E quanto aos setores críticos de segurança similares? O Space X Falcon usa Linux em alguns de seus computadores de vôo (fontes) Baseado em Nesta entrevista, O Space X parece priorizar o crescimento futuro, a disponibilidade, os curtos tempos de ciclo e a experiência, em detrimento da simplicidade e robustez do desenvolvimento interno nessa área. Observe que os computadores de controle de vôo no Space X Falcon não são diretamente análogos a um LRU na aviônica moderna típica; portanto, provavelmente será necessário um trabalho extra ou uma arquitetura incomum para que o Linux funcione em aplicativos aviônicos típicos.

O Linux também é usado em muitas aplicações médicas críticas à segurança, mas não sem problemas semelhantes aos enfrentados na aviação. Eu recomendo a leitura de Wind River "Escolhendo o Linux para dispositivos médicos"ou Este artigo sobre as desvantagens do Linux em aplicativos médicos críticos para a segurança.

Suponho que você esteja falando das principais aviônicas, como orientação de voo, piloto automático, fly-by-wire ou monitores. Outros sistemas de avião podem ser considerados críticos para a segurança, mas não são exemplos típicos de dispositivos críticos para a segurança, como malas de voo eletrônicas certificadas, soluções de conectividade e software de manutenção. Às vezes, eles são mais adequados para um aplicativo Linux devido à alta complexidade e considerações de segurança menos rigorosas.

Observe que eu não sou especialista neste campo e meu conselho não substitua o conselho de um especialista em certificação.

09.04.2017 / 00:36

Parece que os pilotos agora pelo menos algumas vezes use comprimidos para listas de verificação.

Se esses tablets forem dispositivos Android (maioria deles), eles executam o kernel do Linux. O Android usa menos da pilha padrão do Linux, mas ainda usa o kernel do Linux. As listas de verificação são críticas para a segurança, eu acho. Os tablets Apple e Windows usam kernels diferentes, não o Linux.

Há muitos aplicativos de lista de verificação para dispositivos Android. Presumo que alguém as use.

Kernel é o núcleo do sistema operacional de um computador que mantém controle completo sobre todas as outras partes. Como fiação para um avião.

11.03.2018 / 20:48

O Linux é usado para aplicativos críticos de segurança? Não. Sim. Possivelmente. Tenha paciência comigo ...

insira a descrição da imagem aqui

O USS Umwalt usa Linux para seus extensos requisitos de dados e LynxOS para aplicativos embutidos em tempo real, descritos em Este artigo.

Laptop padrão O Linux é um sistema operacional para o espaço do usuário: espera até que o usuário clica em um mouse, pressiona uma tecla ou gera uma saída e, em seguida, executa uma ação. Pode ou não haver muitos programas abertos. A entrada do usuário é um evento estatístico no que diz respeito ao sistema operacional: pode ou não ocorrer no próximo minuto.

Compare isso com um loop de controle digital. Ele roda em um processador e usa memória, apenas hardware de computador padrão. Mas eles diferem do software para desktop:

  • São incorporado;
  • Tenha um conjunto de tarefas predefinidas;
  • Tenha restrições de tempo estritas;
  • Executar em um loop sem fim. No final do programa, ele volta ao início e repassa a rotina novamente, esse seria um quadro de iteração.

O software precisa ler entradas e gerar saídas, a cada iteração, e um quadro de iteração é executado por um período fixo de tempo. Um sistema rígido em tempo real é um sistema em que as respostas programadas devem ser determinísticas: o que quer que ele faça deve ser concluído em uma iteração de software. Se o loop de controle for executado no 100 Hz, um ciclo de iteração tomará o 10 mseg, e o hardware precisará ser rápido o suficiente para garantir que todo o processo possa terminar dentro do tempo, sempre.

Esses loops de controle geralmente não são enormes e geralmente não têm várias janelas abertas entre o 1 e o 100. Programas pequenos e rápidos e um número limitado de janelas, é para isso que são criadas as SOs para programas críticos de segurança e loops em tempo real. O que é ótimo, antigamente não costumava haver um O / S para isso e o código tinha que ser escrito no assembler ou pior. As chamadas de E / S eram específicas de hardware e, portanto, não eram portáteis de um chipset para outro.

É aqui que entram os O / Ses em tempo real, como VxWorks, LynxOS e alguns outros. Eles são baseados em Unix, O / Ses compatíveis com POSIX. A camada de hardware é invisível para o programador, que possui um conjunto de ferramentas de desenvolvimento para usar linguagens de computador de alto nível com chamadas de E / S e rotinas de tempo padrão. Eles são escaláveis: você pode começar com um sistema operacional que apenas inicializa e, em seguida, executa imediatamente o seu binário compilado em uma taxa definida na interface do timer. Ou você pode reconfigurar o kernel e incluir algumas interrupções do usuário que examinam os teclados ou os dados do RS-232 chegando, tudo até o programador, que também possui um extenso kit de ferramentas para sincronização e E / S.

O VxWorks pode ser caro (mas é bem suportado), e agora existem algumas alternativas de código aberto disponíveis com base no kernel do Linux, como Xenomai, RTLinuxe Xilinx. Algumas delas tentam ter todos os serviços disponíveis para aplicativos da área de trabalho e possuem apenas um timer de interrupção que faz o melhor para manter a tarefa em execução uniformemente, mesmo se um processador de texto iniciar uma verificação ortográfica. Outros são difíceis de escalar, como o VxWorks, mas são de código aberto e o suporte pode ser um desafio. Até onde eu sei, eles ainda não foram a Marte, o VxWorks.

Pode ser usado para aviônicos críticos de segurança: sim, se escalável em tempo real e testado de acordo com os padrões aplicáveis ​​a todos os aviônicos. Até agora, ainda não há nada a bordo de uma aeronave, mas isso pode ser apenas uma questão de tempo.

30.08.2017 / 10:37

Realmente não é necessário ter um sistema operacional comercial em aviônicos.

O software Avionics tende a ser projetado para hardware específico - não há plataforma de hardware genérica feita no mercado de massa por muitos fornecedores.

Aviônicos não interagem com muitos outros sistemas ou hardware.

O Avionics geralmente é executado como um aplicativo, portanto, não é necessário compartilhar o tempo ou, no caso do RTOS, um cronograma de ciclo de relógio garantido.

Esses são os principais objetivos de um sistema operacional, em vez de um simples carregador de inicialização que carrega e inicia um aplicativo - o sistema operacional facilita várias plataformas de hardware, vários drivers e utilitários para armazenamento em disco / flash, compartilhamento de tempo com outros aplicativos e dispositivos periféricos como rede. O que a aviônica precisa fazer: interagir com a tela, sensores externos e botões de controle - não precisa envolver um sistema operacional.

É bom ter um sistema operacional incorporado para um dispositivo dedicado, especialmente se o aplicativo incorporado for publicar serviços da Web para acesso e controle externos. No entanto, é mais lento para carregar (pode ser um fator para aviônicos) e consome mais recursos do que um aplicativo dedicado que é acionado por um carregador de bootstrap.

Devido ao extenso ciclo de certificação, os aviônicos não tendem a executar o melhor e o mais recente, nem possuem um curto ciclo de atualização no hardware.

31.08.2017 / 17:28