Академический Документы
Профессиональный Документы
Культура Документы
Um RTOS facilita a concepção de um sistema em tempo real, mas não garante que
o resultado final seja um sistema de tempo real, para tal é necessário que o
programa nele implementado tenha sido corretamente desenvolvido. Um RTOS não
tem que ter necessariamente um elevado débito nas saídas, ou um elevado número
de saídas, no entanto, tem que garantir que certas tarefas sejam executadas em
um determinado intervalo de tempo. Um RTOS é mais eficaz e é mais valorizado
pela forma previsível e rápida na resposta a um evento, do que pela quantidade de
dados que processa. Os fatores chave em um STR são, então, fornecer latências de
interrupções e de alternância de tarefas mínimas.
Índice
[esconder]
• 1 Filosofias de desenho
• 2 Escalonamento
o 4.3 Mensagens
• 5 Exemplos de RTOS
• 6 Referências
[editar]Filosofias de desenho
Existem tipicamente duas arquiteturas:
[editar]Escalonamento
Como os demais sistemas operacionais, os RTOS têm uma fila onde se inserem
todas as tarefas que estão prontas para serem executadas. Essa lista é conhecida
como fila de prontos.
O RMS atribui prioridades aos processos dependendo do número de vezes que eles
serão executados por segundo. Quanto maior a freqüência de execução, maior a
prioridade. O escalonamento por taxas monotônicas é preemptivo.
O EDF escolhe na fila de prontos o processo que tenha o prazo de vencimento mais
curto. Se chegar na fila um processo que tenha um prazo menor ainda, ocorrerá
preempção. Ao contrário do RMS, o EDF não necessita que os processos sejam
periódicos. O EDF tem a grande vantagem de ser capaz de manter a CPU todo o
tempo ocupada; porém o algoritmo é extremamente complexo.
A severidade da pena pelo não cumprimento das tarefas num determinado intervalo
de tempo é o fator que os distingüe.
Os leitores de CD e de DVD possuem Sistemas de Tempo Real moderados.
Os RTS rígidos são inflexíveis, pois o prazo da tarefa (deadline) não pode ser
ultrapassado. Já os RTS moderados oferecem alguma flexibilidade no não
cumprimento de prazos das tarefas que executam. Em um RTS moderado pode-se
efetuar um cálculo estatístico, para obter o grau de validade e utilidade dos dados
lidos depois do prazo da tarefa terminar.
[editar]Semáforos binários
Um semáforo binário tem os estados de bloqueado ou desbloqueado. É usado para
partilhar recursos, e para comunicação entre tarefas. Enquanto uma tarefa utiliza
um dado recurso pode bloquear um semáforo; outra tarefa antes de utilizar esse
recurso verifica o estado do semáforo, e se estiver bloqueado, não utiliza o recurso.
Pode esperar que, o recurso fique liberto, ou pode executar outras funções.
Num entrave, duas ou mais tarefas bloqueiam uma série de semáforos binários e
esperam infindavelmente pelo desbloqueio de outros semáforos, criando assim
ciclos infinitos. Se uma tarefa A bloquear o semáforo f1 e depois esperar pelo
desbloqueio do semáforo f2, e uma tarefa B estiver bloqueada no semáforo f1 para
desbloquear o semáforo f2, cria-se um entrave
[editar]Mensagens
[editar]Exemplos de RTOS
X-Real Time Kernel - um STR desenvolvido pela eSysTech voltado a processadores
ARM [1] http://www.esystech.com.br
Conteúdo
1. Introdução
2. Sistemas operativos
3. Kernel de tempo real
3.1 Multitarefas
3.2 Kernel
3.3 Interrupções
3.4 Escalonador
3.4.1 não-preemtivo
3.4.2 preemtivo
4. Serviços do kernel
5. Serviços operativos de TR comerciais
6. Fontes de informação
Introdução
Sistemas Operativos
Um Sistema Operativo (SO) é um programa que controla a execução dos programas
de aplicação dos utilizadores do sistema de computação. O SO fornece uma plataforma
virtual de alto nível ao programador que esconde os detalhes do hardware faciitando o
desenvolvimento de programas que usam os recursos do sistema. Deste modo, podemos
afirmar que o sistema de computação se encontra distribuído por camadas da seguinte
forma:
Aplicações do programador
Sistema Operativo
Hardware do sistema
Figura 1
Os sistemas que não usam SOTR são geralmente esquematizados conforme se mostra
na figura 1. A estes sistemas chamamos foreground/background. Uma aplicação
consiste num loop infinito que pede a cada modulo de aplicação para realizar/executar
as operações que se desejam. Os modulos são executados sequencialmente
(background) com rotinas do serviço de interrupções (ISRs) que lidam com eventos
asincronos (foreground). Operações críticas deverão ser executads pelo ISRs de modo a
garantir que estas serão executadas o mais rápido possível (também conhecido por "best
effort"). Devido a este facto, ISRs são tendencialmente mais demoradas do que
deveriam ser.A informação para um módulo background que é acessível por uma ISR só
será processada quando a rotina background estiver apta para a executar. Neste caso a
latência depende de quanto tempo o loop em background demora a ser executado.
Multitarefas
Kernel
Interrupções
Escalonador
Também conhecido por dispatcher , é a parte do Kernel responsável por decidir qual a
tarefa que vai ser processada a seguir pelo CPU. Para a maior parte dos SOTR, o kernel
é baseado numa estrutura de ordem de prioridade: cada tarefa tem uma prioridade
associada de acordo com a sua importância. Deste modo, o controlo do CPU será
atribuido à tarefa com prioridade mais elevada que está pronta a correr (runnable).
Existem dois tipos:
Escalonador não-preentivo
Compete à tarefa que está a correr fazer algo para libertar o CPU. Quando uma
tarefa com prioridade mais elevada está pronta a ser executada (ready to run), ainda
que o ISR a faça pronta a correr, os recursos só lhe serão atribuidos quando a tarefa
actual libertar o processador. É necessário que todas as tarefas cumpram limites
temporais de apropriação dos recursos do CPU de modo a que a integridade
temporal do sistema seja mantida, ou seja, a resposta a eventos críticos seja dada
em tempo útil.
Escalonador preentivo
Serviços do kernel
Um outro serviço é o estabelecimento de uma base de tempo que permita a uma tarefa
atrasar-se um determinado número de tick's definidos por essa base de tempo
(ver Noções gerais de Sistemas de Tempo Real, no capítulo 3).
O message mailbox é tipicamente uma variável do tipo apontador que o remetente deixa
na mailbox para o destinatário, sendo o tipo de mensagem acordado entre os
interlocutores.
O message queue é utilizado para enviar mais do que uma mensagem; genericamente,
consiste numa pilha de mailboxes
• baixo preço;
• latência de interrupção reduzida;
• tempo de execução determinístico em todos os serviços do kernel;
• capacidade de gerir pelo menos 20 tarefas em simultâneo;
• criação e eliminação dinâmicas de tarefas;
• serviço de gestão de semáforos
• a definição de timeout's e delay's para os serviços do kernel;
Fontes de informação
Real Time Linux - Na perspectiva de open source que caracteriza este grupo, não se
poderia pedir mais. Desde o código fonte até às FAQ's, está lá tudo.
Sérgio Prado
Os sistemas computacionais estão presentes em diversas áreas do nosso cotidiano e têm evoluído de
forma exponencial nos últimos anos. Novos microprocessadores com novos recursos computacionais,
operando em freqüências maiores, com maior capacidade de memória e várias interfaces de
comunicação de I/O embutidas num único chip, tudo isso a um custo baixo e acessível.
Essa evolução tem aumentado a complexidade dos projetos de sistemas embarcados, que por
conseqüência tem exigido novos níveis de abstração em soluções de software que possam interagir com
o hardware da forma mais eficiente possível. Dentro deste contexto, destaca-se um grupo de sistemas
que são limitados pelo tempo, chamados Sistemas de Tempo Real. Além de executarem as tarefas de
controle e processamento de informações, eles possuem a característica de que suas respostas ao
ambiente devem ser dadas em um tempo hábil o suficiente para que o sistema não entre em um estado
inconsistente.
1.3.1 Definições:
o 1.6 Deadline
[edit]
Sistemas de Tempo Real:
Um sistema de tempo real é um sistema em que o desempenho correto de uma
aplicação é avaliada não somente pela sua resposta correta, mas também pelo
tempo gasto para obter tal resposta. Um sistema de tempo real tem sempre que
cumprir prazos, sendo limitado pelo tempo de resposta esperado. O tempo de
resposta de uma aplicação é o intervalo de tempo entre a recepção de um estímulo,
normalmente vindo de uma interrupção de hardware, até quando a aplicação
produz um resultado baseado no estímulo. Estes resultados podem ser atos como
abrir uma válvula em uma aplicação de controle industrial, desenhar um quadro de
gráficos em uma simulação visual ou processar um pacote de dados numa
aplicação de aquisição de dados.
[edit]
Sistema Operacional de Tempo Real (SOTR):
Um sistema operacional de tempo real é uma aplicação multitask na qual várias
tarefas críticas devem ser processadas em simultâneo. O sistema deve assegurar
que as tarefas críticas sejam tratadas em tempo útil. Essencialmente, um SOTR faz
duas coisas: definir prioridades e escalonar as tarefas de acordo com essas
prioridades.
[edit]
Diferença entre um SO convencional e um SOTR:
A principal diferença entre os dois tipos de sistemas é que o SO convencional
tentará realizar operações críticas da maneira mais rápida possível (“best effort”),
geralmente esperando a instrução anterior terminar de ser realizada, enquanto que
o SOTR garantirá a realização deste serviço no período determinado para a
realização do mesmo.
[edit]
Kernel de Tempo Real
Um kernel de um SOTR deve apresenta as seguintes características:
[edit]
Definições:
Multitarefa: processo que consiste em escalonar e distribuir o tempo do CPU entre
várias tarefas, podendo um único CPU realizar tarefas seqüenciais.
Interrupções: instrução que deve ser realizada sem uma previsão antecipada,
fazendo com que a CPU mude seu contexto atual para a realização da mesma,
retornando após sua conclusão.
Escalonador: é a parte do Kernel responsável por decidir qual a tarefa que vai ser
processada a seguir pela CPU.
[edit]
Tipos de Escalonador
Para a maior parte dos SOTRs, o kernel é baseado numa estrutura de ordem de
prioridade: cada tarefa tem uma prioridade associada de acordo com a sua
importância. Deste modo, o controle do CPU será atribuído à tarefa com a
prioridade mais elevada que está pronta para ser executada. Dentre os
escalonadores, temos dois tipos:
[edit]
Escalonador não-preemptivo
É de responsabilidade da tarefa que está sendo executada realizar um
procedimento para liberar a CPU. Desta forma, mesmo quando uma tarefa com
prioridade maior que a atual está pronta para ser executada, ela só poderá ocorrer
depois que a anterior indicar a CPU que sua execução já foi concluída. É necessário
que todas as tarefas cumpram limites temporais de apropriação dos recursos da
CPU de modo a garantir a integridade temporal do sistema, sendo possível assim
responder a eventos críticos em tempo hábil.
[edit]
Escalonador preentivo
Num escalonador deste tipo, se um evento tornar uma tarefa de prioridade mais
elevada em pronta para ser executada, a tarefa atual é imediatamente suspensa e
o CPU é cedido a esta tarefa. A maior parte dos SOTRs empregada este tipo de
escalonador porque permite uma maior rapidez de resposta a eventos críticos.
[edit]
Funcionamento de um Sistema de Tempo Real
O aspecto mais importante nos sistemas de tempo real é a execução da tarefa em
tempo hábil. Mas não só o tempo de execução é levado em conta nesse cálculo do
tempo, há também a chamada latência: o tempo entre um pedido de interrupção e
o instante em que o código para lidar com esse pedido começa a ser processado.
Um SOTR desativa todos os pedidos de interrupção quando está tratando uma
tarefa crítica. Isto impede que sejam identificados pedidos de interrupção enquanto
não acabar a execução do código em questão. Para que a latência de interrupção
seja o menor possível é necessário que as rotinas de interrupção sejam também
pequenas. Um valor típico para o tempo máximo durante o qual as interrupções
ficaram inibidas é de 50 us.
[edit]
Deadline
Deadline é o tempo máximo para o sistema realizar uma determinada ação, em
função de um determinado estímulo a partir do qual se contabiliza a deadline.
Um deadline é considerado hard se o resultado de ser ultrapassado o tempo limite é
catastrófico, como a mudança de cores de um semáforo, os controles dos estímulos
de um marcapasso, etc. Nos sistemas em que há pelo menos uma hard deadline
são chamados de Hard Real Time.
Os sistemas opostos são os chamados softs, que trabalham com o método do “best
effort”, neste caso é suposto que se uma deadline é ultrapassada não ocorrerá
nenhuma catástrofe. Logo, existe uma certa margem de manobra.
[edit]
Linux em Tempo Real
Linux tem desempenho favorável para aplicações normais, mas ele não é
desenhado para resposta determinística. Porém, melhoramentos no kernel estão
disponíveis para ajudar ou garantir o determinismo, exigência básica para um
sistema de tempo real. Desta forma, o Linux não é um sistema operacional real
time porque não pode assegurar sempre um desempenho determinístico e porque
na média e no tempo de pior caso é longe do tempo requerido por muitas
aplicações real time. Um técnica para tornar o Linux um real time system é a
instalação de um novo kernel que atuará em conjunto com o até então utilizado. As
tarefas chegam nesse kernel real time que diferenciará as assinaladas como de
tempo real e as com prioridade normal. Fazendo com que as real time tasks tenham
total prioridade em detrimento das tarefas não críticas.
Vários testes, controles e aplicações de projeto exigem desempenho em tempo real. Esse tutorial analisa
os conceitos básicos de sistemas de tempo real.
Conteúdo
Sistemas de tempo real podem ser classificados como “soft” ou “hard”. Para sistemas de tempo real do
tipo soft, a utilidade de um sistema geralmente é inversamente proporcional ao tempo de resposta após
um determinado prazo ter sido perdido. Por exemplo, quando pressionamos um botão do telefone para
atender uma chamada, a conexão deve ser estabelecida logo após o botão ter sido apertado. Contudo, o
prazo não é tão crítico e pequenos atrasos podem ser tolerados. Sistemas de tempo real do tipo “hard” são
aqueles em que a utilidade do sistema torna-se zero em caso de perda do prazo. Uma unidade de controle
de motores automotivos (ECU - automotive engine control unit) deve processar sinais de entrada e calcular
a temporização da faísca da vela dentro de um prazo. Se houver perda desse prazo, o motor não irá
operar corretamente. A utilidade de uma tarefa após a perda de prazo depende se o sistema de tempo real
é do tipo “soft” ou do tipo “hard”, como mostrado na Figura 1.
Sistemas operacionais como o Microsoft Windows e o MAC OS fornecem uma excelente plataforma para
desenvolvimento e execução de aplicações não críticas de medição e controle. Contudo, por serem
sistemas operacionais projetados para um propósito geral, eles não são ideais para executar aplicações
que necessitem de um desempenho determinístico ou de um maior tempo sem falhas.
Sistemas operacionais de propósito geral são otimizados para executar uma variedade de aplicações
simultaneamente, assegurando que todas aplicações recebam um tempo de processamento. Esses
sistemas operacionais também devem responder a interrupções de periféricos como mouse e teclado. O
usuário tem controle limitado sobre o modo como essas tarefas são manipuladas pelo processador. Como
resultado, tarefas de alta prioridade podem ser interrompidas para que tarefas de baixa prioridade sejam
executadas, fazendo com que seja impossível garantir um tempo de resposta constante para suas
aplicações críticas.
Em contraste, sistemas operacionais de tempo real proporcionam a capacidade de priorizar tarefas, para
que as tarefas mais críticas possam sempre ter controle do processador quando necessário. Essa
propriedade possibilita a criação de aplicações com resultados que podem ser previstos.
Figura 1. Diferença entre tecnologia de tempo real Hard e Soft
Sistemas operacionais de tempo real são necessários quando o processador está envolvido em operações
como controle de malha fechada e tomada de decisão em tempo crítico. Essas aplicações necessitam que
decisões temporizadas sejam feitas baseadas em dados recebidos. Por exemplo, um equipamento de
entradas e saídas amostra um sinal de entrada e o envia diretamente para a memória. Então, o
processador deve analisar o sinal e enviar a resposta adequada ao equipamento de entradas e saídas.
Nessa aplicação, o software deve estar envolvido na malha; portanto, você precisa de um sistema
operacional de tempo real para garantir resposta dentro de um espaço de tempo fixo. Além disso,
aplicações que necessitam de tempo de execução extendido ou operações autônomas são geralmente
implementadas com sistemas operacionais de tempo real.
O equívoco mais comum associado ao desempenho em tempo real é dizer que ele aumenta a velocidade
de execução do programa. Apesar de ser verdade em alguns casos, a aplicação é melhorada
proporcionando temporização precisa e previsível. Com essas melhorias, você pode determinar o tempo
exato quando certo evento ocorrerá.
Com controle em tempo real, é possível monitorar e simular continuamente um sistema físico. Aplicações
de controle em tempo real executam repetidamente uma tarefa definida pelo usuário com um intervalo de
tempo específico entre cada execução. A maioria dos sistemas de controle em tempo real monitora um
sistema físico, comparam o estado atual com o estado desejado e então simulam o sistema físico
baseando-se nessa comparação. O tempo que leva para que essa malha execute é considerado o tempo
de ciclo da malha. O tempo de ciclo da malha de controle varia baseado na complexidade do sistema.
Em todos os sistemas de tempo real há uma quantidade de erro chamada jitter. O jitter é outra maneira de
medir o determinismo de um sistema de tempo real. Você pode calculá-lo como a diferença máxima entre
qualquer atraso individual de tempo e o atraso de tempo desejado em um sistema, como mostrado na
Figura 2.
Com resposta a eventos em tempo real é possível responder a um simples evento dentro de um dado
espaço de tempo. O sistema de tempo real garante algum tempo máximo de resposta a um evento único.
O evento pode ser tanto periódico quanto aleatório. Um exemplo de uma aplicação de resposta a um
evento em tempo real é um sistema de monitoração de segurança. Se uma planta entra em um estado de
perigo, o sistema de tempo real deve responder a este evento dentro de um espaço de tempo garantido.
A latência é usada para descrever o tempo que leva para se responder a um evento. É similar ao
determinismo em aplicações de controle em tempo real. Com resposta a eventos em tempo real, é
garantido o pior caso de latência.
Os módulos LabVIEW Real-Time e LabWindows™/CVI Real-Time são usados para se alcançar execução
determinística confiável em hardware dedicado. Caso haja necessidade de um determinismo maior, o
módulo LabVIEW FPGA, combinado com um hardware que inclua tecnologia de entradas e saídas
reconfiguráveis (RIO – Reconfigurable I/O) oferece resposta de hardware em nanosegundos. Use o
conjunto de software da National Instruments para:
A National Instruments oferece uma variedade de hardware de tempo real que contém um processador
embarcado executando um sistema operacional de tempo real para máxima confiabilidade e desempenho
determinístico. É possível integrar uma vasta gama de entradas e saídas com hardware modular que
possa ser expandido para atender a um grande número de canais para aquisição de dados e controle,
condicionamento de sinais industriais e isolação segura.