23
Sistema operacional de tempo-real Origem: Wikipédia, a enciclopédia livre. O Robô motorizado de pesquisa a Marte tem embutido Sistemas Operacionais de Tempo- Real Um Sistema Operacional de Tempo Real (RTOS da sigla anglo-saxónica Real Time Operating System) é um sistema operacional/operativo destinado à execução de múltiplas tarefas onde o tempo de resposta a um evento (externo ou interno) é pré-definido; não importando, como é comum pensar-se, se a velocidade de resposta é elevada ou não. Esse tempo de resposta é chamado de prazo da tarefa e a perda de um prazo, isto é, o não cumprimento de uma tarefa dentro do prazo esperado, caracteriza uma falha do sistema. Outra característica dos sistemas de tempo real é a sua interação com o meio ao redor. Os STR tem que reagir, dentro de um prazo pré-definido, a um estímulo do meio. Por exemplo, em um hospital, o sistema que monitora os batimentos cardíacos de um paciente deve alarmar os médicos caso haja alteração nos batimentos. Outro aspecto importante dos STR é a previsibilidade. O sistema é considerado previsível quando podemos antecipar seu comportamento independentemente de falhas, sobrecargas e variações de hardware. 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

Sistema Operacional de Tempo

Embed Size (px)

Citation preview

Page 1: Sistema Operacional de Tempo

Sistema operacional de tempo-realOrigem: Wikipédia, a enciclopédia livre.

O Robô motorizado de pesquisa a Marte tem embutido Sistemas Operacionais de Tempo-Real

Um Sistema Operacional de Tempo Real (RTOS da sigla anglo-saxónica Real

Time Operating System) é um sistema operacional/operativo destinado à execução

de múltiplas tarefas onde o tempo de resposta a um evento (externo ou interno) é

pré-definido; não importando, como é comum pensar-se, se a velocidade de

resposta é elevada ou não. Esse tempo de resposta é chamado de prazo da tarefa e

a perda de um prazo, isto é, o não cumprimento de uma tarefa dentro do prazo

esperado, caracteriza uma falha do sistema. Outra característica dos sistemas de

tempo real é a sua interação com o meio ao redor. Os STR tem que reagir, dentro

de um prazo pré-definido, a um estímulo do meio. Por exemplo, em um hospital, o

sistema que monitora os batimentos cardíacos de um paciente deve alarmar os

médicos caso haja alteração nos batimentos. Outro aspecto importante dos STR é a

previsibilidade. O sistema é considerado previsível quando podemos antecipar seu

comportamento independentemente de falhas, sobrecargas e variações de

hardware.

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]

Page 2: Sistema Operacional de Tempo

1   Filosofias de desenho

2   Escalonamento

3   Sistemas de tempo-real críticos e Não-Críticos

4   Comunicação entre tarefas, sincronização e partilha de recursos

o 4.1   Mascaramento temporário / Desabilitar interrupções

o 4.2   Semáforos binários

o 4.3   Mensagens

5   Exemplos de RTOS

6   Referências

[editar]Filosofias de desenho

Existem tipicamente duas arquiteturas:

O desenho baseado no evento, ou escalonamento prioritário, alterna as tarefas

somente, quando uma tarefa de maior prioridade necessita de ser executada,

denominando-sepreemptividade.

O desenho baseado na partilha de tempo alterna as tarefas segundo os tiques do

relógio do processador.

O desenho que se baseia na partilha de tempo, alterna entre tarefas mais

frequentemente daquilo que é realmente necessário, no entanto dá a estas a ilusão

de terem o monopólio do processador.

Os processadores mais antigos, necessitavam de muitos ciclos de relógio para

alternarem entre tarefas, sendo que nesse intervalo de tempo não executavam

nada. Então os RTOS dessa época tentavam minimizar o desperdício de tempo do

processador através da diminuição de alternância entre tarefas. Os processadores

mais recentes demoram muito menos tempo para mudarem de uma tarefa para

outra. Quase todos os RTOS de hoje em dia implementam uma junção destes dois

tipos de desenhos.

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

Os algoritmos de escalonamento desses sistemas visam, principalmente, satisfazer

os requisitos temporais das tarefas. Como cada sistema implementa, na maioria das

vezes, algoritmos de escalonamento diferentes, alguns são aptos para

Page 3: Sistema Operacional de Tempo

determinadas tarefas enquanto outros são melhores para outras aplicações.

O RTLinux, utilizado nas indústrias para controle e automação, permite que um

programador escreva seu próprio algoritmo de escalonamento.

Os algoritmos de escalonamento dos STR podem ser classificados em estáticos e

dinâmicos. O primeiro é utilizado apenas em situações onde o trabalho a ser

realizado e seus requisitos temporais são conhecidos previamente. O algoritmo

estático mais implementado é o escalonamento por taxas monotônicas (rate

monotonic scheduling – RMS).

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.

Os algoritmos de escalonamento dinâmicos não atribuem prioridades fixas aos

processos. As decisões de escalonamento são tomadas em tempo de execução e as

prioridades dos processos podem mudar. Os critérios para essas decisões variam de

algoritmo para algoritmo. O algoritmo de escalonamento dinâmico mais utilizado é

o “prazo mais curto primeiro” (Earliest Deadline First – EDF).

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.

[editar]Sistemas de tempo-real críticos e Não-Críticos

Um caça F-16 tem embutido Sistemas de Tempo Real rígidos

Os STR são classificados, basicamente, em:

- Críticos (hard RTS - também chamados de rígidos)

- Não-Críticos (soft RTS - também chamados de moderados)

Page 4: Sistema Operacional de Tempo

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.

O STR Crítico é aquele que tem um comportamento determinístico, ou seja, o prazo

para execução de uma tarefa (deadline) não pode ser violado. Se o sistema de um

freio ABS, por exemplo, falhar ou demorar demais para responder, uma pessoa

poderá se machucar. Essa classe de STR tem que ser ultraconfiável, ou seja, o

tempo médio entre falhas tem que ser maior que 10 elevado a 9 horas. Outros

exemplos de STR Rígido são: o sistema embebido de navegação de uma aeronave,

o sistema embebido de proteção de linhas de alta tensão. Em ambos os exemplos,

se o sistema falhar, pessoas poderão se machucar.

O STR Não-Crítico é aquele que também tem o tempo como parâmetro

fundamental, mas uma falha é aceitável. O sistema que funciona em um leitor

de DVD não é crítico, pois o não cumprimento de uma tarefa em resposta e

um evento em um determinado intervalo de tempo não provoca danos irreversíveis.

Ao contrário dos sistemas críticos, esses sistemas normalmente trabalham com um

grande volume de dados.

Em um STR rígido os cálculos efetuados pelo processador depois de findado o prazo

da tarefa são pouco ou nada úteis; já nos STR moderados a utilidade dos dados

lidos pelo processador e dos cálculos efetuados não é considerada nula depois do

prazo da tarefa terminar

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]Comunicação entre tarefas, sincronização e partilha de recursos

Page 5: Sistema Operacional de Tempo

A partilha de recursos é delicada de se usar num ambiente multitarefas, como tal

um cuidado acrescido deve ter-se em consideração. Quando uma tarefa está a

utilizar um dado recurso, a ler, ou a escrever, convém bloquear as outras tarefas de

utilizarem esse mesmo recurso; se tal não for feito os resultados podem ser

imprevisíveis. Os métodos utilizados para uma eficiente partilha de recursos

incluem:

Mascaramento  temporário / Desabilitar interrupções

Semáforos binários

Mensagens trocadas

[editar]Mascaramento temporário / Desabilitar interrupções

O mascaramento temporário consiste em desabilitar temporariamente os serviços

de atendimento às interrupções efectuados pelo processador. Enquanto as

interrupções estão desabilitadas, uma tarefa pode correr uma secção crítica de uma

dado programa embebido, sem ser interrompida, ou seja obtém temporariamente o

monopólio de uma dado recurso. Como tal, o código inserido numa secção crítica

deve ser curto, e deve durar poucos ciclos de relógio; se tal não for feito, as rotinas

de interrupção terão de esperar algum tempo até serem atendidas, o que provoca

um aumento da latência de interrupção.

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

Surgem no entanto alguns problemas relacionados com os semáforos binários,

entre os quais a prioridade invertida e o entrave.

Na prioridade invertida uma tarefa de alta prioridade é obrigada a esperar

porque uma tarefa de baixa prioridade bloqueou um semáforo. Se uma tarefa de

baixa prioridade bloquear um semáforo, impede que uma tarefa que verifica o

estado desse semáforo, seja executada, mesmo sendo de prioridade superior.

Um solução pode ser, atribuir temporariamente uma prioridade elevada, à tarefa

que está a bloquear o semáforo, por forma a que esta desimpeça o recurso o mais

rapidamente possível.

Page 6: Sistema Operacional de Tempo

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

Outra forma de partilha de recursos assenta no envio de mensagens. Neste

paradigma, um recurso específico é gerido por apenas uma tarefa, e as outras

tarefas interrogam sobre o estado do recurso através de mensagens. Normalmente

o sistema que assenta na troca de mensagens não causa entraves, e tem um

comportamento mais estável que o sistema baseado noS semáforos.

[editar]Exemplos de RTOS

X-Real Time Kernel - um STR desenvolvido pela eSysTech voltado a processadores

ARM [1] http://www.esystech.com.br

FreeRTOS - um RTOS de código aberto e que já foi portado para diversas

plataformas (ARM, MSP430, PIC, etc). Veja mais em: http://www.freertos.org/

QNX - RTOS comercial bastante utilizado em aplicações

embarcadas. http://www.qnx.com

RTA-OSEK - Um RTOS voltado a aplicações

automotivas. http://en.etasgroup.com/products/rta/rta_osek_in_detail.shtml

AIX - Advanced Interactive eXecutive - Uma versão do Unix executados em

computadores de médio porte da IBM. [2] http://www.ibm.com/aix

AMX - um STR fornecido pela KADAK [3] http://www.amx.com

CMX - fornecido pela CMX Company [4] http://www.cmx.com

Sistemas Operativos de Tempo Real

Conteúdo

1. Introdução2. Sistemas operativos3. Kernel de tempo real

Page 7: Sistema Operacional de Tempo

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 kernel5. Serviços operativos de TR comerciais6. Fontes de informação

 

 

Sistemas Operativos de Tempo Real

 

Introdução

    Sistemas de tempo real são sistemas cujas características dependem do cumprimento

de requisitos temporais e lógicos e onde as consequências do não cumprimento desses

mesmos requisitos podem causar prejuízos nefastos, como sejam a segurança de

pessoas. Nesta perspectiva, um Sistema Operativo de Tempo Real (SOTR) é uma

aplicação multitarefa 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.

    O uso de SOTR simplifica o projecto de um sistema. De um modo geral, um sistema

pode sempre ser decomposto num conjunto de processos. A função do SOTR é gerir

esses processos atribuindo-lhes "espaço" para que cada um deles execute, sem que isso

destrua a integridade temporal do sistema, isto é, prioridade para os processos críticos.

    De alguma forma, as duas palavras sublinhadas anteriormente sugerem o âmbito no

qual reside a essência de SOTR:

Page 8: Sistema Operacional de Tempo

gerir prioridades,  Escalonar!

 

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.

 

Kernel de Tempo Real

 

    Multitarefas

Multitarefas é o processo que consiste em escalonar e distribuir o tempo do CPU entre várias/diferentes tarefas; um CPU único permite realizar diferentes tarefas sequenciais.

Page 9: Sistema Operacional de Tempo

O processo de multitarefas permite-nos estruturar uma aplicação num conjunto de tarefas mais pequenas e dedicadas que partilham o processador. Um dos aspectos mais importantes do processo de multitarefas é o facto de permitir ao programador da aplicação de lidar com situações mais complexas que são inerentes em aplicações de tempo real. Kernel’s de tempo real permitem que se torne mais fácil de realizar e de manter os programas de aplicação. Uma tarefa consiste num programa único que supõe estar a usar o CPU sozinho. A realização de uma aplicação de tempo real envolve a divisão do trabalho que será feito em tarefas que serão responsáveis por uma porção do problema.

 

    Kernel

 O kernel é a parte de um sistema de multitarefas que é responsável pela realização de tarefas e pela comunicação entre tarefas. Quando o Kernel decide correr uma tarefa diferente ele salvaguarda o contexto das tarefas correntes (ié, os registos do CPU) na stack destas tarefas; para cada uma das tarefas existe um espaço de memória dedicado à stack respectiva. Ao mudar de tarefa, é feito um updatedo conteúdo da actual e o conteúdo da stack da nova tarefa é resumido, assim como o código respectivo. O endereço da stack, em conjunto com outra informação é guardado numa estrutura de dados intitulada Task Control Block. O conjunto de todas as TCB’s é depois gerido pelo SOTR.

 

    Interrupções

 Um aspecto importante nos sistemas de tempo real é 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 desactiva todos os pedidos de interrupção quando está a tratar 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 mais pequena possível é necessário que as rotinas de interrupção (ISR's) sejam também pequenas. Um valor típico para o tempo máximo durante o qual as interrupções estão inibidas é 50us.

 

    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

Page 10: Sistema Operacional de Tempo

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 preentivoNum escalonador deste tipo, se um evento transforma uma tarefa de prioridade mais elevada em ready to run, a tarefa actual é imediatamente suspensa e o CPU é cedido a esta tarefa. A maior parte dos SOTR emprega este tipo de escalonamento porque permite uma maior rapidez de resposta a eventos críticos.

 

Serviços do kernel

Um dos serviços do kernel de tempo real mais comum é a gestão de semáforos. Um semáforo é um protocolo usado para controlo do acesso a recursos partilhados, assinalar a ocurrência de eventos ou sincronizar tarefas. Genericamente, é uma permissão que uma tarefa adequire para continuar a executar. Se o semáforo já estiver em uso, a tarefa é suspensa até que o semáforo seja libertado. A vantagem é que uma tarefa suspensa não gasta tempo do CPU.

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

Outro serviço é a troca de mensagens entre mensagens ou entre mensagens e o ISR. Os dois tipos deste serviço mais comuns são o message mailbox e o message queue.

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

 

Sistemas Operativos de TR comerciais

Existem actualmente vários produtos deste género, para plataformas de 8, 16 e 32 bit. Alguns destes produtos incluem kernel de tempo real, gestor de entrada/saída, interfaces gráficas do tipo windowz , um sistema de ficheiros, controlo de rede, Compiladores multi-plataforma, etc.

Page 11: Sistema Operacional de Tempo

A grande aposta é, no entanto, em sistemas embebidos de pequena dimensão. São utilizados em controlo de máquinas, intrumentação inteligente, robots, periféricos de computadores, equipamento de telecomunicações, etc. Geralmente, são construídos em plataformas de 8 bit. Com uma capacidade de endereçamento de 64K, não podem suportar SOTR de grande dependência de memória. Existem sistemas comerciais que requerem apenas 1 a 3K de ROM. Alguns permitem até o controlo do tamanho da stack das tarefas, caso-a-caso, para permitir a redução da RAM necessária para a aplicação. Outras vantagens destes sistemas são:

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;

tudo isto à custa de um acréscimo de apenas 1 a 5% do tempo de processamento do CPU. Os benefícios de usar SOTR podem ser reconhecidos pela capacidade de desenvolver um sem número de aplicações que beneficiam dos seus atributos sem que haja necessidade de alterar o software.

 

Fontes de informação

De entre os projectos de desenvolvimento com divulgação na web seleccionaram-se os seguintes pela sua relevância e pela focagem dos aspectos relativos a SOTR. Encontram-se ordenados pela quantidade de informação disponibilizada.

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.

The Maruti Project   - Projecto do departamento de ciencias da computação da universidade de Maryland - USA. Menos suporte mas informação qb. Mais do que o que lá está só através do contacto com os responsáveis do projecto.

LinuxWorks   - Embeeded Linux - Demasiado comercial mas um bom exemplo de como se faz actualmente uma grande aposta em sistemas embebidos

Sistemas de Tempo Real

Neste artigo descrevemos os conceitos de um Sistema de Tempo Real e as principais motivações para sua utilização, definindo sua arquitetura básica e critérios para a escolha de um Sistema Operacional de Tempo Real disponível no mercado.

Sérgio Prado

Page 12: Sistema Operacional de Tempo

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.

Um Sistema de Tempo Real é, portanto, o software que gerencia os recursos computacionais do microprocessador, com o objetivo de garantir que todos os eventos sejam atendidos dentro de suas restrições de tempo, e gerenciados da forma mais eficiente possível. O software responsável pelo gerenciamento dos recursos computacionais também é chamado de Kernel (ou núcleo) do Sistema de Tempo Real, e conhecido no mercado como RTOS (Real-Time Operation System) ou Sistema Operacional de Tempo Real. Para entendermos a importância de um Sistema de Tempo Real, precisamos entender o conceito de restrição de tempo para eventos ou tarefas computacionais.

Sistemas em Tempo RealContents

 [hide]

1   Sistemas de Tempo Real:

o 1.1   Sistema Operacional de Tempo Real (SOTR):

o 1.2   Diferença entre um SO convencional e um SOTR:

o 1.3   Kernel de Tempo Real

1.3.1   Definições:

o 1.4   Tipos de Escalonador

1.4.1   Escalonador não-preemptivo

1.4.2   Escalonador preentivo

o 1.5   Funcionamento de um Sistema de Tempo Real

o 1.6   Deadline

o 1.7   Linux em Tempo Real

[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,

Page 13: Sistema Operacional de Tempo

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:

-> Ser multitarefa;

-> Aceitar interrupções;

-> Possuir um escalonador que lide com tarefas críticas.

[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]

Page 14: Sistema Operacional de Tempo

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

Page 15: Sistema Operacional de Tempo

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.

O que é a Tecnologia de Tempo Real?

Visão geral

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

1. Introdução aos Sistemas de Tempo Real

2. Desempenho em Tempo Real

3. Controle em Tempo Real

4. Resposta a Eventos em Tempo Real

Page 16: Sistema Operacional de Tempo

5. Tecnologia de Tempo Real da NI

Introdução aos Sistemas de Tempo Real

Os sistemas operacionais de tempo real foram projetados para resposta a eventos e sistemas de controle de malha fechada. Aplicações de resposta a eventos, como um sistema de airbag automotivo, necessitam de uma resposta a um estímulo em um determinado espaço de tempo. Sistemas de controle de malha fechada, como um sistema de controle de velocidade automotiva, processam continuamente o feedback do sistema para ajustar uma saída. Ambos os sistemas exigem a realização de uma operação dentro de um tempo determinado. Esse tipo de desempenho é chamado de determinístico.

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.

Page 17: Sistema Operacional de Tempo

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.

Desempenho em 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á.

Controle em Tempo Real

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.

O determinismo mede a consistência do intervalo de tempo especificado entre os eventos. Muitos algoritmos de controle, como o PID, requerem um comportamente muito determinístico. Por exemplo, um elevador move-se gradualmente para o andar correto por causa do comportamento determinístico da malha de controle. Sem o determinismo, o evelador chega ao andar correto, porém sem estabilidade.

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

Page 18: Sistema Operacional de Tempo

entre qualquer atraso individual de tempo e o atraso de tempo desejado em um sistema, como mostrado na Figura 2.

Figura 2. Um Exemplo de Diagrama de Jitter

Resposta a Eventos em Tempo Real

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.

Tecnologia de Tempo Real da NI

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:

· Desenvolver rapidamente aplicações determinísticas com programação gráfica ou ANSI C

· Criar facilmente controles distribuídos e sistemas de monitoração

· Eliminar o tempo gasto integrando diversas entradas e saídas

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.

Page 19: Sistema Operacional de Tempo

Figura 3. A Tecnologia de Tempo Real da National Instruments