Você está na página 1de 47

MEEC – Mestrado em Engenharia

Eletrónica e de Computadores
1º Ano – 1º Semestre – Ano Letivo 2013/2014

Sistemas Embebidos
e de Tempo-Real
Prof. Nuno Peixoto
(npeixoto@ipca.pt)

RTOS – Real-Time Operating


Systems
S. E. Tempo-Real
Sumário

Introdução
Tarefas e Processos
Sistemas Multirate
Requisitos Temporais nos Processos
Estado de um Processo e Escalonamento
Sistemas Operativos Tempo-Real Preemptivos
Algoritmos de Escalonamento Tempo-Real
Inversão de Prioridade

MEEC Prof. Nuno Peixoto 2


S. E. Tempo-Real
Introdução

Em aplicações embebidas simples pode-se


construir um programa monolítico com todas as
funcionalidades necessárias
Contudo, quando as aplicações se tornam
complexas, com várias operações e com
tempos muito díspares a abordagem do
programa monolítico não é eficiente
 O código torna-se difícil de manter e muito
complexo – código spaghetti
 Torna-se difícil de verificar quer em termos de
desempenho quer em termos de funcionalidade
MEEC Prof. Nuno Peixoto 3
S. E. Tempo-Real
Introdução

Processo e Sistema Operativo (SO) são dois


conceitos que permitirão a abstração
necessária para criar aplicações embebidas
complexas
 O programa é dividido em várias tarefas
 Cabe ao SO escolher as tarefas que serão
executadas no processador
 O SO permite a comutação entre diferentes
tarefas através da comutação do estado do
processador

MEEC Prof. Nuno Peixoto 4


S. E. Tempo-Real
Introdução

O processo contém o estado do processador

MEEC Prof. Nuno Peixoto 5


S. E. Tempo-Real
Introdução

Estes dois mecanismos irão permitir o


desenvolvimento de aplicações embebidas:
 Com mais funcionalidades e de maior
complexidade
 Com maior flexibilidade no cumprimento dos
requisitos temporais
 Eventos com diferentes taxas de ocorrência
 Abstração à forma como o SO implementa a
comutação de contexto entre as diferentes
tarefas

MEEC Prof. Nuno Peixoto 6


S. E. Tempo-Real
Introdução

No contexto dos SOs surge o RTOS – Real-


Time Operating System
 Este tipo de sistemas operativos satisfaz
requisitos temporais ao contrários dos SOs de
uso geral
 Num SO de uso geral a alocação do CPU tende
a ser justa e permite que todos os processos
possam, de forma equitativa, fazer uso do
mesmo
 Num RTOS o CPU é alocado tendo em conta o
cumprimento dos requisitos temporais da
aplicação
MEEC Prof. Nuno Peixoto 7
S. E. Tempo-Real
Tarefas e Processos

A maioria dos sistemas embebidos executa


mais do que uma tarefa

MEEC Prof. Nuno Peixoto 8


S. E. Tempo-Real
Tarefas e Processos

Por exemplo, num reprodutor MP3, a


reprodução de áudio e o interface com o
utilizador através do LCD e touch pad executam
tarefas muito diferentes
 Tarefas diferentes têm associadas a si diferentes
tempos de execução e diferentes requisitos
temporais
Todas as tarefas fazem parte da funcionalidade
do sistema e têm um impacto direto na estrutura
do software embebido

MEEC Prof. Nuno Peixoto 9


S. E. Tempo-Real
Tarefas e Processos

Os processos permitem a gestão eficiente da


complexidade associada ao tempo
 Taxas variáveis
• Sistemas multimédia
• Controlador do motor nos automóveis
 Entradas assíncronas
• Entradas do utilizador
• Interfaces de comunicação

MEEC Prof. Nuno Peixoto 10


S. E. Tempo-Real
Tarefas e Processos

Processo corresponde à execução única de um


programa
 Um programa que execute duas vezes
corresponderá a dois processos diferentes
 Cada processo representa um estado definido
pelos registos do processador e pela memória
 Em certos SOs, com memória virtual, os
processos têm o seu próprio espaço de memória
 Em SOs mais simples os processos partilham a
mesma zona de memória e designam-se assim
por threads (lightweight processes)
MEEC Prof. Nuno Peixoto 11
S. E. Tempo-Real
Sistemas multirate

Neste tipo de sistemas existem determinadas


operações que têm de ser executadas
periodicamente
 Contudo, cada operação é executada à sua
própria taxa
Num motor de combustão a faísca que
se dá na vela deve ocorrer num certo
ponto do ciclo de combustão o qual
depende da velocidade de rotação do
motor:
 É necessário saber a posição do
pistão e a velocidade de rotação do
motor
 A periodicidade é variável
MEEC Prof. Nuno Peixoto 12
S. E. Tempo-Real
Sistemas multirate

Num motor de combustão moderno o controlo da


faísca na vela é só uma entre muitas tarefas
 Existem sensores para saber a posição do pedal
do acelerador ou os níveis de oxigénio para
controlar as emissões de dióxido de carbono
 O motor possui diferentes modos de
funcionamento
 Cada uma das diferentes tarefas é executada a
uma taxa muito diferente
 A tarefa responsável pelo controlo da faísca na
vela é a que tem períodos de execução mais curtos
MEEC Prof. Nuno Peixoto 13
S. E. Tempo-Real
Requisitos Temporais nos Processos

Release Time
 Corresponde ao momento em que o processo se
encontra pronto para execução
 Esse momento não corresponde
necessariamente ao momento em que é
executado pelo processador
Deadline
 Especifica o tempo máximo admissível para que
a execução do processo termine

MEEC Prof. Nuno Peixoto 14


S. E. Tempo-Real
Requisitos Temporais nos Processos

Processos aperiódicos

Processos periódicos

MEEC Prof. Nuno Peixoto 15


S. E. Tempo-Real
Requisitos Temporais nos Processos

O período de um processo é o tempo que


decorre entre sucessivas execuções do
processo
 Por exemplo, num filtro digital o período de
execução está relacionado com o tempo
decorrido entre diferentes amostras do sinal
 O tempo de execução deverá ser inferior ou igual
ao período
 A taxa de execução é o inverso do período e
remete para frequência de execuções ao longo
do tempo
MEEC Prof. Nuno Peixoto 16
S. E. Tempo-Real
Requisitos Temporais nos Processos

O que acontece se um processo falhar o tempo


deadline?
 Os efeitos práticos irão depender do tipo de
aplicação
• Por exemplo, no sistema de controlo de um
automóvel poderão ser catastróficos
• Num sistema de multimédia irá simplesmente
ocorrer uma falha, o que é incomodo mas não é
crítico
 No caso de ocorrer incumprimento do tempo de
deadline o sistema pode tomar ações corretivas
ou ignorar esse facto, vai depender da aplicação
MEEC Prof. Nuno Peixoto 17
S. E. Tempo-Real
Requisitos Temporais nos Processos

Quando existem dependências de dados entre


os processos terão que existir restrições na
ordem de execução dos mesmos
 As dependências permitem definir a ordem de
execução
P1
 Exemplo P2

P3 só poderá executar após P1


e P2 P3
Gráfico de tarefas
P4 só poderá executar após P3
(task graph)
P1 e P2 podem executar de
forma alternada
Todos os processos têm de terminar P4
antes do final do período estabelecido
MEEC Prof. Nuno Peixoto 18
S. E. Tempo-Real
Requisitos Temporais nos Processos

Utilização do CPU (𝑈)


 A métrica utilizada para medir a utilização do
CPU baseia-se no trabalho útil que este executa
 Considera-se 𝑇 o tempo total de execução de um
conjunto de 𝑛 processos
• 𝑇𝑖 é o tempo de execução do processo 𝑖

𝑇= 𝑇𝑖
1≤𝑖≤𝑛

 O fator de utilização 𝑈 é definido por:


𝑇𝐸𝑀𝑃𝑂 𝐶𝑃𝑈 𝑃𝑅𝑂𝐶𝐸𝑆𝑆𝐴𝑀𝐸𝑁𝑇𝑂 Ú𝑇𝐼𝐿 𝑇
𝑈= =
𝑇𝐸𝑀𝑃𝑂 𝑇𝑂𝑇𝐴𝐿 𝐷𝐼𝑆𝑃𝑂𝑁𝐼𝑉𝐸𝐿 𝑡
MEEC Prof. Nuno Peixoto 19
S. E. Tempo-Real
Estado de um Processo e Escalonamento

O objetivo do SO é determinar qual a tarefa que


irá executar a seguir
 A função de definir a ordem da execução dos
processos designa-se de escalonamento
(scheduling)
 O escalonamento tem um grande impacto nas
aplicações tempo real, pois é ele quem irá
garantir a correta ordem de execução dos
processos de modo a proporcionar o
cumprimento dos tempo de execução das tarefas

MEEC Prof. Nuno Peixoto 20


S. E. Tempo-Real
Estado de um Processo e Escalonamento

O SO considera que um processo pode estar


em três estados de escalonamento diferentes

MEEC Prof. Nuno Peixoto 21


S. E. Tempo-Real
Estado de um Processo e Escalonamento

Política de escalonamento
 Define o critério de seleção utilizado para alterar
o estado de escalonamento de um processo de
pronto para execução para execução
 Todos os SOs multitarefa implementam uma
política de escalonamento
 A escolha da política de escalonamento é crítica
no que concerne ao cumprimento dos requisitos
temporais associados à tarefas
 A escolha da política de escalonamento também
tem um impacto profundo na capacidade de
processamento necessária para a aplicação
MEEC Prof. Nuno Peixoto 22
S. E. Tempo-Real
Estado de um Processo e Escalonamento

O fator de utilização do CPU é uma métrica


essencial para a política de escalonamento
 Em processos periódicos o chamado
“hiperperíodo” é o tempo que permite cobrir
todas as combinações de execução dos
processos
• Este valor é o mínimo múltiplo comum entre os
períodos dos vários processos
• É depois necessário avaliar quantas vezes cada
processo poderá ser executado no hiperperíodo

MEEC Prof. Nuno Peixoto 23


S. E. Tempo-Real
Estado de um Processo e Escalonamento

Exemplo
 Considere-se 3 processos periódicos e os seus
tempos de execução
Processo Período (ms) Tempo de execução (ms)
P1 1,0 0,1
P2 1,0 0,2
P3 5,0 0,3

 Qual o fator de utilização do CPU (𝑈)?


𝑇 5 × 0,1 + 5 × 0,2 + 0,3
𝑈= = = 0,36
𝑡 5

MEEC Prof. Nuno Peixoto 24


S. E. Tempo-Real
Estado de um Processo e Escalonamento

Formas de executar processos periódicos


while(1) {
p1();
p2();
}

 Neste caso a frequência de execução não pode


ser controlada
 O processo 1 irá executar logo a seguir ao 2
 Todos os processos executam à mesma taxa
 Pode se colocar uma série de NOPs, mas é
extremamente difícil e impraticável
 Esta implementação não serve
MEEC Prof. Nuno Peixoto 25
S. E. Tempo-Real
Estado de um Processo e Escalonamento

Formas de executar processos periódicos


void pall()
{
p1();
p2();
}

 Utilizando um temporizador, nomeadamente na


interrupção do mesmo, é possível executar os
dois processo a uma taxa constante
 Contudo, também esta abordagem tem
problemas, basta para isso o tempo de execução
ser maior do que o período do temporizador

MEEC Prof. Nuno Peixoto 26


S. E. Tempo-Real
Estado de um Processo e Escalonamento

E se os processos tiverem diferentes taxas de


execução
 Pode-se sempre utilizar vários temporizadores
 Ou então com um só temporizador implementar
contadores e executar apenas os processos com
períodos maiores quando esses contadores
chegarem a zero
 De qualquer forma, torna-se necessário
encontrar métodos que permitam o
escalonamento de processos com diferentes
períodos de execução e ao mesmo tempo
garantam os requisitos temporais: solução RTOS
MEEC Prof. Nuno Peixoto 27
S. E. Tempo-Real
RTOSs Preemptivos

Um RTOS executa processos tendo em conta


as restrições temporais definidas pelo projetista
do sistema
 Essas restrições estão associadas aos
algoritmos de controlo que irão executar no
processador da plataforma embebida
 A forma de garantir essas restrições temporais é
baseada na preempção e nas prioridades
 O RTOS permite selecionar qual a tarefa que vai
executar e quando, permitindo o cumprimento
dos requisitos temporais
MEEC Prof. Nuno Peixoto 28
S. E. Tempo-Real
RTOSs Preemptivos

Para se poder efetuar um controlo efetivo do


tempo não se pode associar ao processo a
noção da chamada de uma função em
linguagem C
 É necessário ver o processo como um conjunto
de código que poderá executar a qualquer
momento
 Tudo se passa como se as funções tivessem
tamanhos dinâmicos, no sentido em que podem
retornar a qualquer momento, mesmo a meio da
execução e dar lugar à execução de outras
funções
MEEC Prof. Nuno Peixoto 29
S. E. Tempo-Real
RTOSs Preemptivos

Preempção
 Capacidade para interromper a execução de um
processo a qualquer momento
Para partilhar o CPU pelos vários processos o
kernel, uma parte do SO, determina qual o
processo que vai executar
 O kernel é chamado em intervalos de tempo
regulares através da interrupção de um timer
 O período desse timer é designado de time
quantum e corresponde ao tempo mínimo que é
necessário esperar para controlar o acesso ao CPU
MEEC Prof. Nuno Peixoto 30
S. E. Tempo-Real
RTOSs Preemptivos

Fluxo de controlo com preempção

MEEC Prof. Nuno Peixoto 31


S. E. Tempo-Real
RTOSs Preemptivos

O time quantum corresponde a um tempo muito


inferior ao tempo de execução de qualquer
processo
Mas a linguagem C não possui mecanismos
para implementar este tipo de execução
 A única forma de o fazer é através da linguagem
assembly
 Após a interrupção do timer o kernel executa
efetuando a salvaguarda e restauro dos registos
do processador, aquilo que se designa de
contexto
MEEC Prof. Nuno Peixoto 32
S. E. Tempo-Real
RTOSs Preemptivos

A salvaguarda do contexto associado a um


processo e o posterior restauro do contexto
associado a outro processo designa-se por
comutação de contexto
A estrutura de dados que guarda o estado de
um processo designa-se de bloco de controlo
do processo (process control block)

MEEC Prof. Nuno Peixoto 33


S. E. Tempo-Real
RTOSs Preemptivos

Prioridades
 A cada processo é atribuída uma prioridade, que
nada mais é do que um número inteiro
 Prioridades mais altas correspondem, por norma,
a valores inteiros positivos mais baixos
 O kernel analisa as prioridades dos processos
prontos para execução e escolhe o que tiver a
prioridade mais elevada

MEEC Prof. Nuno Peixoto 34


S. E. Tempo-Real
RTOSs Preemptivos

Exemplo de um escalonamento baseado em


prioridades
 Regras
• Os processos têm prioridades fixas
• Dos processos prontos para execução executa o
de maior prioridade
• O processo que está a executar fá-lo até terminar
ou ser interrompido por um processo de maior
prioridade

MEEC Prof. Nuno Peixoto 35


S. E. Tempo-Real
RTOSs Preemptivos

Exemplo de um escalonamento baseado em


prioridades
 Considere-se os seguintes processos, as suas
prioridades e tempos de execução
Processo Prioridade Tempo de execução (ms)
P1 1 10
P2 2 30
P3 3 20

• Assume-se que neste sistema P2 está pronto para


executar quando o sistema é iniciado, P1 estará
pronto para execução após 15 ms e P3 após 18 ms
MEEC Prof. Nuno Peixoto 36
S. E. Tempo-Real
RTOSs Preemptivos

Exemplo de um escalonamento baseado em


prioridades

MEEC Prof. Nuno Peixoto 37


S. E. Tempo-Real
RTOSs Preemptivos

Exemplo do CMSIS-RTOS RTX: Real Time


Operating System for Cortex-M processor-
based devices
 O código fonte deste sistema operativo encontra-
se na diretoria keil (MDK-ARM):
• C:\Keil\ARM\Pack\ARM\CMSIS\3.20.4\CMSIS_RT
X\SRC
 Informações acerca da API do SO encontra-se
em:
• file:///C:/Keil/ARM/PACK/ARM/CMSIS/3.20.4/CMS
IS_RTX/Doc/index.html

MEEC Prof. Nuno Peixoto 38


S. E. Tempo-Real
RTOSs Preemptivos

Comutação de contexto no ARM

MEEC Prof. Nuno Peixoto 39


S. E. Tempo-Real
Algoritmos de Escalonamento T.-Real

Rate-Monotonic Scheduling (RMS)


 Política de escalonamento com prioridades
estáticas
 Todos os processos executam de forma
periódica num único CPU
 O tempo de comutação de contexto é ignorado
 O tempo de execução de um processo é
constante
 Os deadlines correspondem ao período de
execução do processo

MEEC Prof. Nuno Peixoto 40


S. E. Tempo-Real
Algoritmos de Escalonamento T.-Real

Rate-Monotonic Scheduling (RMS)


(continuação)
 O processo de maior prioridade é sempre
escolhido para execução
 Atribui-se a maior prioridade aos processos com
menor período de execução

MEEC Prof. Nuno Peixoto 41


S. E. Tempo-Real
Algoritmos de Escalonamento T.-Real

Exemplo de RMS
Processo Tempo de execução (ms) Período (ms)
P1 1 4
P2 2 6
P3 3 12

 De acordo com a teoria do RMS atribui-se a


maior prioridade ao processo P1, pois é esse
que apresenta um período de execução mais
curto
 P2 ficará com uma prioridade média e P3 com a
menor prioridade
MEEC Prof. Nuno Peixoto 42
S. E. Tempo-Real
Algoritmos de Escalonamento T.-Real

Exemplo de RMS
 O hiperperíodo é de 12 ms
𝑈 = 0,83

MEEC Prof. Nuno Peixoto 43


S. E. Tempo-Real
Algoritmos de Escalonamento T.-Real

Exemplo de RMS
Processo Tempo de execução (ms) Período (ms)
P1 2 4
P2 3 6
P3 3 12

 Claramente, em 12 ms, é necessário executar P1


3 vezes, o que equivale a 6 ms
 É necessário, em 12 ms, executar P2 2 vezes, o
que equivale a 6 ms
 É necessário, em 12 ms, executar P3 uma vez,
ou seja, é necessário 6+6+3 = 15 ms em 12ms
MEEC Prof. Nuno Peixoto 44
S. E. Tempo-Real
Algoritmos de Escalonamento T.-Real

Código C do Rate-monotonic Scheduling


/* processes[] é um array de processos que guardam o contexto e
estão pela ordem de prioridade. process[0] tem a maior prioridade
*/
Activation_record processes[NPROCESSES];

void RMA(int current) {


// retira o processo atual de execução
processes[current].state READY_STATE;
// Encontra o próximo processo para executar
for (int i = 0; i < NPROCESSES; i++)
if (processes[i].state == READY_STATE) {
// Este é o processo que vai correr
processes[i].state = EXECUTING_STATE;
break;
}
}
MEEC Prof. Nuno Peixoto 45
S. E. Tempo-Real
Inversão de Prioridade

Considere-se duas tarefas, uma delas com


baixa prioridade L e outra com alta prioridade H
Considere-se ainda um recurso R de acesso
exclusivo
Se H tentar aceder ao recurso R após L, H não
estará pronta para execução, terá que ficar em
espera
Se entretanto aparecer uma tarefa com
prioridade média M, vai interromper L, contudo,
não é H que executa, pois R ainda não foi
libertado por L que agora não corre devido a M
MEEC Prof. Nuno Peixoto 46
S. E. Tempo-Real
Bibliografia

Wolf , Wayne. 2008. Computers as


Components: Principles of Embedded
Computing Systems Design. Second Edition.
Morgan Kaufman.

MEEC Prof. Nuno Peixoto 47

Você também pode gostar