Upload
dalila-valverde-gusmao
View
221
Download
2
Embed Size (px)
Citation preview
Engenharia de Sistemas Embarcados 2006.2Aula 9: Salvo RTOS
2006.2 Engenharia de Sistemas Embarcados 2
Salvo RTOS
• Sistema Operacional– Cooperativo– Multitarefa– Suporte a eventos– Suporte a temporização
• Serviços– Comunicação entre tarefas– Gerenciamento de recursos– Semáforos– Mensagens– Fila de mensagens
2006.2 Engenharia de Sistemas Embarcados 3
Como se parece um código no Salvo
Função main()
tarefas
Código específico
2006.2 Engenharia de Sistemas Embarcados 4
RTOS Cooperativo
• Foco principal do Salvo– Minimização do tamanho do código
• Gerenciamento explícito de mudança de tarefa• Não existe uma pilha de propósito geral
– Redução do tamanho do código gerado• Mudança de tarefa deve ocorrer a nível de tarefa
– Não pode ser feita em funções chamadas pelo código da tarefa
2006.2 Engenharia de Sistemas Embarcados 5
Programação ANSI-C
• Compilador– Compatível com ANSI-C– Suporte a in-line
assembly– Exemplo: Keil
2006.2 Engenharia de Sistemas Embarcados 6
Processadores e Compiladores Suportados
2006.2 Engenharia de Sistemas Embarcados 7
Sistemas Foreground/Background
void main() { while (1) { func1(); func2(); func3(); func4(); }}
Superloop
2006.2 Engenharia de Sistemas Embarcados 8
Problemas de Sistemas Foreground/Background
• Tempo do loop afetado por mudanças nas funções ou ISR
• Resposta do sistema a entradas é pobre– Função é executada apenas quando é chamada
• Pouca flexibilidade ao programador• Complicado implementar um sistema que seja
crítico em termos de temporização• Se o super loop ficar muito grande fica muito
difícil prever a sua temporização
2006.2 Engenharia de Sistemas Embarcados 9
Tarefa3
Tarefa4
Sistemas Multitarefa e Mudança de Contexto
escalonador
Tarefa1
Tarefa2
Tarefa1
Tarefa2
independentes
Tarefa3
Tarefa4
concorrentes
2006.2 Engenharia de Sistemas Embarcados 10
Tarefas e Interrupções
2006.2 Engenharia de Sistemas Embarcados 11
Escalonador Preemptivo
• Tarefa pode ser preemptada
• Ocorre quando tarefa de mais alta prioridade se torna elegível para ser executada
• Requer uso de interrupção
• Requer uso de gerenciamento de pilha– Garantir a corretude da
mudança de contexto• Seção crítica de código
– Desabilitar preempção
2006.2 Engenharia de Sistemas Embarcados 12
Escalonador Preemptivo
• Uso de intensivo de pilha• Utilização de uma pilha para cada tarefa• Mudança de contexto a qualquer tempo
– Aumento da complexidade do escalonador
2006.2 Engenharia de Sistemas Embarcados 13
Escalonador Cooperativo
• Tarefas devem cooperar para mudança de contexto
• Mais simples que o preemptivo
• Escalonador menor• Potencialmente mais
rápido• Escalonador menos
dependente de interrupções
• Programador sabe exatamente onde mudança de contexto ocorre
• Mais simples de lidar com regiões críticas
2006.2 Engenharia de Sistemas Embarcados 14
Escalonador Cooperativo
• Vantagens– Tempo de resposta de
interrupção menor– Menor tempo de
recuperação– Maior simplicidade
geral
• Desvantagens– Menor capacidade de
resposta– Tarefa de menor
prioridade não é preemptada por tarefa de maior prioridade
2006.2 Engenharia de Sistemas Embarcados 15
Estrutura de Tarefa
Initialize();for (;;){
}
Initialize();for (;;){ ... Taskswitch();}
Escalonador cooperativo
2006.2 Engenharia de Sistemas Embarcados 16
Prioridade de Tarefas
• Multitarefa simples– Tarefas com a mesma prioridade– Round robin
• Multitarefa baseado em prioridades– Garante que o processador vai estar executando
as tarefas mais importantes– Tipos de prioridades
• Estática• Dinâmica
• Como garantir que um sistema não execute apenas a tarefa de mais alta prioridade?
2006.2 Engenharia de Sistemas Embarcados 17
Estados das Tarefas
2006.2 Engenharia de Sistemas Embarcados 18
Atrasos e Temporização
Maneira tradicional de gerar atraso
Atraso via RTOS
•Dependente do processador•Processamento em background é complicado
2006.2 Engenharia de Sistemas Embarcados 19
Temporização via RTOS
• Utilização do timer do sistema• Utilização de interrupção periódica• Contador de ticks do sistema• Dimensionamento do contador de ticks• Overhead devido ao timer do sistema é
inevitável• Resolução e precisão do timer do sistema
– Atraso de n ticks variará na faixa de n-1 a n ticks de tempo real (milisegundos por exemplo)
2006.2 Engenharia de Sistemas Embarcados 20
Multitarefa Orientada a Eventos
Exemplo de Evntos
2006.2 Engenharia de Sistemas Embarcados 21
Interação entre Tarefas e Eventos
• Criação de um evento– Torna o evento disponível para o sistema (tarefas)
• Sinalização de evento– Identifica a ocorrência do evento– Pode ser sinalizado por tarefa ou outro código em
background, ISR• Espera de um evento
– Tarefas pode ficar esperando a ocorrência de um evento
– Tarefa pode esperar apenas um evento por vez– Várias tarefas podem esperar ocorrência de um mesmo
evento– RTOS deve ter uma política bem definida para decidir
que tarefa deve ser elegível para ser executada quando da ocorrência de evento esperado por várias tarefas
2006.2 Engenharia de Sistemas Embarcados 22
Como pensar um sistema baseado em eventos
• O que o sistema faz?• Como dividir sua ações em tarefas?• O que cada tarefa faz?• Quando cada tarefa executa?• Quais são os eventos?• Que eventos causam a execução de que tarefas?
2006.2 Engenharia de Sistemas Embarcados 23
Comunicação Intertarefa
• Alguns tipos de comunicação– Semáforos– Mensagens– Fila de mensagens
• Comunicação– Criação do mecanismo de comunicação– Sinalização– espera
2006.2 Engenharia de Sistemas Embarcados 24
Semáforos
• Binários– Assumem valor 0 ou 1
• Por contagem– Podem assumir n
valores• Semáforo deve ser
inicializado com um valor
• Quando tarefa espera pela sinalização de um semáforo ela fica no estado bloqueado
Semáforo binário
Semáforo por contagem
2006.2 Engenharia de Sistemas Embarcados 25
Semáforos
Sinalização de evento
Sinalização de evento sem espera
Sinalização de evento com espera
2006.2 Engenharia de Sistemas Embarcados 26
Sincronização de Tarefas por Eventos
2006.2 Engenharia de Sistemas Embarcados 27
Sincronização de Tarefas por Eventos
2006.2 Engenharia de Sistemas Embarcados 28
Gerenciamento de Recursos via Semáforos
2006.2 Engenharia de Sistemas Embarcados 29
Mensagens
• Envio de informação arbitrária para uma tarefa• Tipos de informação
– Número– String– Função– Pointeiro
• Mensagens no sistema– Podem ser diferentes– Sender e receiver devem entender o seu conteúdo
• Mecanismos do RTOS– Criação– Sinalização– Espera de mensagens
2006.2 Engenharia de Sistemas Embarcados 30
Mensagens
• Mensagens de propósito geral– Contéudo da
mensagem são ponteiros
– Ponteiro de dereferenciação
• Mensagem vazia– Ponteiro nulo (NULL)– Não pode ser
dereferenciado• Espera de mensagem
– bloqueante
2006.2 Engenharia de Sistemas Embarcados 31
Mensagens
• Espera de mensagem– bloqueante
• Mensagem contém no máximo um item de informação (Ponteiro)
• Mensagem vazia pode ser sinalizada
• Mensagem cheia não pode ser enviada
2006.2 Engenharia de Sistemas Embarcados 32
Filas de Mensagens (Message Queues)
• Extensão de mensagens• Uma fila de mensagens pode conter múltiplas
mensagens– Número máximo é normalmente um parâmetro do
sistema• O envio de mensagens pode continuar até que a
caixa de mensagens esteja cheia• Uma tarefa que espera a fila de mensagens receberá
mensagens até que a fila de mensagens esteja vazia• RTOS deve alocar mais RAM para o gerenciamento
de cada fila de mensagens– Controlar o número de mensagens na fila de
mensagens– Controlar a ordem das mensagens na fila de
mensagens