Introdução ao QNX: Um RTOS para Aplicações Críticas - Instituto Eldorado
19 de Setembro de 2024

Introdução ao QNX: Um RTOS para Aplicações Críticas

Fabiano

Fabiano Bozzi D'Acunti

Autor

O mundo dos sistemas embarcados para aplicações críticas exige sistemas operacionais robustos, confiáveis e eficientes. É nesse cenário que o QNX se destaca.

Conhecido por sua alta performance, estabilidade e confiabilidade, o QNX é um sistema operacional de tempo real (real time operating system – RTOS) amplamente utilizado em setores críticos como aeroespacial, automotivo, robótica e dispositivos médicos. O objetivo deste artigo é apresentar uma visão geral desse sistema operacional, incluindo suas características principais.

O restante do artigo é organizado como se segue. A seção 1 aborda a história e evolução do QNX, destacando seu crescimento ao longo dos anos e seu uso em diversos setores, incluindo o automotivo, aeroespacial e defesa. A seção 2 discute o que o diferencia dos tradicionais kernels monolíticos e na seção 3 explora as características de sua arquitetura microkernel, mecanismos de comunicação entre processos e sincronização.

O artigo aponta sua aderência aos padrões POSIX na seção 4 e finalmente encerra detalhando as opções de licenciamento disponíveis, incluindo licenças de avaliação e acadêmicas.

Um Legado de Inovação e Confiabilidade

O QNX foi desenvolvido na década de 1980 por Gordon Bell e Dan Dodge na empresa canadense Quantum Software Systems [4]. Em 1982, a empresa mudou seu nome para QNX Software Systems para refletir seu foco no desenvolvimento deste sistema operacional. Em 2004, a Harman International adquiriu a QNX Software Systems, marcando uma importante fase de expansão [5] [11] [12].

Em 2010, a BlackBerry, então conhecida como Research In Motion (RIM), comprou a QNX Software Systems. Desde então, a BlackBerry integrou o QNX em seus dispositivos móveis e expandiu seu uso, especialmente no setor automotivo [3] [10].

No setor aeroespacial e de defesa, por exemplo, é utilizado em sistemas críticos e que exigem alta disponibilidade como os sistemas de controle de voo e navegação [16].

A Federal Aviation Administration (FAA) já utilizou QNX para controle de tráfego aéreo [1].

Em 2005, o QNX foi utilizado no Laser Camera System (LCS) acoplado ao ônibus espacial Discovery na missão Return to Flight da NASA para inspecionar o exterior do ônibus espacial durante o voo de 13 dias para garantir a segurança desta missão, a primeira desde o desastre do Columbia em 2003 [17] [18].

No automotivo, o QNX é usado em sistemas de infoentretenimento (infotainment), telemática, sistemas avançados de assistência ao motorista e controles do motor [2].

Estes sistemas aparecem em marcas como Audi, BMW, Ford, GM, Honda, Hyundai, Jaguar Land Rover, KIA, Maserati, Mercedes-Benz, Porsche, Toyota, Volkswagen e Mitsubishi [14]

Por que o QNX é diferente?

Uma das principais características que diferenciam o QNX da maior parte dos outros sistemas operacionais é sua arquitetura de microkernel [6] [7] [13] [14].

A essência da arquitetura microkernel do QNX é manter apenas as funcionalidades essenciais no núcleo do sistema operacional, como gerenciamento de memória, escalonamento de processos e comunicação entre processos (interprocess comunication – IPC).

Isto contrasta com os kernels monolíticos tradicionais, onde todas as funcionalidades do sistema operacional são integradas em um único núcleo [15].

Essa abordagem minimalista e modular, onde cada processo executa em um espaço de memória completamente separado dos demais, proporciona diversas vantagens.

Primeiramente, ela aumenta a segurança, pois uma falha em um processo, serviço ou driver de dispositivo não compromete diretamente os demais, muito menos o núcleo que permanece em pleno funcionamento.

Em segundo lugar, ela garante a escalabilidade do sistema, uma vez que novos componentes podem ser adicionados ou removidos a qualquer momento sem afetar nenhum outro ou o núcleo.

A Arquitetura Microkernel do QNX

O objetivo na concepção de um sistema operacional baseado em micronúcleo não é meramente reduzir seu tamanho, mas sim torná-lo mais modular [9].

No QNX RTOS, o microkernel atua em conjunto com o gerenciador de processos (Process Manager) em um único módulo chamado procnto.

Este é o único processo que executa em “kernel space”, todos os demais componentes e serviços executam em “user space”, incluindo os device drivers, protocolos de rede, deamons e as aplicações de usuário.

Nesta arquitetura, cada processo opera em um espaço de memória completamente isolado dos outros e a comunicação entre eles ocorre graças à vários mecanismos de IPC, com ênfase na passagem de mensagens.

No QNX uma mensagem é simplesmente um pacote de bytes transmitido de um processo para outro, sem que o sistema operacional atribua qualquer significado especial ao seu conteúdo.

A passagem de mensagens não apenas permite que os processos troquem dados entre si, mas também fornece um meio de sincronizar a execução entre eles, pois à medida que os processos enviam, recebem e respondem às mensagens, eles passam por diferentes estados que afetam quando e por quanto tempo eles podem ser executados.

A figura a seguir ilustra a alteração dos estados de uma thread em um processo cliente à medida que troca mensagens com um processo servidor.

Seu núcleo dedica-se exclusivamente a algumas funcionalidades fundamentais para a criação e manipulação de threads, envio de sinais, encaminhamento de mensagens, sincronização, timers, gestão de nomes de caminho e agendamento de execução, seguindo diversas políticas (FIFO, Round-Robin e Sporadic).

Aderência aos padrões POSIX

O principal objetivo do QNX, ao oferecer uma API POSIX padrão, é proporcionar uma interface robusta e escalável para uma ampla gama de sistemas atendendo diversas necessidades.

Em primeiro lugar, garante uma interface comum para funções essenciais como gerenciamento de threads, semáforos, mutexes e sinais. Isso possibilita que os desenvolvedores portem seu código de maneira fácil e eficiente entre diferentes plataformas, promovendo a reusabilidade, economizando tempo e recursos e permitindo que o software seja rapidamente adaptado a novos contextos sem necessidade de reescrita significativa.

Licenciamento

Embora o QNX não seja um sistema de código aberto a Blackberry oferece licenças para avaliação e uso acadêmico.

A licença de avaliação, válida por 30 dias, é destinada a projetos comerciais e requer a criação de uma conta myQNX em https://www.qnx.com/account/login.html

Por outro lado, as licenças acadêmicas são gratuitas e concedidas a instituições elegíveis e seus docentes, apoiando a pesquisa, o desenvolvimento e a educação continuada. Essas licenças não expiram, proporcionando um recurso valioso para a comunidade acadêmica.

Conclusão

Com sua arquitetura de microkernel e aderência aos padrões POSIX, o QNX RTOS estabelece-se como uma solução robusta e eficiente para sistemas críticos que exigem estabilidade, alta disponibilidade e segurança.

Em particular, sua adesão aos padrões POSIX facilita a portabilidade de código e a reusabilidade, além de conferir padronização e conformidade, beneficiando o processo de desenvolvimento.

Apesar de ter sido criado na década de 1980, o QNX ainda tem sido amplamente adotado em setores como o aeroespacial, automotivo, médico, robótica e industrial.

O QNX não é de código aberto, no entanto, oferece licenças de avaliação e acadêmicas, ampliando seu alcance e suporte à pesquisa e desenvolvimento.

Referências

1. Bylinsky, G. (2003, 17 de março). Heroes of Manufacturing. *FORTUNE Magazine*. http://money.cnn.com/magazines/fortune/fortune_archive/2003/03/17/339245/index.htm

2. CrackBerry. (s.d.). BlackBerry QNX software is now embedded in more than 150 million vehicles! https://www.blackberry.com/us/en/success-stories/jaguar

3. CrackBerry. (s.d.). RIM Acquires QNX Software Unit from Harman International – RIM Wants a Piece of the Automotive Infotainment Market? https://crackberry.com/rim-acquires-qnx-software-unit-harman-international-rim-wants-piece-automotive-infotainment-market

4. Gordon Bell (QNX). (s.d.). https://en-academic.com/dic.nsf/enwiki/1365668

5. Lakrintis, A. (s.d.). BlackBerry QNX: A Retrospective. https://www.linkedin.com/pulse/blackberry-qnx-retrospective-angelos-lakrintis/

6. Matt Rickard – Tanenbaum–Torvalds Debates, Part 1. (s.d.). https://matt-rickard.com/tanenbaum-torvalds-debates-part-1

7. Microkernel.info. (s.d.). http://www.microkernel.info/

8. QNX. (s.d.). About BlackBerry QNX. https://blackberry.qnx.com/en/company

9. QNX. (s.d.). Microkernel architecture. https://www.qnx.com/developers/docs/8.0/com.qnx.doc.neutrino.sys_arch/topic/intro_MICROKERNELARCH.html

10. QNX. (s.d.). QNX Neutrino RTOS 7.1. https://blackberry.qnx.com/en/products/foundation-software/qnx-rtos

11. QNX. (s.d.). QNX News Releases – QNX Joins Harman International Family. https://www.qnx.com/news/pr_1121_1.html

12. QNX. (s.d.). QNX News Releases – Research In Motion to Acquire QNX Software Systems from Harman International. https://www.qnx.com/news/pr_4114_1.html

13. Tanenbaum, A. S. (s.d.). Tanenbaum-Torvalds Debate Part II. *Department of Computer Science*. https://www.cs.vu.nl/~ast/reliable-os/

14. Tanenbaum, A. (1992). LINUX is obsolete. *Google Groups*. https://groups.google.com/g/comp.os.minix/c/wlhw16QWltI?pli=1

15. Wikipedia. (s.d.). Microkernel. https://en.wikipedia.org/wiki/Microkernel

16. Networked Embedded Systems in the Aerospace and Defense Industry. (2014, 4 de junho). https://www.dspace.com/en/inc/home/news/hil_inc_1406.cfm

17. QNX Gets on Board NASA’s Return to Flight Mission. (2005, 13 de julho). https://www.qnx.com/news/pr_1446_4.html?lang=en

18. Space Shuttle uses QNX software for camera. (2005, 1 de setembro). https://www.militaryaerospace.com/computers/article/16707929/space-shuttle-uses-qnx-software-for-camera

Cadastre-se em nossa newsletter