Вы находитесь на странице: 1из 32

QNX

Sistem a Operacional
em Tem po Real
Sumário
1. Apresentação
1.1. Definindo o QNX

2. Conceitos
2.1. Sistema de tempo real
2.2. Sistema embarcado
2.3. Microkernel, Kenel Monolítico, Exokernel
2.4. Posix

3. Estrutura do QNX
3.1. Arquitetura Microkernel
ć
3.2.
ão entre
Comunica
processos
3.3. Escalonador
3.4. Gerenciador de Processos
3.5. Genciador do Sistema de Arquivos
3.6. Gerenciador de Dispositivos
3.7. Gerenciador de Rede
1. Apresentacão

1.1 Definindo o QNX

Sistema de tempo real


Sistemas embarcados
Arquitetura em microkernel
POSIX
2. Conceitos

2.1. Sistemas de Tempo Real


2.2. Sistemas embarcados
2.3. Arquitetura em microkernel
2.4. POSIX
2. Conceitos

2.1. Sistemas de tempo real

- Tarefas críticas realizadas em tempo hábil


- Consequências críticas em caso de falhas
- SOTR x Sistemas embarcados
2. Conceitos

2.2. Sistemas embarcados

- Encapsulado pelo dispositivo


- Requisistos específicos x Tarefas bem definidas

- Arquitetura simplificada
- Recursos limitados
- Geralmente ausência de parts mecânicas
(confiabilidade e economia de energia)

Ex:
Equipamentos médicos
Equipamentos de aviacão / Controle de Tráfego Aéreo
Telefones Celulares
PDA's
Sistemas de mísseis
2. Conceitos

2.3 Arquitetura em microkernel

- Kernel – Centro sistema operacional


- Controle de acesso a hardware, gerenciamento de processos

Diversos cenários/ apliacacões - > diferentes tipos de kernel:

- Monolítico
- Microkernel
- Híbrido
- Exokernel
2. Conceitos

2.3 Arquitetura em microkernel

- Monolítico

Bloco único
Necessidade de recompilacão
Consumo desnecessário de recursos
2. Conceitos

2.3 Arquitetura em microkernel

- Microkernel QNX!!!

Kernel reduzido
Tarefas ex tremamente básicas: escalonamento, gerec. Memória
Servers (instanciados em nível de usuário)
2. Conceitos

2.3 Arquitetura em microkernel

- Híbrido

Microkernel contendo código não- essencial no nível do kernel


2. Conceitos

2.3 Arquitetura em microkernel

- Exokernel

Estrutura verticalizada
Sistema tradicionais: abstracão nível de hardware
Exokernel: liberdade de acesso a mais baix o nível
2. Conceitos

2.4. POSIX

- Portable Operating System Interface X(Unix )


- Padronizacão IEEE – API software – variantes Unix

- Interface de linha de comando e scripts (ex : Korn Shell)


- awk, ed, grep, ...
- Controle de I/ O
- Gerenciamento de threads
- etc
3. Estrutura do QNX

A eficiência do QNX deve- se a 2 princípios:

- Arquitetura em microkernel
- Comunicacão de processos baseada em mensagens (IPC)
3. Estrutura do QNX

3.1. QNX Microkernel

O microkernel é muito pequeno, sendo armazenado nele somente


componentes essenciais como: temporizadores, escalonador, gerenciador
de memória.

Os outros componentes ficam armazenados numa área segura da memória

O microkernel se dedica essencialmente a duas funcões:

- Passagem de mensagens
- Escalonador
3. Estrutura do QNX

Diz- se que muito do poder, simplicidade e elegância do QNX deve- se ao


modelo de comunicacão entre processos baseado em mensagens.

A mensagem permite sincronizacão através de requisicão de confirmacão


e ou resposta
3. Estrutura do QNX

Comunicacão entre Processos

Existem 3 tipos de mensagens:


- Mensagens
- Proxies
- Sinais
3. Estrutura do QNX - Escalonador

O QNX suporta 32 níveis de prioridade preemptivas e oferece


escolha de algorítimo de escalonamento para processos com
mesma prioridade
FIFO
Round-Robin
Adapt at ivo

Servidores definem prioridade


Gerenciador de Processos
Trabalha próx imo ao Microkernel mas funciona com outro processo

Cria processos

Controla os serviços fundamentais aos processos


Primitivas para criação de Processos

fork() – cria um processo igual ao processo chamador. Compartilha o


mesmo código e herda todos os dados.

exec() – o novo processo criado substitui o processo chamador.

spawn() – cria uma novo processo, filho do processo chamador

o fork() e o exec() estão definidos por POSIX, enquanto que


spawn() é original do QNX.
Herdando do pai

Artigo Herdado fork() exec() spawn()


process ID não sim não
open files sim opcional opcional
file locks não sim não
pending signals não sim não
signal m ask sim opcional opcional
ignored signals sim opcional opcional
signal handlers sim não não
environm ent variables sim opcional opcional
session ID sim sim opcional
Cliclo de Vida dos Processos
Criação
Consiste e alocar um ID para o novo processo e configurar as
informações do seu ambiente (Herança)
Carregando
É feito pelo loader thread. Apesar de residir no gerenciador de
processo o carregador roda sob o ID do processo, deixando o
Gerenciador livre enquanto carrega o processo
Cliclo de Vida dos Processos
Executanto
Uma vez carregado o processo compete pelos recursos da CPU,
inclusive com o processo PAI.

Terminando
um sinal é enviado para o processo terminando- o
o processo invoca o ex it() , ex plicitamente ou pela ação de retorno
do main()
Estados dos Processos

READY

BLOCKED
SEND- blocked
RECEIVE- blocked
REPLY- blocked
SIGNAL- blocked
SEMAPHORE- blocked
Estados dos Processos
HELD – sigstop()/ sigcont(), não pode usar a CPU

WAIT- blocked - wait() ou waitpid(), aguardando status de processos


filhos

DEAD - zombie process


SPAWN_NOZOMBIE flag
Estados dos Processos
Temporizadores
Muito utilizado por aplicações de tempo real

Implementado em Hardware – SO simula vários temporizadores


lógicos

O QNX provê as seguintes funções:


Criar timer - timer_create()
Remover timer - timer_delete()
Configurar timer - qnx _ticksize()
Ler timer - timer_gettime()
Tratadores de Interrupção
QNX provê chamadas de sistemas que permitem a escrita em
linguagem de alto nível de tratadores de interrupção

Tratadores residem fora do Kernel

Instalação e desinstalação dinâmica de tratadores de interrupção


Métricas
Processador Chaveamento de contex to Latência de
Interrupção
Pentium/ 133
1,95 4,3
Pentium/ 100
2,6 4,4
486DX4
6,75 7
386/ 33
22,6 15
Tempo em microsegundos
Monitoração de Processos críticos

Para conseguir um a disponibilidade elevada, o QNX t em com o base


um princípio sim ples:
Exam inar se dem ora m enos t em po reiniciar um único
com ponent e do que rest aurar o sist em a int eiro. Se o QNX
encont rar um problem a, ele pode im ediat am ent e t erm inar e
rest aurar o sist em a em alguns m ile-segundos não precisando
reiniciar. Por que ele consegue isolar a falha de m aneira precisa.
3.4. Gerenciador de Sistema de Arquivos

Fsys
POSIX- Compatível

leitura, escrita, abertura, fechamento

Arquivos regulares
Diretorios
Links simbólicos
Pipes
Arquivos especiais de bloco

Propriedade de arquivos (user, group, other)


Permissão de arquivos (read, write, ex ecution)
3.7. Gerenciador de Rede

Reforco a funcionalidade do sistema de mensagens primitivas


extendendo agora a propagacão para máquinas remotas.

Três características básicas avancadas:


- Incrementa o throughput via balanceamento de carga
- tolerância a falha via conectividade redundante
- bridging entre redes QNX

Dinamicamente alocado
4. Referências

http:/ / www.qnx .com

http:/ / www.openqnx .com

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

Obrigado!