- QNX é um sistema operacional de tempo real baseado em microkernel que surgiu no Canadá no início dos anos 1980
- Oferece suporte a diversos tipos de hardware, incluindo IBM PC, além de alta portabilidade, passagem de mensagens distribuída, grande confiabilidade e um ambiente de multitarefa
- Teve grande influência ao ser adotado em computadores educacionais, infraestrutura industrial e sistemas veiculares
- Reforçou a compatibilidade com Unix por meio da conformidade com POSIX e evoluiu com uma GUI leve (Photon) e diversos recursos de rede
- Continuou a elevar estabilidade, desempenho e segurança, acompanhando mudanças recentes de mercado em áreas como automotiva, embarcados e mobilidade
O início do sistema operacional QNX
- Em 1979, Gordon Bell e Dan Dodge, da University of Waterloo, ganharam experiência por meio do projeto de sistema operacional de tempo real chamado Thoth
- O Thoth se destacava por alta portabilidade, passagem síncrona de mensagens e operação independente de hardware
- Após se formarem, Bell e Dodge fundaram a Quantum Software Systems (mais tarde QNX Software Systems) e iniciaram o desenvolvimento de seu próprio SO em um microcomputador protótipo baseado em 6809
QUNIX — o predecessor do QNX
- A primeira versão, QUNIX 0.1, era baseada em microkernel, uma mistura de elementos de CP/M e UNIX, e foi desenvolvida como o primeiro SO de tempo real com microkernel para IBM PC
- Diferentemente do Unix tradicional, introduziu uma estrutura própria de diretórios, como /cmds, /config, /sys, além de um conjunto de comandos próprio, como
help
- Havia limitações iniciais, como suporte a disco rígido (HDD de 5 MB no QUNIX 0.4) e boot baseado em disquete
A transição para QNX e o crescimento
- Por questões de marca registrada da AT&T, o nome foi alterado de QUNIX para QNX em 1982, com o lançamento oficial do QNX 1.0 em 1983
- Kernel: cerca de 10.000 linhas de código em C, com características de microkernel como escalonamento, message passing e tratamento de prioridades
- A maior parte dos serviços (sistema de arquivos, drivers, rede etc.) seguia uma arquitetura de comunicação baseada em mensagens
- Suporte a filas de mensagens com transparência de rede, até 250 tarefas simultâneas e múltiplos usuários
- Era vendido por US$ 650 (em 1983), incluindo compilador C, editor e suporte a rede
- QNX 1.2 (1984): melhorias em pattern matching, programação de shell, suporte ao IBM AT, redução de preço etc.
Entrada no setor educacional: Burroughs ICON
- Foi adotado no projeto de computador educacional padrão do Ministério da Educação de Ontário, levando ao desenvolvimento do computador ICON (80186, 512K RAM, com QNX)
- Boot via servidor de arquivos em rede (ARCNET), sem dispositivo de armazenamento individual; os usuários usavam diretórios pessoais no servidor
- Houve tentativa de criar
lessonware baseado em hipertexto, além da construção de um sistema avançado com vários softwares educacionais, rede, áudio e expansibilidade
Expansão nos mercados industrial e comercial
- Na segunda metade dos anos 1980, refletiu demandas do mercado com suporte a IBM PS/2, LAN, GUI e emulação de DOS (QDOS, RUNDOS)
- Em 1987, o QNX 2 trouxe upgrades como modo protegido do IBM AT, rede BSD, arquivos de 1 TB, 32 portas seriais e uma GUI simples (House)
- A organização também cresceu, com expansão do escritório e mudança para uma nova sede
Adoção de POSIX e a GUI Photon
- QNX 4.0 (1991): conformidade com POSIX, kernel ainda menor (7K, 605 LOC), IPC, rede e melhorias de desempenho
- Em 1994, foi lançado o QNX Photon microGUI: GUI leve baseada em microkernel, transparência de rede e suporte a diversos dispositivos
- O Photon podia escalar de ambientes com recursos limitados até GUIs mais avançadas, além de oferecer API compatível com X Window
- Todo o ambiente de demonstração (rede, navegador web, gerenciamento de arquivos etc.) era leve o suficiente para rodar em um único disquete de 1,44 MB
Sistemas embarcados e distribuídos, e a evolução para o Neutrino
- Até o QNX 4.25 (1997), houve várias melhorias, e o sistema liderou entre os SOs de tempo real em grandes empresas e ambientes industriais, como usinas, medicina, transporte e espaço
- Em 1996, surgiu o QNX Neutrino 1.0: SMP, POSIX aprimorado, amplo suporte a CPUs, adoção de GNU/GCC e melhorias no gerenciamento de processos/threads
- O gerenciamento de memória e o isolamento de processos tornaram-se mais rigorosos, e a adoção do código de rede do NetBSD ampliou sua versatilidade
Parcerias e entrada em mercados
- Em 1998, houve tentativa de parceria com a Amiga (que no fim acabou adotando Linux)
- Neutrino 2.0/2.1 (1999): UPM (mecanismo de proteção em nível de kernel), suporte a múltiplas arquiteturas como PowerPC/MIPS/ARM e maior diversidade no ambiente de desenvolvimento
- Em 1999, em cooperação com a Motorola, entrou no mercado de sistemas de infotainment automotivo (navegação, áudio etc.)
Anos 2000: multimídia, automotivo e mobilidade
- QNX 6.0 (2001): streaming multimídia, gerenciador de pacotes web e integração de ambientes de desenvolvimento para várias CPUs/arquiteturas
- Modernização com o Momentics Tool Suite baseado em Eclipse (2002), clustering de rede, IPv6 etc.
- Após a aquisição pela Harman International em 2004, houve foco nos mercados embarcado e automotivo, com a introdução da plataforma QNX CAR e adoção por grandes fabricantes de veículos
- Comercialização em larga escala: até 2010, estava embarcado em 17 milhões de veículos e mais de 200 modelos
Aquisição pela BlackBerry e evolução em mobilidade/segurança
- Em 2010, a Research in Motion (BlackBerry) adquiriu a QNX, expandindo-a como sistema operacional do BlackBerry PlayBook e do BB10 (=BBX)
- Kernel QNX Safety (certificações ISO/IEC, segurança para sistemas mission-critical), ampliando a presença no mercado embarcado certificado
- Melhorias contínuas no Photon, rede, multimídia, UI/UX etc.
- BBX (2013): UI centrada em gestos, multitarefa e vários frameworks de aplicativos, com hardware de alto desempenho
- Acabou não conseguindo competir por fatores como ecossistema limitado de apps e remoção do teclado, embora sua vida útil tenha sido estendida até 2022
Conclusão
- QNX se destacou por tempo real, design de kernel atômico, multiprocessamento com transparência de rede, escalabilidade e segurança
- Construiu um espaço próprio em compatibilidade com Unix e nos setores industrial, automotivo e de embarcados
- Embora tenha fracassado na disputa com o open source e na entrada em ambientes móveis de massa, mantém reputação de padrão industrial em áreas mission-critical
1 comentários
Comentários do Hacker News
Tenho algumas lembranças divertidas relacionadas a esse OS. Quando eu estava no ensino fundamental, havia computadores ICON na sala de aula, e eu me lembro de competir com meus amigos para girar o trackball o mais rápido possível. Quando trabalhei na BlackBerry, desenvolvi um recurso para fazer o QNX BlackBerry funcionar como dispositivo Bluetooth HID. Isso permitia até controlar um notebook remotamente com o trackpad e o teclado físico, e era realmente útil em apresentações. Mas algum PM mandou limitar esse recurso apenas ao PlayBook, então ele acabou ficando praticamente inútil. Lembro claramente do Dan Dodge argumentando que, por ser um padrão, não se deveria impor restrições. Passei a admirar o Dan Dodge, e não gostaria de trabalhar de novo com esse PM
É surpreendente que o computador ICON fosse baseado nesse OS. Naquela época, ele era muito mais avançado do que os PCs comuns. A exceção era o recurso de conversar entre ICONs, que podia facilmente derrubar outros sistemas ou até a rede inteira
QNX acabou virando o BlackBerry 10. Foi o melhor OS móvel que já usei. É uma pena que tão poucas pessoas tenham usado
Já usei o recurso HID em que você trabalhou e gostei muito
O KDE Connect faz praticamente a mesma coisa, e melhor. É sinceramente excelente
Gostaria que a experiência do ICON pudesse ser preservada em um emulador. Hoje em dia, parece que daria até para emular uma rede ICON inteira no navegador
Eu gostava muito da estética minimalista do QNX Photon. Mantive uma configuração complexa do FVWM só para preservar ao máximo a vibe do Photon. Como referência, aqui vai uma captura de tela do meu desktop Gentoo de 2004: captura de tela do desktop
Eu também peguei sua configuração e a mantive por mais de 15 anos
Ainda parece bonito hoje. Fico curioso se você ainda tem os dotfiles
É muito melhor que meu tema do WindowMaker. Seu tema de FVWM é realmente bonito
O que aparece na captura de tela não é um clone do Winamp?
Gostei muito da ideia do QNX e criei expectativas enormes. Na época, nossa equipe estava migrando um processador óptico de alimentos de DSP para hardware de uso geral (FireWire, 1394). O isolamento de processos do QNX era impressionante, mas o overhead da transferência de dados baseada em mensagens não era tão satisfatório. No fim, pagamos US$ 2 mil para ter suporte a isochronous mode/dma no driver 1394 do Linux e usamos isso com extensões RT. A lição que tirei disso foi a “lei da conservação da feiura”. Em sistemas de software, sempre sobra alguma “feiura” inevitável em algum ponto, e quando você melhora um lado, essa “feiura” se desloca para outro
Acho que a “lei da conservação da feiura” é essencialmente muito parecida com o “princípio do colchão d’água”. Em sistemas com certo grau de complexidade, se você aperta um problema em um lugar, ele inevitavelmente aparece em outro. Se quiser saber mais sobre o princípio do colchão d’água, pode ver aqui
Há uma ideia para acelerar a passagem de mensagens no QNX. É um jeito de enviar mensagens usando o mecanismo de paginação, atualizando apenas a tabela de páginas sem copiar os dados. Claro que ainda existe o overhead de double TSS load em comparação com um macro kernel, mas é rápido. Ainda assim, a elegância tem seu preço. Quando você considera latência, confiabilidade, estabilidade e precisão, esses fatores pesam muito mais do que a simples velocidade de processamento
Hoje em dia, o DSMP (Direct System Memory Protection) é totalmente suportado, e o desempenho do sistema também melhorou muito, então acho que o overhead da passagem de mensagens não é um problema tão grande. Na verdade, vejo mais vantagens nisso
Fico me perguntando se “optical food processor” é uma metáfora ou um dispositivo real que usa imagens para cortar comida
A foto do ICON neste blog é justamente do meu ICON e foi tirada do meu blog (obrigado por citar a fonte). Compartilho meu post sobre computadores ICON no QNX. No primeiro texto também há um link para um vídeo de demonstração do QNX no YouTube
post sobre o ICON
post sobre o LEXICON
Por volta de 2002, acessei meu cable modem via telnet e fiquei impressionado ao ver que ele rodava QNX
Por volta de 1996, recebi um QNX que cabia em um único disquete, com GUI de RTOS e até pilha de rede, e fiquei maravilhado com o tamanho reduzido. Só a instalação do Slackware já exigia vários discos, então o QNX parecia inacreditável
Eu também lembro. Até navegador web vinha naquele pequeno demo. Se quiser experimentar você mesmo, pode fazer isso aqui
Essas versões demo, na verdade, serviam justamente para mostrar recursos. Na época, o QNX era tão impressionante no mercado de live CDs que as pessoas não cansavam de elogiar. Aliás, também havia um Linux com X11 e navegador web rodando a partir de disquete, o que também era realmente incrível link para comentário no HN
Lembro de mexer com desktop Linux por volta de 2000 e levar um susto quando baixei o demo do QNX
Usei o QNX 4 para construir um sistema robótico na universidade. Conseguimos montar um robô hard real-time completo usando placas de CPU 486/Pentium conectadas em rede. Fiquei impressionado que as system calls básicas do QNX (
send/receive/reply) eram implementadas inline no arquivo de cabeçalho com praticamente três linhas de assembly. Com base nessa experiência, aprendi muito implementando recursos parecidos em vxWorks, SunOS, Linux e outros no campo da robóticaartigo sobre o sistema robótico
Se você quiser experimentar QNX no Raspberry Pi, compartilho um texto que pode servir de referência: guia de instalação do QNX no Raspberry Pi
Aqui também está a imagem gratuita do QNX 8.0. Você pode gravá-la diretamente em um Pi 4, e ela também pode ser ajustada para Pi 400 e CM4
imagem gratuita do QNX 8.0 e instruções
Se quiser usar em máquina virtual, dá para baixar imagens antigas no archive.org
imagens antigas do QNX
Criei um servidor de áudio em QNX e até portei funcionalidades de codificação e reprodução de MP3. Quando visitei a sede, o Dan Dodge instruiu a equipe a nos dar todo o suporte possível. Graças a isso, conseguimos lançar a startup com estabilidade, e isso nos ajudou bastante até migrarmos para Linux seis anos depois
Na Quantum, eles diziam respeitar o Unix, mas promoviam o QNX como um design dos anos 1980 que se tornaria o OS dos anos 1990. Na época, não levaram em conta GNU, internet, Microsoft Windows, desenvolvimento por terceiros, a barreira de entrada dos apps baseados em Windows, a web, shareware, BBS, VAR, o movimento do software livre e assim por diante. O mercado de sistemas operacionais é winner-takes-all, e a política de preços de algumas centenas de dólares foi um erro fatal. Talvez fosse inevitável naquela época, mas havia claramente uma falta de percepção do problema. Claro, eles também demoraram a perceber a importância da GUI, e a Photon GUI só apareceu no QNX 4.1 (1994)