You are on page 1of 14

UNIVERSIDADE DO ESTADO DA BAHIA – UNEB

LICENCIATURA EM CIÊNCIA DA COMPUTAÇÃO

SISTEMA OPERACIONAL DE TEMPO REAL

por

DANIEL TOSTA RÊGO

DIAS D’ÁVILA
Março de 2016

1
DANIEL TOSTA RÊGO

SISTEMA OPERACIONAL DE TEMPO REAL

Pesquisa apresentada ao professor


Eliel Mota regente da disciplina
Sistemas Embarcados, como
requisito para nota.

DIAS D’ÁVILA
Março de 2016

2
SUMÁRIO

1. INTRODUÇÃO 05
2. CARACTERÍSTICAS E EXEMPLOS 06
2.1 ALGUMAS ESTRUTURAS COMUNS PARA A TROCA DE
INFORMAÇÕES 07
3. EXEMPLOS 08
3.1 EXEMPLO 1 08
3.2 EXEMPLO 2 09
4. VANTAGENS 13
5. CONSIDERAÇÕES FINAIS 13
REFERÊNCIAS

3
RESUMO

A definição de tempo real em processamento de dados está intimamente


relacionada à expectativa de atender à urgência imposta por todo o processo; ao se
aplicar este conceito às peculiaridades dos sistemas operacionais, implica-se que,
em um RTOS, existe a necessidade de se controlar o tempo para que as exigências
e restrições sejam atendidas, ou seja, cada serviço do sistema operacional
demandará um tempo específico e esperado. O objetivo desta pesquisa bibliográfica
é apresentar os conceitos básicos de um Sistema Operacional de Tempo Real,
conhecido pela sigla inglesa “RTOS”, de Real-Time Operating System, além de
abordar sobre suas características, suas vantagens, apresentar alguns exemplos e
onde podem ser encontrados.

4
1.0 INTRODUÇÃO

Os sistemas operacionais estão cada vez mais presentes nas nossas


atividades cotidianas, tendo como exemplo bem comum o aparelho celular que tira
fotos e tem agenda; outro exemplo bastante corriqueiro são os fornos microondas.
Esses sistemas estão em constante evolução; principalmente nos últimos anos
surgiram novos microprocessadores com novos recursos computacionais, maior
capacidade de memória e várias interfaces de comunicação e tudo isso com um
custo mais acessível. Um sistema operacional (SO) gerencia os recursos de
hardware e hospeda os aplicativos, ele, segundo TANENBAUM (2000, p.15),
“controla todos os recursos do computador e fornece a base sobre a qual os
programas aplicativos podem ser escritos.”
Dentro desta perspectiva tem destaque o sistema operacional de tempo real
que executam as tarefas de processamento e controlam as informações, além de ter
a característica de que suas respostas ao ambiente devam ser dadas em tempo
hábil para que o sistema não entre em estado inconsistente ou inválido.
Segundo MAZIERO (2014, p.13):
O sistema operacional é uma camada de software que opera entre o
hardware e os programas aplicativos voltados ao usuário final. O sistema
operacional é uma estrutura de software ampla, muitas vezes complexa,
que incorpora aspectos de baixo nível (como drivers de dispositivos e
gerência de memória física) e de alto nível (como programas utilitários e a
própria interface gráfica).

O sistema operacional de tempo real (RTOS) também executa essas tarefas,


mas é projetado especialmente para rodar aplicações com extrema precisão e alto
grau de confiabilidade. Isso pode ser especialmente importante para sistemas de
medição e controle. MAZIERO (2014, p. 16), sobre o RTOS afirma:

[...] ao contrário da concepção usual, um sistema operacional de tempo real


não precisa ser necessariamente ultra-rápido; sua característica essencial é
ter um comportamento temporal previsível (ou seja, seu tempo de resposta
deve ser conhecido no melhor e pior caso de operação). A estrutura interna
de um sistema operacional de tempo real deve ser construída de forma a
minimizar esperas e latências imprevisíveis, como tempos de acesso a
disco e sincronizações excessivas.

Segundo Maziero (2014 pgs 15 e 16), são duas as classificações para os


sistemas de tempo real, o soft real-time systems “nos quais a perda de prazos

5
implica na degradação do serviço prestado”, tendo como exemplo o suporte à
gravação de CDs ou à reprodução de músicas, que caso aconteça o atraso do
sistema ocorre a perda da mídia em gravação ou falhas na música que está sendo
tocada. E temos o hard real-time systems quando a perda de prazos pelo sistema
pode perturbar o objeto controlado, com graves consequências humanas,
econômicas ou ambientais, como exemplo temos o controle de funcionamento de
uma turbina de avião a jato ou de uma caldeira industrial.

2.0 CARACTERÍSTICAS

Sistemas operacionais de tempo real ou RTOS (Real Time Operating


Systems) são uma categoria especial de sistemas operacionais. Eles são voltados
para aplicações onde é essencial a confiabilidade e a execução de tarefas em
prazos compatíveis com a ocorrência de eventos externos.
Eles devem atuar basicamente como um sistema de controle, responsável por
responder aos estímulos do ambiente em tempo hábil, deve, também, nas interfaces
de entrada e saída - portas de comunicação entre o sistema de controle e o sistema
controlado -, geralmente neste, são sensores, atuadores, receptores de sinais de
rádio, entre outros; outra ação do sistema operacional de tempo real é o sistema
controlado, que é o ambiente com que o computador interage. Por exemplo, se num
paciente de UTI ocorrer uma variação importante nos batimentos cardíacos, o
monitor cardíaco desse paciente deve ativar um alarme em poucos segundos. Outro
exemplo: se um avião em voo com o piloto automático desviar da rota, o controle do
avião deve corrigir imediatamente essa rota retornando o avião à rota original.
Tempo real é um termo que pode ter significados muito diferentes, dependendo da
velocidade da ocorrência dos eventos de um sistema e dos tempos de resposta
necessários para atender a esses eventos. Há sistemas que podem levar um tempo
muito longo para modificar o seu estado. Em geral os processos térmicos de
aquecimento são lentos. Pode levar dias ou até semanas para esses processos
responderem a determinados estímulos. Nesse caso em particular, um sistema
operacional comum serviria perfeitamente para realizar o controle do processo.

6
Há muitos detalhes num Sistema Operacional de Tempo Real que merecem
ser apresentados. O principal é que as rotinas de processamento em geral são
bastante especializadas e curtas, pois devem executar a sua tarefa no menor
tempo possível. Há um forte paralelismo na execução das atividades e um
estabelecimento de prioridades, onde as atividades mais prioritárias interrompem as
menos prioritárias e assumem o controle do processador. A divisão de tarefas em
rotinas especializadas requer que haja alguma forma de sincronismo ou troca de
informação entre elas, por exemplo, para que seja informado que tarefa já foi
concluída ou não por outra rotina.
O sistema operacional de tempo real deve apresentar a previsibilidade, que é
uma importante propriedade de um sistema em tempo-real, que dita seu
comportamento funcional e temporal que deve ser tão determinístico quanto impõe
as especificações do sistema. Além dessa característica tem-se a confiabilidade,
que está relacionada à exatidão no funcionamento do sistema, ou seja, a falha do
sistema é que pode gerar uma resposta fora do tempo esperado.
O RTOS apresentam, também, as seguintes características:
- Utilizam-se diversos processos concorrentes;
- É preciso escalonar os processos e determinar prioridades;
- Existe necessidade de comunicação (sincronizada) entre os diversos processos;
- Existe necessidade de sincronismo entre processos;
- Existe necessidade de sincronismo com eventos externos
- Necessário lidar com diferentes escalas de arquiteturas, desde pequenos
microprocessadores de 4-bits ou 8-bits, até computadores de grande porte
interligados em rede;
- Possuem forte interação com o ambiente externo.

2.1 ALGUMAS ESTRUTURAS COMUNS PARA A TROCA DE INFORMAÇÕES

- Semáforos ou flags: são definidos bits ou palavras para a sinalização do tipo


booleano (binário 0 ou 1) para a troca de mensagens entre duas rotinas;

7
- Áreas de troca de mensagens, filas ou buffers: memórias temporárias que com
auxílio dos semáforos permitem a transferência de estruturas de dados maiores
entre as rotinas.

Para ilustrar as diversas arquiteturas de tempo real, serão apresentados dois


exemplos bastante simplificados.

3.0 EXEMPLOS

3.1 EXEMPLO 1

Suponhamos que um programa de computador deseje realizar a transmissão


de uma mensagem pela USB. Num sistema comum, ilustrando de uma maneira
simplificada, esse programa monta a mensagem e chama a rotina para a
transmissão e só são retomadas as próximas atividades após o término da
transmissão. Esse tipo de programação é conhecida como programação linear.
No caso de um sistema de tempo real (veja a Figura 1) a sequência de
operações pode ser assim:

Figura 1: Transmissão de caracteres em tempo real simplificada


Para melhor entendimento ficará convencionado que:
 flag "buffer vazio" = 1, significa que não há dados no buffer temporário;

8
 flag "buffer vazio" = 0, significa que há dados novos no buffer temporário.

Programa principal:
 O programa principal inicialmente testa se o buffer temporário está disponível ou
vazio (flag "buffervazio" = 1);
 Se estiver vazio, monta a mensagem numa estrutura temporária (buffer);
 Dispara a transmissão do conteúdo do buffer temporário alterando
o flag "buffer vazio" para "não está vazio" (flag "buffer vazio" = 0);
 Continua a execução das outras atividades enquanto é realizada a transmissão.

Rotina de Transmissão:
 Fica dormente ou então testa periodicamente o flag "buffer vazio";
 Se o flag "buffer vazio" indicar que há dados novos (flag "buffer vazio" = 0),
transfere os dados dobuffer temporário para o buffer de transmissão;
 Altera o flag de "buffer vazio" sinalizando que o buffer está disponível para novos
dados (flag "buffer vazio" = 1);
 Transmite os caracteres, um de cada vez, até transmitir o último;
 Sinaliza que "Terminou a transmissão" (flag).
Observe que em geral a rotina de transmissão é programada para ser ativada
por interrupção, de forma que ela não gaste ciclos de máquina enquanto espera o
término de transmissão de um caracter. Assim é aproveitado o hardware do
microcontrolador para realizar tarefas em paralelo com o programa principal.

2.3 EXEMPLO 2

Esse exemplo é baseado num projeto real. Trata-se de uma placa mezanino
cuja função é processar simultaneamente os dados referentes a 4 canais telefônicos
em tempo real de forma a implementar as seguintes funções:

 Cancelamento de resíduo de voz na linha de recepção resultante do eco da


"fala" gerada pela placa mãe sem distorcer os sinais de origem externa;
 Pré-processar os sinais de entrada identificando pulsos decádicos telefônicos
através de filtragens e outros processamentos;

9
 Implementação parcial de call-progress, focando na detecção do tom de
"ocupado" e de "linha".
O sistema operacional de tempo real para esse caso foi projetado em camadas,
com prioridades atribuídas decrescentes nas camadas conforme vai crescendo o
índice da camada. O fluxo de dados tem taxas decrescentes das camadas inferiores
para as superiores. Veja na Figura 2. Observe que a comunicação entre as
camadas é realizada através de filas ou buffers circulares, dimensionados de forma
que num regime de atendimento simultâneo de quatro linhas telefônicas, o fluxo
médio de dados nunca provoque o "estouro" dessas filas. A cada buffer estão
associados ponteiros de início e final da fila ("primeira livre") e uma variável
indicando o número de dados que estão na fila.

O mecanismo convencionado para a operação das filas circulares é o seguinte:


 Quem transfere um dado para a fila, incrementa o número de elementos e o
ponteiro para o final;
 Quem retira da fila, decrementa o número de elementos e incrementa o ponteiro
de início.

Figura 2: Diagrama da arquitetura do programa em camadas

Uma descrição resumida do que ocorre em cada camada:

10
CAMADA 0
Trata basicamente dos eventos gerados externamente ao programa. Há
eventos assíncronos gerados pela placa-mãe e outros síncronos gerados por
temporizadores de hardware. Esses eventos são:
 Chegada de mensagem enviada pela placa-mãe. Essa mensagem é inserida na
fila de entrada de mensagens, que será tratada pela CAMADA 1;
 Interrupção de hardware com frequência de 10 Hz para a atualização dos
estados de cada linha telefônica;
 Interrupção de hardware com frequência de 8 kHz onde são lidos os dados das
4 linhas telefônicas, e
o é realizada a decodificação dos dados recebidos;
o é aplicada uma rotina de cancelamento de eco com filtragem digital
adaptativa;
o o sinal filtrado segue por 3 caminhos:
 é utilizado como sinal de erro para cálculo do ajuste dos coeficientes do
filtro adaptativo;
 é transferido para a fila que alimenta a CAMADA 1. (Taxa de 8.000
amostras/s);
 é novamente codificado e retorna à placa-mãe

CAMADA 1
Realiza o loop principal do programa com funções de pré-processamento dos
sinais entregues pela CAMADA 0 na fila de dados e o tratamento das mensagens
vindas e que são endereçadas à placa-mãe. A CAMADA 0 é composta pelo
encadeamento das seguintes rotinas:

 Tratamento dos dados provenientes das linhas telefônicas:


o Realiza o processamento e a análise de duas linhas por vez gerando uma
saída para a CAMADA 2. A taxa máxima desses dados para a CAMADA 2
é de 170 amostras/s;
o Realiza um pré-processamento de dados analisando simultaneamente as 4
linhas e gera para a CAMADA 2 um fluxo de dados de 400 amostras/s

11
endereçada ao detetor de pulsos decádicos. Também repassa
uma mensagem para a placa mãe quando a CAMADA 2 detectar um pulso;
o Descarta dados das filas e atualiza os ponteiros.
 Chamada das rotinas que compõem a CAMADA 2

CAMADA 2
 Realiza a análise dos dados gerados na CAMADA 1 e gera as saídas
endereçadas à CAMADA 1 ou à placa-mãe. É composta pelas rotinas:
 Realiza a análise dos dados para detecção de pulsos decádicos. Gera
mensagens endereçadas à placa-mãe;
 Realiza a identificação dos tons de "ocupado" e de linha e sinaliza por meio de
mensagens à placa-mãe.

Nesse exemplo o software foi dividido em camadas com prioridades


decrescentes para conseguir acomodar todas as funções previstas para o mezanino
no curto tempo disponível para a sua execução. Esse projeto funcionou e ficou em
operação por pelo menos 10 anos.
Muitos sistemas embarcados têm características de tempo real, e vice-versa.

Abaixo, alguns exemplos de sistemas de tempo real:

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


processadores ARM
- FreeRTOS - um RTOS de código aberto e que já foi portado para diversas
plataformas (ARM, MSP430, PIC, etc). Sistema operacional de código aberto e
direitos autorais livre, possuí um mini Kernel, podendo ser utilizado também em
aplicações comerciais. Suporta as seguintes arquiteturas de microprocessadores e
microcontroladores (ARM&, ARM9, AVR, PIC24, DSPPIC e microcontrolador 8051).
- QNX - RTOS comercial bastante utilizado em aplicações embarcadas.
- RTA-OSEK - Um RTOS voltado a aplicações automotivas.
- AIX - Advanced Interactive eXecutive - Uma versão do Unix executados em
computadores de médio porte da IBM.
- AMX - um STR fornecido pela KADAK
- CMX - fornecido pela CMX Company
12
- BRTOS Basic RTOS - Pequeno e robusto RTOS (ARM,AVR,PIC,MSP430)
- VxWorks - RTOS comercial líder de mercado da Wind River
- NetBSD(baseado no UNIX) É um sistema operacional em tempo real, que trabalha
com código aberto, como desvantagem apresenta à necessidade de memória,
podendo chegar à 16Mb de RAM. Boa opção para trabalhar com dispositivos de
redes (roteadores , switches).

4.0 VANTAGENS

 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;

5.0 CONSIDERAÇÕES FINAIS

Diante do apresentado nesta pesquisa bibliográfica em relação ao RTOS, as


informações sobre a sua necessidade de apresentar as características básicas de
um sistema embarcado, limitando-os no hardware (memória e economia de energia),
software (aplicações em tempo real) e custo. Foi constatada, também, a
dependência do tamanho do Kernel (compatível com tamanho de memória
disponível no hardware) a ser empregado, aplicações internas e externas com o
sistema, dentre outros. Tais informações levam à reflexão de que a diversidade de
aplicações de tempo real existente gera uma relativa diversidade de RTOS fazendo
com que seja possível chegar a uma escolha do mais próximo admissível de um
RTOS apropriado a um sistema embarcado com arquitetura específica, uma vez que
não existe um modelo melhor ou pior para todas as aplicações.

13
REFERÊNCIAS

MAZIERO, Carlos Alberto. Sistemas Operacionais: conceitos e mecanismos. 2014.


Disponível em < http://wiki.inf.ufpr.br/maziero/lib/exe/fetch.php?media=so:so-
livro.pdf>. Acessado em 08/03/2016.

PUHLMANN, Henrique. Sistemas Operacionais de Tempo real – Introdução.


Disponível em < http://www.embarcados.com.br/sistemas-operacionais-de-tempo-real-
rtos/> Acessado em 05/03/2016.

TANENBAUM, Andrew S. Sistemas operacionais: projeto e implementação. 2.ed.


Porto Alegre : Bookman, 2000. Disponível em:<
http://www.asfernandes.com/files/SistemasOperacionais_-_Tanenbaum_-_2Ed.pdf>.
Acessado em 08/03/2016.

14

You might also like