QNX

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
QNX
Desenvolvedor: QNX Developed
Modelo: Código fechado
Família do SO: UNIX
Núcleo: Micronúcleo
Licença: Proprietária
Desenvolvimento: Corrente
Website QNX Developed
Portal Tecnologias de informação

Índice

[editar] Introdução

A QNX Software Sistems foi fundada em 1980 por Gordon Bell e Dan Dodge, eles desenvolvem, mantêm e comercializam o Sistema Operacional de tempo real QNX Neutrino RTOS. A companhia se concentrou no desenvolvimento de sistemas de tempo real, tecnologia de multitarefa em sistemas operacionais para permitir que hardware do padrão PC seja utilizado em fábricas, hospitais, laboratórios e mais recentemente em eletrônica de consumo - onde se quer que desempenho e confiabilidade sejam supremas. Com o QNX estabelecido como o principal SO de Tempo real para a plataforma x86, a companhia desfruta crescimento que excede a média das outras indústrias. Mais de 40 sócios de distribuição apóiam QNX em quase 100 países em todo o mundo.

Produtos incluem o SO de tempo real QNX (inclusive POSIX e APIs Win32), a microGUI Photon (características completas de sistema de janelas em menos que 400k) e a Aplicação Internet Toolkit (tudo que você precisa para construir para seu próprio dispositivo de Internet. Outras ferramentas de desenvolvimento incluem o Watcom, o compilador de C/C++ e o Construtor de Aplicação para o Photon (PhAB), uma ferramenta de projeto visual geradora de código. No mercado de tempo real para x86, o QNX tem duas vezes mais mercado que o seu adversário mais próximo. Foi estabelecida uma base firme em muitos mercados verticais, entre eles automação industrial, telecomunicações, pontos de venda e instrumentação médica. Mais recentemente, foram oferecidos produtos expandidos para apoiar eletrônica de consumidor e tecnologia automomotiva (navegação, controle de máquinas, etc).

Toda vez que é desenvolvido um produto novo, a QNX Software Systems tem duas metas em mente: reduzir o tempo para comercializar novos softwares e minimizar seus custos. Esta estratégia resultou em uma história de tecnologia inovadora, inclusive a microGUI Photon e o micronúcleo Neutrino. Também trabalham muito perto com AMD, Intel, National Semicondutor e um servidor de outros líderes de mercado. Estas relações asseguram o mais recente hardware e tecnologias de software disponíveis.

O QNX é um sistema operacional utilizado há muito tempo por profissionais que necessitam de equipamentos com estabilidade total na realização das tarefas. Baseado na plataforma UNIX, este sistema é seguro e estável, tornado-se uma excelente alternativa para profissionais que trabalham com robustos aplicativos da área gráfica (modelagem 3D, tratamento de imagens, edição de vídeos).O sistema operacional QNX se destaca, dentre as diversas variantes do sistema UNIX, pelo seu desempenho, simplicidade de instalação, reduzido tempo de inicialização, simplicidade de comunicação entre tarefas e robustez. A última propriedade, aliás, é comum à maioria dos sistemas UNIX.

O desenvolvimento de aplicativos sob QNX é realizado, na maioria das vezes, através do compilador Watcom C ou C++. Existe, entretanto, uma versão do compilador GNU C/C++, para o QNX. O visual do QNX é bem parecido com o do Linux, graças à PHOTON, uma bela e prática interface gráfica. As atuais versões do QNX já vem com diversos aplicativos disponíveis, entre eles, o que mais se destaca é o navegador para Internet "Voyager". Esse Navegador suporta a maioria dos recursos disponíveis na Web (áudio e vídeo por Streaming, animações em Flash, etc.). O gerenciamento de memória é parecido com o do MacOS, e isso traz uma grande melhoria e rapidez na execução de aplicativos. A instalação do QNX é bem simples, e pode ser feita na própria partição do Windows. Na instalação, não são criadas partições adicionais, tudo é copiado para uma única pasta, que tem o tamanho especificado pelo usuário. Após a transferência de arquivos, é inserida uma linha de comando no arquivo "Config.sys", que cria automaticamente um menu de inicialização, permitindo que você escolha entre iniciar o QNX ou seu sistema operacional padrão. Durante o processo de inicialização do QNX, os periféricos do computador são reconhecidos, o que acaba com a dor de cabeça com configurações de hardware.

[editar] Arquitetura do Núcleo (Kernel)

O Kernel do QNX é de um tipo chamado microkernel. Muitos fabricantes dizem que seus sistemas operacionais possuem microkernel - ou até nanokernel. Muitas vezes não passa de marketing. Um microkernel não é simplesmente um kernel pequeno. Ao contrário dos kernels tradicionais, a idéia é oferecer o mínimo de serviços necessários para que o sistema funcione. Os outros serviços são providos através de outros processos opcionais. No QNX o kernel chamado de "procnto".

A idéia não é simplesmente fazer um kernel pequeno, mas sim dar modularidade a ele, o que consequentemente diminuirá o tamanho. Ele é utilizado para juntar os módulos do sistema operacional. Muitos desenvolvedores acreditam que - devido à alta performance - ele foi desenvolvido em Assembly, quando na verdade foi desenvolvido na linguagem C. A alta performance está relacionada às sucessivas redefinições de algoritmos e estruturas de dados. Desde sistemas embarcados com memória extremamente limitada à sistemas com gigabytes de memória rodam o QNX.

A maioria dos serviços de tempo real e threads são implementados diretamente no microkernel, o que dispensa módulos adicionais para o acesso a esses serviços. Além disso, vários outros serviços são suportados, como semáforos e mutexes. Operações que exigem mais recursos, são carregadas em processos externos. Esse modelo derruba o mito de que sistemas monolíticos possuem um tempo de resposta mais rápido que sistemas que utilizam microkernel.

[editar] Chamadas ao Sistema (System Calls)

O QNX, por se tratar de um sistema microkernel, implementa um sistema de mensageria, o IPC, Comunicação entre Processos. Estas mensagens são pacotes de bytes passados de um processo para o outro, que permitem transmitir dados e meios de sincronização da execução de vários processos. O IPC supervisiona o roteamento de mensagens e também gerencia as mensagens de proxies e sinais.

  • Mensagens: Fornece comunicação síncrona entre processos cooperativos, onde o remetente exige uma prova de recebimento e uma confirmação para mensagem.
  • Proxies: São especialmente adequados para notificação de eventos onde o remetente não precisa interagir com destinatário
  • Sinais: Usados para suportar comunicação assíncrona entre processos.

[editar] Mensagens

Como o IPC de mensagens espera uma confirmação de recebimento, no seu conteúdo ela utiliza funções da linguagem C. Quando é realizada a sincronização entre processos, são utilizadas as funções SEND(), RECEIVE() e REPLY. A partir do momento que uma mensagem de sincronização é disparada, o processo remetente fica em estado de bloqueio, sendo liberado apenas ao receber o retorno do processo destinatário.

[editar] Proxies

É uma forma de mensagem não bloqueante adequada especialmente para notificação de eventos onde o remetente não precisa interagir com o destinatário. A única função de um proxy é enviar uma mensagem fixa a um processo especifico que possui o proxy, onde é possível enviar a mensagem para um processo, sem que o remetente fique bloqueado ou esperando um retorno.

[editar] Sinais

São métodos tradicionais de comunicação assíncrona. Um sinal é considerado entregue a um processo quando a ação deferida por ele é realizada pelo destinátario. Um processo pode estabelecer um sinal sem nenhuma intervenção. Nenhum dado é transmitido com sinal. Entre o tempo que o sinal é gerado e o tempo que ele é entregue, ele é considerado pendente. Os sinais são entregues a um processo quando o processo esta pronto para pronto para executar no escalonador.

Se o processo não tomar nenhuma ação especial para manipular sinais, ação default é executada – finalizar o processo. Se o processo ignorar o sinal, não ocorre nenhum efeito no processo quando ele é entregue.

[editar] Gerência de Processos e Threads

"De forma Simplificada um thread pode ser definido como uma sub-rotina de um programa que pode ser executada de forma assíncrona , ou seja executada paralelamente ao programa chamador. O programa deve especificar os threads associando-os às sub rotinas assíncronas. Desta forma multithreads possibilita a execução de concorrente de sub-rotinas dentro de um mesmo processo." (MACHADO; MAIA, 2007)

Em ambientes multithread existe um ganho de desempenho, pois são diversas instruções em um mesmo processo, ou seja, é como se diversos processos estivessem sendo executados de forma concorrente, porém fazendo uso de apenas um contexto de hardware, dividindo assim o mesmo endereçamento, com isso a comunicação é bem mais rápida, pois não envolve mecanismos lentos. Também não existe a criação, troca e eliminação de processos, diminuindo assim o overhead. As threads são escalonadas assim como os processos.

[editar] Threads

O QNX é um sistema operacional multithread. No QNX o responsável por decidir qual thread deve estar sendo executada em um dado instante é o kernel. Ele também é o responsável por escalonar, efetuar as trocas de contexto e salvar as informações da thread que esta saindo da CPU nos registradores de controle. Para garantir que duas threads não acessem simultaneamente um recurso compartilhado (seção critica), o QNX implementa a técnica de Exclusão Mutua Com sincronização condicional (semáforos).

[editar] Escalonamento (Scheduling)

As decisões de escalonamento são realizadas pelo Micro-kernel nas seguintes situações:

  • Quando o processo está bloqueado.
  • O timeslice de um processo em execução esgotou.
  • Processo em execução sofre preempção.

Todo processo criado no QNX recebe uma prioridade, a qual o escalonador utiliza para selecionar o próximo processo com maior prioridade que deve estar em no estado ready (pronto), ou seja, podendo utilizar os recursos da CPU.

Os métodos de escalonamento podem ser de três tipos: escalonamento FIFO, escalonamento Round Robin, e escalonamento Adaptativo. Cada processo no sistema operacional pode utilizar qualquer um desses métodos, porém somente é aplicado os métodos em situações com dois ou mais processos com mesma prioridade e com o estado ready, ou seja , pronto para utilizar os recursos da CPU. Caso um processo com maior prioridade torne-se ready , então causa a preempção dos processos de baixa prioridade.

No escalonamento FIFO a condição que o método seja executado é que o processo renuncie o controle de forma voluntaria, não fazendo chamadas ao método ou através de preempção por um processo com maior prioridade.

No escalonamento Round-Robin, a condição para que o método continue executando é o mesmo procedimento do escalonamento FIFO , porém acrescido de mais um condição onde caso seja esgotado o timeslice do processo então há a preempção e o próximo processo no estado Ready terá o controle.

No escalonamento adaptativo, caso o timeslice do processo termine então a prioridade do processo é reduzida em uma unidade, procedimento conhecido como deterioração de prioridade. Neste caso o processo não é bloqueado. A prioridade do processo não cairá mais que uma unidade, mesmo que o timeslice esgote novamente sem bloquear. Caso o processo seja bloqueado então retorna para sua prioridade original. O escalonamento adaptativo é o método default do criado pelo Shell.

[editar] Conclusão

Atualmente, a QNX Software Systems é líder mundial em tempo real, tecnologia OS embarcada. QNX é multiusuário, multitarefa, trabalha com rede e possui uma boa interface. A semelhança visual do QNX com o Linux é explicada pelo fato de ambos os projetos fazerem uso da interface gráfica PHOTON. Versões mais recentes do QNX possuem diversas aplicações nativas, dentre as quais se destaca o seu navegador de internet, o Voyager, que renderiza praticamente todo tipo de conteúdo (streaming de áudio e vídeo, flash, etc.) usado atualmente na web.

Por se basear em UNIX, o QNX é confiável e estável, podendo ser ideal para profissionais da área gráfica (3D, edição de imagem e vídeo e similares).

Líderes mundiais como a Cisco, General Eletric e Siemens dependem da tecnologia QNX para roteadores de rede, instrumentos médicos, unidades telemáticas de veículos, sistemas de segurança e de defesa, robótica industrial e outras aplicações de missões críticas. Em 2010, a Research In Motion (RIM), fabricante do BlackBerry, adquiriu o QNX e o implementou em seu primeiro tablet PC, o PlayBook, concorrente direto do iPad, da Apple.

O fato de Gordon Bell e Dan Dodge, fundadores da QNX Software Systems, ainda representarem um papel ativo no desenvolvimento e codificação do QNX até hoje dá um respaldo maior à comunidade QNX no mundo.

[editar] Bibliografia

MACHADO, Francis; MAIA, Luiz. Arquitetura de Sistemas Operacionais. 4 ed. Rio de Janeiro: LTC Editora. Rio de Janeiro, 2007.

DO PRADO, Rodrigo; VICENTE, William. Sistema Operacional QNX. Monografia apresentada para banca na Universidade de Campinas: 1998.

TENENBAUM, Andrew S. Sistemas Operacionais Modernos. 2 ed. São Paulo: Pearson Education do Brasil, 1994.

KRTEN, Rob. QNX Neutrino RTOS. Ottawa: QNX Software Systems GmbH & Co. KG., 2009.


[editar] Ligações externas

Ferramentas pessoais
Espaços nominais
Variantes
Ações
Navegação
Colaboração
Imprimir/exportar
Ferramentas
Noutras línguas