45
7/23/2019 apresentacaoQNX.pdf http://slidepdf.com/reader/full/apresentacaoqnxpdf 1/45 Seminário MAC422 QNX Antonio Carlos dos Sant Tiago Motta Jorge

apresentacaoQNX.pdf

Embed Size (px)

Citation preview

Page 1: apresentacaoQNX.pdf

7/23/2019 apresentacaoQNX.pdf

http://slidepdf.com/reader/full/apresentacaoqnxpdf 1/45

Seminário MAC422

QNXAntonio Carlos dos SantTiago Motta Jorge

Page 2: apresentacaoQNX.pdf

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

Page 3: apresentacaoQNX.pdf

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

Page 4: apresentacaoQNX.pdf

7/23/2019 apresentacaoQNX.pdf

http://slidepdf.com/reader/full/apresentacaoqnxpdf 4/45

Empresas que usam QNX 

Motorola

Correio Americano

Audi

Chrysler

Page 5: apresentacaoQNX.pdf

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

Page 6: apresentacaoQNX.pdf

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

Page 7: apresentacaoQNX.pdf

7/23/2019 apresentacaoQNX.pdf

http://slidepdf.com/reader/full/apresentacaoqnxpdf 7/45

Outros SO's

Page 8: apresentacaoQNX.pdf

7/23/2019 apresentacaoQNX.pdf

http://slidepdf.com/reader/full/apresentacaoqnxpdf 8/45

Sistemas monolíticos

Page 9: apresentacaoQNX.pdf

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

Page 10: apresentacaoQNX.pdf

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

Page 11: apresentacaoQNX.pdf

7/23/2019 apresentacaoQNX.pdf

http://slidepdf.com/reader/full/apresentacaoqnxpdf 11/45

Page 12: apresentacaoQNX.pdf

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

Page 13: apresentacaoQNX.pdf

7/23/2019 apresentacaoQNX.pdf

http://slidepdf.com/reader/full/apresentacaoqnxpdf 13/45

Totalmente preemptível

Page 14: apresentacaoQNX.pdf

7/23/2019 apresentacaoQNX.pdf

http://slidepdf.com/reader/full/apresentacaoqnxpdf 14/45

Passagem de mensagens

Page 15: apresentacaoQNX.pdf

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

Page 16: apresentacaoQNX.pdf

7/23/2019 apresentacaoQNX.pdf

http://slidepdf.com/reader/full/apresentacaoqnxpdf 16/45

Page 17: apresentacaoQNX.pdf

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

Page 18: apresentacaoQNX.pdf

7/23/2019 apresentacaoQNX.pdf

http://slidepdf.com/reader/full/apresentacaoqnxpdf 18/45

IPC 

Sempre entre threads:De um mesmo processoDe processos diferentes

Page 19: apresentacaoQNX.pdf

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

Page 20: apresentacaoQNX.pdf

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)

Page 21: apresentacaoQNX.pdf

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...

Page 22: apresentacaoQNX.pdf

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

Page 23: apresentacaoQNX.pdf

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

Page 24: apresentacaoQNX.pdf

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á

Page 25: apresentacaoQNX.pdf

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

Page 26: apresentacaoQNX.pdf

7/23/2019 apresentacaoQNX.pdf

http://slidepdf.com/reader/full/apresentacaoqnxpdf 26/45

Page 27: apresentacaoQNX.pdf

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

Page 28: apresentacaoQNX.pdf

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

Page 29: apresentacaoQNX.pdf

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

Page 30: apresentacaoQNX.pdf

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

Page 31: apresentacaoQNX.pdf

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)

Page 32: apresentacaoQNX.pdf

7/23/2019 apresentacaoQNX.pdf

http://slidepdf.com/reader/full/apresentacaoqnxpdf 32/45

Sporadic – continuação (2)

Page 33: apresentacaoQNX.pdf

7/23/2019 apresentacaoQNX.pdf

http://slidepdf.com/reader/full/apresentacaoqnxpdf 33/45

Sporadic – continuação (3)

Page 34: apresentacaoQNX.pdf

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

Page 35: apresentacaoQNX.pdf

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

Page 36: apresentacaoQNX.pdf

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?

í

Page 37: apresentacaoQNX.pdf

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

Page 38: apresentacaoQNX.pdf

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)

Page 39: apresentacaoQNX.pdf

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

Page 40: apresentacaoQNX.pdf

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

Page 41: apresentacaoQNX.pdf

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

Page 42: apresentacaoQNX.pdf

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ã

Page 43: apresentacaoQNX.pdf

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ã

Page 44: apresentacaoQNX.pdf

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

Page 45: apresentacaoQNX.pdf

7/23/2019 apresentacaoQNX.pdf

http://slidepdf.com/reader/full/apresentacaoqnxpdf 45/45

QNX – The Quick UNIX 

Referências:www.qnx.com