22
QNX Neutrino César Lincoln Cavalcante Mattos Raphael Torres Santos Carvalho Levi Lopes Soares e Silva

Apresentacao sobre o QNX Neutrino

Embed Size (px)

Citation preview

Page 1: Apresentacao sobre o QNX Neutrino

QNX Neutrino

César Lincoln Cavalcante MattosRaphael Torres Santos CarvalhoLevi Lopes Soares e Silva

Page 2: Apresentacao sobre o QNX Neutrino

QNX Neutrino

HistóriaEm 1980, Gordon Bell e Dan Dodge, estudantes da Universidade de WaterLoo fundam a Quantum Software Systems. Em 1982, a primeira versão do QNX é lançada para Intel 8088.

Nos primeiros anos, o QNX ficou difundido somente no mundo não-embarcado, pois seu kernel de 44k era muito grande para esse tipo de aplicação.

No fim dos anos 80, a Quantum percebeu que o mercado estava migrando rapidamente para o modelo POSIX e decidiu reescrever o kernel para maior compatibilidade em baixo nível. O resultado foi o QNX 4. Nesse mesmo tempo, foi desenvolvido um sistema de janelas, nomeado de Photon microGUI.

Page 3: Apresentacao sobre o QNX Neutrino

QNX Neutrino

HistóriaEm 2001, saiu o QNX Neutrino, nova versão do QNX, totalmente compatível com POSIX e desenvolvida desde o início para ser compatível com SMP (Symmetric Multiprocessing), mantendo a arquitetura de microkernel.

Em 2004 a companhia anunciou sua venda para Harman International Industries. Antes dessa aquisição, o QNX já havia sido usado extensamente na indústria automotiva para sistemas telemáticos. Desde sua compra pela Harman, o QNX têm sido projetado sobre 180 modelos diferentes de automóvel.

Em 12 de setembro de 2007, a QNX Software Systems abriu o código fonte do seu sistema operacional de tempo real QNX Neutrino, para uso não-comercial.

Page 4: Apresentacao sobre o QNX Neutrino

QNX Neutrino

Arquitetura Geral Microkernel

Modularizada - Qualquer componente pode ser interrompido, removido ou adicionado dinamicamente.

Multi-target - ARM, MIPS, PowerPC, SH-4, StrongARM, XScale, x86.

Suporte a POSIX.

Suporte a J2ME.

Suporte a ambientes multi-core.

Sistema de arquivos em espaço de usuário com capacidade de compressão e acesso a arquivos via rede.

QNX Photon microGUI - Sistema de interface.

Page 5: Apresentacao sobre o QNX Neutrino

QNX Neutrino

Arquitetura Geral

Page 6: Apresentacao sobre o QNX Neutrino

QNX Neutrino

Características RT O kernel QNX contém apenas escalonador de CPU, comunicação inter-processos, redirecionamento de interrupção e temporizadores.

Todos os processos executam em espaço de usuário, incluindo um processo especial conhecido como proc, que opera em conjunto com o microkernel na criação de outras tarefas e no gerenciamento de memória.

Esta organização é possível devido a dois mecanismos chaves – um subroutine-call para comunicação inter-processos, e um boot loader que pode carregar uma imagem contendo, além do kernel, programas de usuário e bibliotecas compartilhadas.

Microkernel é inteiramente preemptivo com escalonador baseado em prioridades.

Suporte a clusters de tolerância a falhas.

Otimizado para sistemas distribuídos, inclusive com acesso a recursos externos compartilhados.

CPM (Critical Process Monitor). - "Smart watchdog" que automaticamente reinicializa processos críticos quando estes falharem, reduzindo o MTTR (Mean Time to Repair) do sistema .

Page 7: Apresentacao sobre o QNX Neutrino

QNX Neutrino

Características RTAs requisições de I/O são executadas através de troca de mensagens. Threads de alta prioridade recebem serviço de I/O antes das de baixa prioridade, uma característica essencial em um sistema hard real-time.

O conjunto de device drivers e bibliotecas de suporte necessários para inicialização do sistema não estão no kernel. É possível colocar uma imagem de boot contendo esse conjunto de aplicações na ROM, o que pode ser útil em sistemas embarcados.

O QNX Neutrino suporta Symmetric Multiprocessing (SMP) e Bound Multiprocessing (BMP). BMP é usado para facilitar a migração de aplicação non-SMP safe para computadores multiprocessadores.

O QNX Neutrino permite que em um Pentium III um processamento de interrupção de 0,55µs no qual os eventos podem ser registrados. Para efeito de comparação, sistemas operacionais de tempo compartilhado reagem a eventos somente após aproximadamente 10 ms.

Page 8: Apresentacao sobre o QNX Neutrino

QNX Neutrino

Comunicação Inter-Processos (IPC)Utiliza um pathname space que permite qualquer processo requisitar serviços de outros processos através de chamadas POSIX, como open(), read(), write() e lseek(). Essas chamadas são convertida de maneira transparente em trocas de mensagens feitas através de um "barramento de software".

Na operação da troca de mensagens, a mensagem é copiada, pelo kernel, do espaço de endereço do processo emissor para aquele do processo receptor. Se o processo receptor estiver esperando pela mensagem, o controle da CPU é transferido no mesmo instante, sem passar através do escalonador. Portanto, enviar uma mensagem para outro processo e esperar pela resposta não resultam em perda de um turno pela CPU. Esta integração entre passagem de mensagem e escalonador é o principal motivo da grande utilização desse tipo de IPC no QNX.

Page 9: Apresentacao sobre o QNX Neutrino

QNX Neutrino

Comunicação Inter-Processos (IPC)As mensagens podem ser manipuladas diretamente através das funções MsgSend(), MsgReceive() e MsgReply().

É possível utilizar mecanismos de IPC tradicionais, como pipes, FIFOs, memória compartilhada, signals, etc.

O sistema de TDP (Transparent Distributed Processing), permite a comunicação entre processos distribuídos.

Page 10: Apresentacao sobre o QNX Neutrino

QNX Neutrino

Arquitetura Geral

Page 11: Apresentacao sobre o QNX Neutrino

QNX Neutrino

Desenvolvimento Compatibilidade POSIX.

Page 12: Apresentacao sobre o QNX Neutrino

QNX Neutrino

Instrumented Kernel É possível substituir o kernel padrão do QNX Neutrino por um instrumented kernel, onde podemos debugar todas as partes do sistema em busca de possíveis deadlocks, problemas de temporização, falhas lógicas, etc.

Pode-se ainda selecionar as informações que serão buscadas através de filtros definidos pelo usuário.

Page 13: Apresentacao sobre o QNX Neutrino

QNX Neutrino

QNX Photon microGUI GUI modular para sistemas embedded.

Suporte a múltiplas janelas, múltiplas camadas.

Display de gráficos e animações 2D e 3D.

Framework multimídia com suporte aos formatos AAC, MP3, MPEG-1, WAV, AIFF, IFF, AU, etc.

Possibilidade de alterar qualquer parte da interface sem a necessidade de reiniciar o sistema, pois os serviços da GUI rodam como aplicações em áreas de memória reservada.

Capacidade de se integrar a aplicações Java.

Conexão com desktops Windows remotos através do Phindows.

QNX Voyager - Web Browser para sistemas embedded.

Page 14: Apresentacao sobre o QNX Neutrino

QNX Neutrino

QNX Momentics Development Suite IDE de desenvolvimento multilinguagem (C, C++ e embedded C++) baseada no Eclipse que pode ser utilizada no Windows, Linux, Solaris ou no próprio QNX neutrino.

Ambiente de debug integrado com suporte a aplicações multi-thread multi-processadas (mais de uma CPU).

Sytem Profiler e Application Profiler - Permitem monitorar a performace da aplicação, verificar conflitos de temporização, estado das threads, traces e interações com o instrumented kernel.

Ferramenta de análise de memória - Traça um mapa de utilização da memória.

Target System Tools - Monitora todas as caracterísitcas de execução da aplicação diretamente no hardware alvo.

Application Builder - Ferramenta para construção de interfaces Photon.

Page 15: Apresentacao sobre o QNX Neutrino

QNX Neutrino

QNX Momentics Development Suite

Page 16: Apresentacao sobre o QNX Neutrino

QNX Neutrino

QNX Momentics Development Suite

Page 17: Apresentacao sobre o QNX Neutrino

QNX Neutrino

QNX Momentics Development Suite

Page 18: Apresentacao sobre o QNX Neutrino

QNX Neutrino

QNX Momentics Development Suite

Page 19: Apresentacao sobre o QNX Neutrino

QNX Neutrino

QNX Momentics Development Suite

Page 20: Apresentacao sobre o QNX Neutrino

QNX Neutrino

Outros TDKs (Technology Development Kits) Adaptative Partitioning - Realoca tempo de processamento entre processos de forma dinâmica, maximizando o uso da CPU e evitando inanição.

Resource Manager Framework - Framework para desenvolvimento de drivers em espaço de usuário.

Page 21: Apresentacao sobre o QNX Neutrino

QNX Neutrino

Principais ClientesBoeing

BTI Photonics

Chrysler

Cisco

Deltex Medical

Grayson Wireless (Allen Telecom)

Hyundai

NASA

Naval Undersea Warfare Center

Physiometrix PSA 4000

U.S. Army (Exército dos E.U.A)

Siemens AXIOM Arti

Page 22: Apresentacao sobre o QNX Neutrino

QNX Neutrino

Referênciashttp://www.qnx.com/

http://en.wikipedia.org/wiki/QNX

http://pt.wikipedia.org/wiki/QNX

http://www.guiadeti.com.br/anuario/empresa.2006-09-26.0069492949/solucao.2006-09-26.7669779352/

http://www.operating-system.org/betriebssystem/_english/bs-qnx.htm