Você está na página 1de 62

QNX

QNX Bsico
QNX

Overview do QNX
altamente confivel e seguro, dando estabilidade
total na realizao das tarefas, tornando-se uma
excelente alternativa para aplicaes robustas.
O QNX consegue suportar aplicaes de tempo
real devido a modularidade e simplicidade que nele
existe, e para isto utiliza-se de dois princpios
fundamentais:
Arquitetura do microkernel
Comunicao entre processos baseada em
mensagens.

QNX

Arquitetura do Microkernel
Microkernel ou ncleo o componente central do
sistema operacional.
Faz a interao entre os aplicativos e o
processamento real de dados em nvel de
hardware
Gerenciar os recursos do sistema e permite que o
sistema faa uso dele.
Executa em tempo real

QNX

Duas funes essenciais:
Comunicao inter-processos: manipula o
roteamento de todas as mensagens entre os
processos atravs de todo o sistema.
Escalonamento:
chamado sempre que um processo muda de
estado como resultado de uma mensagem ou
interrupo.
Escolhe qual processo vai para a CPU, baseando-
se no processo com maior prioridade que esteja no
estado ready(pronto)



QNX

Microkernel do QNX coordenando os
gerenciadores de sistemas


Process
Manager
FileSystem
Manager
Device
Manager
Network
Manager

QNX

Processos do sistema
Uma configurao tpica QNX possui os seguintes
processos de sistema:
Gerente de processos (Proc);
Gerente de sistemas de arquivos (Fsys);
Gerente de dispositivo (Dev);
Gerente de rede (Net).

QNX

Processos do sistema X processos escritos
pelo usurio
Os processos do sistema praticamente no
possuem diferenas de um programa escrito pelo
usurio.
A nica diferena real entre os servios do sistema
e as aplicaes que os servios do sistema
operacional gerenciam recursos para clientes.

QNX

Drivers de dispositivos
Como os drivers nada mais so do que processos
padro, o acrscimo de um novo ao QNX no afeta
nenhuma outra parte do sistema operacional.
A nica alterao necessria ao ambiente QNX a
inicializao do novo driver.

QNX

Comunicao entre processos (IPC)
Quando vrios processos rodam simultaneamente, como em
ambientes multitarefa tpicos, o sistema operacional deve
fornecer mecanismos que permitam aos processos se
comunicar entre si.
Troca de mensagem
No QNX, a mensagem um pacote de bytes passado de um
processo para outro.
Os dados em uma mensagem tem significado somente para
quem enviou a mensagem e para quem a recebeu.
Fornece meios de sincronizao da execuo de vrios
processos.
QNX

O Microkernel do QNX responsvel por:
IPC supervisiona o roteamento de mensagens e tambm
gerencia duas outras formas de sinais: proxies e sinais
Comunicao de rede entrega todas as mensagens
destinadas para processos em outros nodos.
Escalonamento de processos o escalonador decide qual o
prximo processo a ser executado.
Manipulao de interrupes todas as interrupes de
hardware e falhas so primeiro roteadas atravs do
Microkernel e, ento, so passadas para o driver apropriado
ou gerente do sistema.

QNX











Interrupt hardware





IPC
Scheduler
Network
Interface
Interrupt
redirector
Processo
A
Processo
B
Network
Manager
QNX

Comunicao entre processos
Tres tipos essenciais de IPC:
IPC via mensagens
Espera uma confirmao de recebimento
Funes SEND(), RECEIVE() e REPLY()
Processo remetente fica em estado de bloqueio
Liberado apenas ao receber o retorno do processo
destinatrio.



QNX

Processo A
Processo
B
O Processo A envia uma mensagem para o Processo B, o qual
subsequentemente recebe, processa e, ento, responde a
mensagem.


QNX

Sincronizao de processos
A troca de mensagens tambm fornece meios de
sincronizao da execuo de vrios processos
Observe a ilustrao acima novamente. Uma vez que o
Processo A produz uma requisio de Send(), no possvel
retomar a execuo at que ele tenha recebido o reply para a
mensagem que ele enviou. Isto garante que o processamento
realizado pelo Processo B para o Processo A completado
antes que o Processo A possa retomar a execuo. Alm
disso, uma vez que o processo B produziu a sua requisio
de Receive(), ele pode continuar processando at que ele
receba outra mensagem.


QNX

Estado bloqueado
Quando no permitido a um processo continuar em
execuo - porque ele deve esperar alguma parte do
protocolo da mensagem finalizar



Se um processo produziu uma Processo
Send() e a mensagem enviada ainda no foi
recebida pelo destinatrio.
Send blocked
Send() e a mensagem foi recebida pelo destinatrio,
mas este processo ainda no produziu um reply.
Reply blocked
Receive(), mas ainda no recebeu a mensagem. Receive
blocked
QNX

IPC via proxies
uma forma de mensagem no bloqueante, sem que o
remetente fique bloqueado ou esperando um retorno.
Proxies trabalham atravs da rede.
Um processo proxy pode armazenar at 65.535 mensagens
para entrega.
Exemplo:
Um processo deseja notificar outro processo de que um
evento ocorreu, mas no pode enviar uma mensagem (o que
causaria que ele se tornasse bloqueado at que o destinatrio
produza um Receive() e um Reply()).

QNX

Cliente proxy
Mensagem
Mensagem
Mensagem
Servidor
3
2
1
3
2
1
QNX

IPC via sinais
So mtodos tradicionais de comunicao
assncrona
Os sinais so entregues a um processo quando o
processo est pronto para executar o escalonador.
Gerando sinais
Um sinal considerado entregue a um processo
quando a ao definida pelo processo para aquele
sinal realizada pelo destinatrio.


QNX

Recebendo sinais
Um processo pode receber um sinal em uma das trs formas
seguintes:
Se o processo no tomou nenhuma ao especial para
manipular sinais, a ao default para o sinal tomada
geralmente, esta ao terminar o processo.
O processo pode ignorar o sinal. No ocorre nenhum efeito
no processo quando o sinal entregue.
O processo pode fornecer um manipulador de sinal para o
sinal um manipulador de sinal uma funo no processo
que chamada quando o sinal entregue. importante
ressaltar que nenhum dado transferido com o sinal.

QNX

Sinais x Mensagens
H uma importante interao entre sinais e mensagens. Se o
seu processo send-blocked ou receive-blocked quando um
sinal gerado e voc tem um manipulador de sinal as
seguintes aes ocorrem:
O processo desbloqueado.
Ocorre o processamento de manipulao de sinal.
O send() ou receive() retorna com um erro.
Se o seu processo foi send-blocked em algum momento, isto
no representa um problema, pois o destinatrio no teria
recebido uma mensagem. Mas se o seu processo foi reply-
blocked, voc no saber se a mensagem foi manipulada ou
no e, por isso, no saber se concretizou-se o send().


QNX

Processos que esto includas em uma imagem.

Categoria Processo Descrio
A boot Inicializao do sistema
B Proc Gestor do processo incluindo o kernel
B Slib32 Biblioteca compartilhada 32 bits
H Slib16 Biblioteca compartilhada 16 bits
C Fsys Gerente do sistema de arquivos QNX
C Fsys.drivers Drivers do sistema de arquivos QNX
D Dev Gerente de dispositivos
D Dev.drivers Drivers de dispositivos
E Net Gerente de rede
E Net.drivers Drivers de rede
F sinit Processo de inicializao
QNX

A Deve estar presente como a primeira entrada da imagem. Se
for omitido, o utilitrio buildqnx insere sem opo nenhuma.
B Deve estar presente como os dois primeiros processos
aps o boot.
C Necessrio se o boot for a partir de um disco.
D Pode ser inicializado no final do arquivo
/etc/config/sysinit.nodo
E Necessrio, se o boot for pela rede, caso contrrio pode ser
includo no arquivo /etc/config/sysinit.nodo.
F Normalmente includo para executar um arquivo shell.
G Necessrio para trabalhar com sistemas de baixo nvel
H Necessrio para executveis 16 bits que rodavam em
verses anteriores ao QNX4.23

QNX

Exemplo de /boot/build, para criar uma
imagem de boot
sys/Proc
$ Proc
sys/Slib32
$Slib32
sys/Slib16
$Slib16
/bin/Fsys
$Fsys

Exemplo de /boot/build, para criar uma
imagem de boot
/bin/Fsys.eide

$Fsys.eide
/bin/mount
$mount -p /dev/hd0 /dev/hd0t77/
/bin/sinit
$sinit TERM=qnx
QNX
Exemplo de /boot/build,
usando placa de rede
Ethernet
sys/Proc
$ Proc -l $(Lnode)
sys/Slib32
$Slib32
sys/Slib16
$Slib16
/bin/Net
$Net -m $(netmap)
/bin/Net.ether1000
$Net.ether1000
/bin/sinit
$sinit -r //$(Bnode)
/TERM=qnx TZ=$(TZ)

$Net -m $(netmap)
/bin/Net.ether1000
$Net.ether1000
/bin/sinit
$sinit -r //$(Bnode)
/TERM=qnx TZ=$(TZ)
QNX

Macro substitudo por:
$(Lnode) Nodo lgico da mquina de boot.
$(Bnode) o nodo lgico do servidor de boot, onde o
/etc/config/sysinit.nodo pode ser encontrado.
Estabelece a raiz do sistema de arquivos da mquina
de boot para o servidor de boot.
$(netmap) Mapeamento fsico-lgico do servidor de boot
$(TZ) Configurao de fuso horrio, para que o horrio seja
do servidor de boot. A macro tem que ser definida no
sinit.
QNX

nameloc &
Perodo de pesquisa 1 segundo, que o padro.
nameloc -p 5 &
Perodo de pesquisa 5 segundos
nameloc -s 1 -e 9 &
Pesquisa do nodo 1 at o 9 apenas.
netinfo exibe ocorrncia de rede
netinfo -a
Mostra todos os cdigos de erro com o texto correspondente
netinfo -n 4
Mostra eventos do nodo 4

QNX

netmap Carrega a tabela de mapeamento fsico e lgico da rede
netmap -n 5
Exibe mapeamento do nodo 5
netmap -f
Carrega o gerenciador de rede local com o mapeamento que est no
arquivo /etc/config/netmap
netmap -n 3 /etc/testmap
Carrega o gerenciador de rede do nodo 3 com o mapeamento que
est no arquivo /etc/testmap

QNX

nettrap autodetecta placa de rede e inicializa o driver especfico
nettrap start -v &
Quando inicializa, copia o drive especfico da controladora de rede, o
endereo e a interrupo
on executa um comando em outro nodo
on -t /dev/ser1 login
Usurio abre uma sesso em um terminal configurado na porta
serial. Este terminal tem que ser inicializado com a opo -t, para o
usurio poder acessar de novo.
tinit -t /dev/ser1 &
QNX

Abordagem para programao
O QNX = Coleo de tarefas, mensagens e
recursos.
Tarefas Unidades executveis que utilizam
recursos e se comunicam atravs de mensagens
Mensagens Troca de informaes entre duas
tarefas
Recursos - Memria, arquivos, estruturas de
dados, perifricos, etc
QNX

Computador fsico
LAN

QNX
Nodo X Nodo Y Nodo Z
No computador virtual , as fronteiras entre os nodos so
evidentes, mas so invisveis para o modelo de programao.



QNX

Tarefas
Geralmente as tarefas rodam independentemente uma das outras,
bloqueando quando elas precisam sincronizar com outras tarefas ou
recursos.
O sistema operacional controla qual tarefa deve ser executado
atravs das interaes entre as tarefas e de uma prioridade pr-
definida para cada tarefa.
O escalonamento de tarefas feito de modo que tarefas mais
prioritrias so executadas em detrimento das tarefas menos
prioritrias.
As tarefas so identificadas para o QNX, de forma nica, atravs do
seu TID (Task identification).
As tarefas podem registrar nomes genricos e, desta forma, serem
mais facilmente referenciadas.

QNX

No QNX, todas tarefas so criadas por outras
tarefas.
A tarefa-pai determina sua relao com a tarefa-
filho.

Pai Pai
Pai
Filho
Filho
Filho
Filho
dependente
Filho
concorrente
Tarefas
independe
ntes
QNX

Um sistema de arquivos organizado como
uma rvore hierrquica de diretrios
crescendo a partir da raiz de um disco.



QNX



Para encontrar: Procurar em:
Executveis do sistema /bin
Makefile da imagem do sistema operacional /boot
Criar arquivos para fazer imagem /boot/build
Arquivos de imagem do sistema operacional /boot/images
Processos do sistema necessrios para partida /boot/sys
Inicializao e outros arquivos /etc
Arquivos sysinit e configurao /etc/config
Arquivos de informao de software /etc/readme
QNX

Para encontrar: Procurar em:
Notas tcnicas /etc/readme/technotes
Diretrio padro para arquivos temporrios /tmp
Executveis /usr/bin
Definio de estruturas, variveis para o compilador
C
/usr/include
Biblioteca para o compilador C /usr/lib
Informaes dos terminais /usr/lib/terminfo
Spoolers e filas /usr/spool
Diretrio home do usurio /home/username
QNX

Nome de arquivos
Os seguintes caracteres so vlidos:
A- Z e a z
0 9
'$' , '-' (exceto como 1o caractere)
'.' , '_
sensitive case
QNX


Direitos de acesso
O QNX cria mecanismos de proteo de acesso arquivos
em dois nveis:
Como um arquivo pode ser usado.
Quem pode usar um arquivo especfico.


QNX

Todo arquivo possui atributos intrnsecos que se
aplicam a todos usurios, inclusive o dono do
arquivo:
read
write
append
execute
modify

QNX

Alm disso, um arquivo possui permisses que
restringem o acesso a usurios em particular ou a
grupo de usurios.
O atributo modify a chave de todo o mecanismo e
deve ser guardado cuidadosamente.
Para o QNX, usurio um par ordenado de
nmeros: { grupo, membro }. Cada nmero deve
estar entre 0 (zero) e 255 inclusive.


QNX

Atributos e permisses criam chamadas de proteo
ao redor do arquivo.

Arquivo
Dono
Grupo
Usurios
QNX

Diretrios so protegidos da mesma maneira, mas possuem
pequenas diferenas nos atributos e permisses:
read
create
block
modify
Um determinado arquivo visto pelo programador como uma
sequncia de bytes.
Uma operao em um arquivo , quase sempre, uma operao de
dois passos:
Mover o apontador para a posio desejada (seek).
Ler ou escrever um ou mais bytes.
Se o primeiro passo omitido, o acesso ao arquivo sequencial.

QNX

Dispositivos
Para o QNX, qualquer perifrico considerado um
device.
Device so conhecidos pelo QNX pelo seu nome
So gerenciados pelo processo Dev.
Para inicializar:
/bin/Dev &
QNX

Dev.par &
Dev.par -b 2 -n Laser &
Estes comandos iro criar um dispositivo chamado /dev/par1
em LPT1 e outro /dev/laser em LPT2
Dev.par -O 30000 &
Dispositivo paralelo criado em memria com buffer de sada
de 30K

Driver Descrio
/bin/Dev.con Driver de console
/bin/Dev.par Driver de impressora paralela
/bin/Dev.ser Driver de dispositivo serial
/bin/Dev.pty Pseudo driver tty
QNX
O QNX permite a criao de consoles virtuais. Isto permite a
execuo de vrias aplicaes full-screen simultneas no
mesmo nodo.
Dev.con n 6 &
Inicializa driver Dev.con com 6 consoles virtuais. Para
acessar as consoles:
<CTRL> <ALT> <1> - Console 1
<CTRL> <ALT> <2> - Console 2
<CTRL> <ALT> <6> - Console 6
<CTRL> <ALT> <ENTER> - Muda de console
sequencialmente
QNX

Rede Local
A rede do QNX, uma rede que atende s normas
de padronizao de rede IEEE 802. baseado em
troca de mensagens que permite acesso a
recursos em qualquer lugar de uma rede.
O acesso aos recursos da rede podem ser feitos de
forma implcita (o QNX procura uma tarefa ou
arquivo especfico ) ou explcita.

QNX

Um programador deve ficar atento s seguintes
caractersticas da rede:
A diferena de tempo na troca de mensagens entre
nodos diferentes e tarefas no mesmo nodo.
A possibilidade do nodo com o qual comunicamos
desligar.
Quando uma tarefa envia uma mensagem para
uma remota, o QNX cria uma tarefa virtual em
ambos os nodos, representando a tarefa que envia
e a tarefa que recebe a mensagem. A tarefa que
envia responsvel por estabelecer o circuito
virtual.
QNX

Identificador lgico de nodo
Em todos os nodos da rede QNX so atribudos um
nodo lgico representado por um nmero inteiro,
positivo, sequencial e ininterrupto e exclusivo, a
partir de 1.
Identificador lgico de rede
Os nodos so ligados atravs de uma ou mais
redes fsicas. Cada rede um link de comunicao
separada. Redes como nodos so atribudos Ids de
rede lgica que deve ser exclusivo. Uma nica
rede, ser rede ID 1, uma segunda ser rede ID 2.
e assim por diante.


QNX

Identificador fsico de nodo
Os processos QNX utilizam identificadores lgicos para se
comunicar com outros nodos, as placas de rede se
comunicam com os identificadores fsicos. Este identificador
est contido dentro da placa e deve ser nico dentro de uma
rede.
Placa de rede Ethernet
O identificador fsico de 48 bits de comprimento e nica no
mundo, a fim de estar em conformidade com o padro IEEE
802. Exemplo:
00 Ab 04 33 54 cd (hexa)

QNX

Driver
Configurar uma rede basicamente envolve a
instalao da placa de rede em seu computador e
conectar a placa atravs de um cabo no
switch/hub, que recebe cabos de outros
computadores. Alm da placa de rede necessrio
o driver de rede QNX que a suporta. Todos os
drivers esto documentados no Utilities Reference.
Os nomes comeam com o prefixo Net.

QNX

Mapeamento da rede
Este mapeamento definido no arquivo
/etc/config/netmap. Cada linha define ID nodo
lgico, ID rede e identificador fsico. Exemplo:
3 2 00Ab04 3354cd
identificador fsico
identificador da rede
identificador lgico



QNX

Mapeamento de vrias redes
Para definir um nodo que tenha mais de uma placa de rede,
deve-se adicionar duas entradas no netmap. Por exemplo, se
o nodo 3 estiver conectado a duas redes diferentes:



Rede1
Rede2
Nodo lgico Rede lgica Endereo placa rede (nodo fsico)
3 1 Nodo fsico 1
3 2 Nodo fsico 2
Nodo 1 Nodo 2 Nodo 3
QNX

Toda vez que o netmap for editado e alterado, a tabela em
memria da rede, tem que ser atualizado, com o comando
netmap -f
Tambm o arquivo /etc/config/netmap tem que ser extendido
toda rede.
cp /etc/config/netmap //nodo/etc/config/netmap
No sysinit.nodo tem que ter os drivers das duas placas de
rede
Net & - Gerenciador de rede
Net.ether1000 & - drivers Ethernet da rede 1
Net.xxx 2 -l & - driver da rede2



QNX

Comunicao entre tarefas
a principal caracterstica do QNX. Todos os servios do sistema
operacional, device drivers e aplicaes dependem fortemente do
IPC (inter-task process communication).
O QNX possui 6 mecanismos fundamentais para a troca de
informaes entre tarefas:
Mover o apontador para a posio desejada (seek).
Acesso direto memria compartilhada
Arquivos
Mensagens
Filas de mensagens
Ports
Excees

QNX

Memria compartilhada
As tarefas devem estar no mesmo nodo.
Sincronizao entre tarefas.



A
B
C
QNX

Arquivos compartilhados
Problemas de sincronizao
Podem estar localizados em qualquer nodo.
So mantidos aps falhas de energia
File
A
B
QNX

Mensagens
Em uma mensagem, os dados so copiados do espao de
endereamento da primeira tarefa para o espao da segunda.
Operaes bsicas em uma troca de mensagens: send,
receive, reply. Existe variaes onde, por exemplo, uma tarefa
pode receber parte de uma mensagem.
Outras variaes incluem o recebimento de uma mensagem
apenas se j houver uma mensagem a ser recebida, e o
relaying que o envio de uma mensagem para outra tarefa
sem alterar o tid da tarefa que, primeiramente, enviou a
mensagem.



QNX




Filas
As filas so estruturas de dados localizados em uma tarefa
intermediria. Esta tarefa intermediria guarda as mensagens
nas filas e envia um reply imediatamente tarefa que enviou
a mensagem.

A
B C
A
B
QNX

Ports
Ports so usados para uma sincronizao rpida e simples entre
tarefas e entre tarefas e rotinas de interrupo.
Os ports so conhecidos por todas tarefas de um mesmo nodo.
Os ports so numerados ( 1 a pelo menos 32 ) e possuem
basicamente dois estados: livre e ocupado.
Tres operaes bsicas podem ser executadas em um port:
attach
detach
signal


QNX


signal

attached
port

signal
A
B
C
2
QNX

Excees
Elas oferecem uma forma de comunicao
assncrona. So eventos anormais e podem
interromper o fluxo de execuo normal de uma
tarefa. Dezesseis excees so reservadas para o
QNX e podem ser usadas por tarefas de usurios.
Uma funo do sistema pode ser chamada para
permitir que uma tarefa gerencie suas prprias
excees.
Excees devem ser tratadas com especial
ateno porque os seus efeitos so colaterais.
QNX

Nomes
O nome uma referncia simblica a um
determinado recurso.
Atravs do uso de nomes, o QNX obtm um certo
grau de transparncia no acesso a seus recursos.
Um nome tem um escopo definido, pode ser global
ou local.
Para que o nome de uma tarefa seja conhecido por
outras tarefas, ele deve ser registrado em um
dicionrio do sistema.