A primeira coisa que vem à nossa mente quando ouvimos a palavra sistema operacional é o programa de software usado em nossos computadores e laptops, como Microsoft Windows, Linux, Ubuntu, etc, e Android para smartphones. De fato, a maioria dos dispositivos eletrônicos digitais executa algum tipo de sistema operacional dentro do qual é desenvolvido pelo programa de microcontrolador. A evolução do microcontrolador abriu caminho para inúmeras aplicações de sistemas embarcados que desempenham um papel crucial no nosso dia-a-dia, de uma maneira ou de outra.
Um desses sistemas que ouvimos falar ultimamente é o sistema operacional em tempo real, ou simplesmente chamado de "RTOS". O RTOS é um sistema operacional usado para aplicativos em tempo real, ou seja, os aplicativos que processam dados conforme entram em uma restrição de tempo especificada. QNX e VxWorks são dois sistemas operacionais diferentes em tempo real, amplamente utilizados em ambientes industriais e acadêmicos. O objetivo do artigo é fazer uma comparação imparcial entre os dois.
O QNX é um sistema operacional comercial em tempo real desenvolvido inicialmente para sistemas embarcados e foi originalmente desenvolvido pela Quantum Software Systems no início dos anos 80. A empresa sediada no Canadá mais tarde foi renomeada para QNX Software Systems e, finalmente, adquirida pela Research in Motion (RIM) para uso como base para o BlackBerry 10 OS e o popular BlackBerry Playbook. A versão do sistema operacional usada no Playbook era o QNX Neutrino, construído sobre uma verdadeira arquitetura de microkernel. O QNX foi o primeiro sistema operacional baseado em microkernel comercialmente bem sucedido. O QNX é basicamente um sistema operacional semelhante ao Unix, baseado em um verdadeiro design de microkernel e arquitetura modular, onde os elementos do sistema operacional são executados como tarefas, conhecidas como Gerenciadores de Recursos, que permitiriam aos desenvolvedores desativar qualquer funcionalidade que acham que não é. necessário mais no sistema específico. A melhor coisa do QNX é que ele se baseia na comunicação entre processos baseada em mensagens.
O VxWorks é um sistema operacional em tempo real projetado especificamente para computação distribuída para aplicativos em tempo real com sistemas embarcados. É um sistema operacional proprietário em tempo real desenvolvido pela Wind River Systems, uma empresa da Califórnia especializada no desenvolvimento de software embarcado para sistemas conectados inteligentes. O VxWorks é o RTOS líder do setor que constrói sistemas e dispositivos embarcados há mais de três décadas. É um núcleo monolítico com extensas comunicações entre processos e funções de sincronização. Cada compilação do VxWorks é única devido à sua arquitetura, na qual todo o sistema operacional trabalha no espaço do kernel, o que significa que todos os serviços do kernel e os serviços do usuário existem no mesmo espaço de endereço, o que agiliza a execução do sistema operacional. Ele fornece funções de depuração, monitoramento de desempenho, gerenciamento de memória, agendamento de CPU e outras funções do sistema operacional através de chamadas do sistema.
Ambos são sistemas operacionais em tempo real exclusivos, projetados especificamente para aplicativos em tempo real com sistemas incorporados, cada um com cargas de componentes diferentes com diferentes funcionalidades. Ambos os sistemas são amplamente utilizados em grandes ambientes industriais e acadêmicos e estão no mercado há décadas. O QNX é um RTOS comercial desenvolvido pela Quantum Software Systems, sediada no Canadá, no início dos anos 80, que foi posteriormente adquirida pela RIM em 2010. O VxWorks é um software proprietário desenvolvido pela Wind River Systems, sediada na Califórnia, líder do setor especializada na construção de software embarcado para produtos e sistemas conectados inteligentes.
Ambos os sistemas operacionais usam o kernel em tempo real para aplicativos de missão crítica que processam dados, pois isso significa que o sistema está sujeito a uma restrição em tempo real que garante resposta dentro de restrições de tempo predefinidas, também conhecidas como 'prazos'. A principal diferença está na arquitetura - enquanto o QNX é baseado em uma arquitetura de transmissão de mensagens, o VxWorks se presta à arquitetura de memória compartilhada. A passagem de mensagens é fundamental para o design do kernel, que permite ao sistema transmitir informações de uma tarefa para outra ou para várias outras no sistema. Arquitetura de memória compartilhada refere-se a um sistema que possui seu próprio espaço de endereço privado para memórias fisicamente distribuídas.
Uma das principais diferenças entre os dois sistemas operacionais em tempo real é que o QNX é um sistema operacional baseado em microkernel, enquanto o VxWorks é um kernel monolítico. Um microkernel é como um pequeno sistema operacional que utiliza chamadas do sistema para gerenciar serviços básicos como gerenciamento de espaço de endereço, gerenciamento de encadeamentos e comunicações entre processos. Refere-se a um sistema que requer um conjunto limitado de primitivas e dependência mínima de software para implementar um sistema operacional. Um kernel monolítico, por outro lado, gerencia todos os serviços básicos e serviços definidos pelo usuário, incluindo comunicações entre processos em um espaço protegido do kernel. Como um núcleo monolítico, o VxWorks é independente.
Cada encadeamento ou processo tem sua própria prioridade no QNX. No QNX, todos os processos são executados com base na prioridade de preferência, o que significa que o processo com a maior prioridade obtém acesso à CPU primeiro e as prioridades variam de 0 a 31. O agendamento ocorre em tempo real e cada segmento herda a prioridade do pai. por padrão. Quando dois threads compartilham a mesma prioridade, outros métodos de agendamento são usados pelo QNX, como FIFO, Round-Robin e Sporadic Scheduling. O VxWorks, por outro lado, usa apenas dois tipos de algoritmos de agendamento, o agendamento baseado em prioridade preventiva e o Round-Robin. Juntos, eles fornecem um maior grau de controle aos usuários para agendamento eficiente.
Ambos são sistemas operacionais em tempo real baseados em kernel destinados a aplicativos em tempo real que exigem que as tarefas sejam processadas e concluídas à medida que entram em uma restrição de tempo predefinida, também conhecidas como prazos. Ambos estão no negócio há mais de 25 anos e são especializados no desenvolvimento de produtos e sistemas embarcados, mas é aí que todas as semelhanças terminam. O QNX é um sistema operacional em tempo real baseado em microkernel, bastante fascinante por si só, graças à sua arquitetura baseada em passagem de mensagens, ideal para criar sistemas distribuídos confiáveis. O VxWorks é um núcleo monolítico baseado na arquitetura de memória compartilhada, o que o torna ideal para grandes ambientes industriais, como sistemas automotivos, aviônicos, eletrônicos de consumo, etc..