Upload
david-wilson
View
218
Download
0
Embed Size (px)
Citation preview
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 1/45
Seminário MAC422
QNXAntonio Carlos dos SantTiago Motta Jorge
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 2/45
O que é QNX ?
Sistema operacional de tempo real,multiusuário e multitarefa muitoutilizado nos últimos anos
Reconhecido por ser confiável,tolerante a falhas e escalável
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 3/45
Usos
Sistemas de controle aéreo
Instrumento médicos
Sistemas de produção
Usinas nucleares
Lugares onde uma tela azul não podeaparecer
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 4/45
Empresas que usam QNX
Motorola
Correio Americano
Audi
Chrysler
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 5/45
A história
Desenvolvido por Dan Dogde e GordonBell em 1980 na Universidade deWaterloo
Inicialmente, chama-se Qunix,derivado de “QuickUnix”
Dogde e Gordon fundaram a QSSL, queproduz e comercializa o QNX
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 6/45
Filosofia do QNX
Microkernel
Processos (serviços ou de usuário) sãoexecutados no espaço do usuário com
memória protegidaComunicação entre processos pormensagens
Uso do POSIX
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 7/45
Outros SO's
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 8/45
Sistemas monolíticos
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 9/45
O microkernel
Extremamente pequeno (~10 KB)
Escrito em C
Os algoritmos e as estruturas de
dados garantem a performance
Apenas serviços essenciais estãopresentes
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 10/45
Serviços do microkernel
Threads
Sinais
Passagem de mensagens
Sincronização
Escalonamento
Timer
Gerenciamento de processos
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 11/45
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 12/45
Preempção e interrupção
O sistema procura ser totalmentepreemptível
Apenas durante poucos momentos a
preempção é desabilitadaDevido à estrutura de microkernel,apenas durante alguns nanosegundos asinterrupções são desabilitadas. Isto
ocorre apenas no início e no final doprocedimento
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 13/45
Totalmente preemptível
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 14/45
Passagem de mensagens
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 15/45
Threads
Unidade de escalonamento e execução domicrokernelDados privados das threads:
tid
register setstack (no espaço de end do processo)...
Estados possíveis: ready ou blocked
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 16/45
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 17/45
Processos
“Container” de threadsPossui pelo menos uma threadCom proteção de memória:
Cada processo não interfere no outro
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 18/45
IPC
Sempre entre threads:De um mesmo processoDe processos diferentes
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 19/45
Suspensão de threads
Quando ocorre uma suspensão?Kernel callExceçãoInterrupção de hardware
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 20/45
Escalonamento de threads
Quando ocorre o escalonamento?Sempre que o estado de execução deuma thread muda!Threads são escalonadas globalmente!
O escalonador entra em ação sempre que:a thread atual bloqueiaa thread atual sofre preempçãoa thread atual libera a CPU porvontade própria (yields)
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 21/45
Uma thread bloqueia...
Quando está esperando algum evento:Resposta de uma requisição de IPCEsperando em um mutex...
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 22/45
Uma thread bloqueia...
Quando está esperando algum evento:Resposta de uma requisição de IPCEsperando em um mutex...
O que acontece:É removida da sua fila de threadsprontas
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 23/45
Uma thread sofre preempção
Quando uma thread de prioridade maisalta é colocada na fila de threadsprontasPorém, ela continua na frente das
outras threads daquela mesma prioridade
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 24/45
Uma thread feliz e bondosa
Libera o processador por livre eespontânea vontade: “yields”É colocada no final da sua filaA thread com maior prioridade executará
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 25/45
Prioridades
Toda thread possui uma prioridadeA thread com maior prioridade executaráHerança de prioridade:
Threads herdam a prioridade de sua
thread pai
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 26/45
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 27/45
Algoritmos de escalonamento
FIFORound-robinSporadicCada THREAD seleciona qual algoritmo
deseja utilizar!Em todos os casos, uma thread de maiorprioridade sempre faz as outrassofrerem preempção
Herda o algoritmo da thread pai
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 28/45
FIFO
Uma thread continua a executar até:BloquearVoluntariamente liberar a CPUSofrer preempção por uma thread de
prioridade mais alta
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 29/45
Round-robin
Uma thread continua a executar até:BloquearVoluntariamente liberar a CPUSofrer preempção por uma thread de
prioridade mais altaConsumir sua fatia de tempo
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 30/45
Sporadic
Permite que threads respondam a eventos
não periódicos sem por em risco as“deadlines” de outras threadsUma thread continua a executar até:
Bloquear
Sofrer preempção por uma thread deprioridade mais alta
Definie duas prioridades:Low priority
Normal priority
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 31/45
Sporadic – continuação (1)
Parâmetros que controlam a mudança:“budget” inicial (C)Low priority (L)Normal priority (N)
Tempo de recarga (T)Número máximo de recargas em débito
di i ã (2)
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 32/45
Sporadic – continuação (2)
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 33/45
Sporadic – continuação (3)
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 34/45
Sporadic – continuação (4)
Uma vez que o tempo de recarga foicumprido, a thread volta para suaprioridade altaIsso garante que a thread terá
oportunidade de rodar todo período detempo T por um tempo total CA thread pode servir a eventosperiódicos de uma maneira controlada e
previsível
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 35/45
Curiosidade!
O tempo de mudança de contexto entre processos do QNX é menor que o tempo demudança de threads do UNIX!Por quê?
Alta disponibilidade
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 36/45
Alta disponibilidade
O que é isso?
Habilidade de rodar por longosperíodos de tempo sem interrupções
Assumindo hardware altamente confiávele com redundância suficiente:
Como um SO pode ficar estável esempre pronto para responder quandoalgum componente ou aplicação falha?Nos casos onde não há hardware
redundante, o que o SO pode fazer?
í
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 37/45
Sistemas monolíticos
Se apenas as aplicações estiverem noespaço de usuário:
Podemos reiniciar aplicações sem“downtime” do sistema
Não podemos reiniciar algo essencialdo sistema sem derrubá-lo
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 38/45
Sistemas microkernel
Inerentemente a arquitetura de SO maisestável possível!Apenas mudanças no microkernel exigem“downtime”
Todos os processos são candidatos aserem parte do sistema:
File systemDevice drivers
...
(2)
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 39/45
Sistemas microkernel - (2)
Todos os processos podem serreiniciados dinamicamente:
Processos de usuárioServiços do sistema (processos!)
ód l ífi
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 40/45
Módulos específicos
Biblioteca para aplicações clientes:Funções que permitem recuperaçõesdinâmicas e automáticas
Gerente da alta disponibilidade:
“Cão de guarda” que faz recuperaçõessempre que um processo ou serviçofalha
Biblioteca para aplicações
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 41/45
Biblioteca para aplicações
As operações de I/O do C padrão foramimplementadas de modo a oferecem
suporte a resolução dinâmica deproblemas automaticamente!Em um cenário de alta disponibilidade,todas as falhas transitórias são
recuperadas instantaneamente!Muitas outras funções ajudam aplicaçõesclientes a serem escritas para umcenário de alta disponibilidade
Gerente da Hi A ailabilit
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 42/45
Gerente da Hi. Availability
Provê um mecanismo de monitoramento de
processos e serviços do sistema:Detecta processos que falharamDetecta processos que não respondemDetecta uma degradação na qualidade
do serviço oferecido por algumprocesso
Utiliza um esquema publisher/subscriberpara comunicar eventos interessantes do
sistema para quem interessa
O diã
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 43/45
O guardião
SPOF = Single Point of FailureCada SPOF deve ser identificadoO Gerente da alta disponibilidade nãopode nunca se tornar um SPOF
Um processo espelho, o guardião, estásempre pronto para tomar o lugar do HAM(High Availability Manager)
O diã
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 44/45
O guardião
E se o guardião também tiver problemas?Ele cria um outro guardião para elemesmo ANTES de tomar o lugar do HAM!
É isso!
QNX The Quick UNIX
7/23/2019 apresentacaoQNX.pdf
http://slidepdf.com/reader/full/apresentacaoqnxpdf 45/45
QNX – The Quick UNIX
Referências:www.qnx.com