Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ......
Transcript of Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ......
O que é um Sistema Operacional? Provê um ambiente para execução de
programas. Abstração de processos para multitarefa/
concorrência Escalonamento
Hardware abstraction layer (Hal) (device drivers)
Sistema de Arquivos Comunicação
É necessário?
Nem sempre
É necessário?
Nem sempre Abordagem mais simples: executivo cíclico
loop
parte da tarefa1
parte da tarefa2
parte da tarefa3
end loop
Executivo Cíclico
Vantagens Implementação mais simples Baixo overhead Comportamento previsível
Desvantagens Difícil lidar com eventos esporádicos. Tudo deve operar em etapas sequenciais. Código deve ser escalonado manualmente.
Interrupções
Alguns eventos não podem esperar pela próxima iteração do loop. Solução: Executivo Cíclico + Interrupção
Interrupção Evento do ambiente que demanda atenção
Rotina de Interrupção Peça de código executada em resposta a uma
interrupção.
Tratando uma interrupção
1. Execução normal do programa
2. Ocorrência da Interrupção
3. Estado do processador é salvo 4. Rotina de
tratamento é executada
5. Rotina de interrupção termina
6. Estado do processador é restaurado
7. Programa volta a executar normalmente
Rotina de tratamento de interrupção Grande parte das rotinas de tratamento:
Copiam os dados de um periférico para um buffer. Indica a outro hw o código relativo a chegada do
dado. Reconhece a interrupção (comunica ao hardware) Algumas vezes, reação mais longa a interrupção é
desencadeada fora da rotina de tratamento. Exemplo: Início de um novo processo.
Executivo Cíclico + Interrupção
Trabalha bem para muitas aplicações de processamento de sinais.
Alguns hardwares dão suporte nativo
56001 Solução barata e previsível:
Quando ocorre a interrupção, executa uma única e especifica linha de execução definida pelo usuário.
Em geral, copia dados do periférico para um buffer. Não há troca de contexto, não é necessário salvar o
ambiente, não há atraso.
Executivo Ciclico + Interrupção
Loop principal ainda sequencial. Programador é responsável pelo
escalonamento. Escalonamento estático. Eventos esporádicos são tratados lentamente.
Multitarefa cooperativa
Alternativa barata Não preemptiva Processos responsáveis por ceder o
processador. Processos chamam periodicamente rotinas
para ceder a vez a outros processos.
Multitarefa cooperativa
Desvantagens: Programador tem de assegurar que a rotina de
ceder a vez é chamada frequentemente. Um processo errante pode travar todo o sistema.
Alternativa: Multitarefa preemptiva.
Concorrência provida pelo SO
”Sistema Operacional lida com o escalonamento, programador, com a funcionalidade”
Escalonamento e funcionalidade são ortognais. Mudanças no Algoritmo podem provocar
mudanças no escalonamento.
Concorrência provida pelo SO
Sistemas Batch. Submetem jobs e suas entradas. Jobs são executados até serem completados. Saídas
coletadas. Submete próximo job.
Sistemas de tempo compartilhado. Armazenamento de múltiplos jobs em memória. Quando um está em modo de espera (por exemplo,
solicitou I/O), o próximo é disparado. Nenhum job consome todos os recursos. Todos
processos possuem igual tempo de execução.
Tempo real não é ”justo”
Principal objetivo de um sistema operacional de tempo real é atender seus deadlines.
Se você possui cinco tarefas e uma delas é para daqui a uma hora, você trabalha somente nela.
Correta distribuição de tempos atrapalha na tarefa de atender deadlines.
RealTime Kernels
Que funções um núcleo deve ter? Que tipos existem? Núcleo: comprar ou construir, eis a questão.
Funções de um núcleo
Escalonamento Dispatcher Comunicação entre tarefas
Tipos de Núcleo■ Nanokernel:
✦ Uma única thread (apenas task dispatching)■ Microkernel
✦ + escalonamento (multitasking)■ Kernel
✦ + comunicação■ Executivo
✦ Blocos privados de memória, I/O e outros serviços (maioria dos kernels comerciais)
■ Sistema Operacional
✦ Interface com usuário (shell), gerenciamento de arquivos, segurança.
Propriedades de um RTOS
Sistemas de tempo real requerem suporte específico do Sistema Operacional.
Sistemas Operacionais convencionais são inadequados.
Propriedades de um RTOS
Multitarefa/Escalonamento Provida através de chamadas ao sistema. Não leva tempo em conta
Gerenciamento de Interrupção Alcançada através da premissa: prioridade da
interrupção > prioridade do processo. Aumenta a reatividade do sistema, mas pode introduzir
imprevisibilidade. Nem sempre interrupções são mais prioritarias.
Propriedades de um RTOS
Primitivas de sincronização e políticas de recurso compartilhado. Podem causar inversão de prioridades.
Não dão suporte a modelagem de um clock de tempo real ou deadline.
Propriedades de um RTOS
Características desejáveis de um RTOS: Timeliness
Deve prover mecanismo para gerência de tempo Tratamento de tarefas com restrições de tempo
explícitas. Previsibilidade
Garantir a satisfação do deadline ou notificar quando o mesmo não é alcançável.
Tolerância a Falhas Falhas de Hw/Sw não devem travar o sistema.
Propriedades de um RTOS
Projetado para altas cargas Todos os cenários devem ser considerados.
Manutenibilidade.
Propriedades de um RTOS
Timeliness Alcançada com algoritmos apropriados de
escalonamento.
Propriedades de um RTOS
Previsibilidade Afetada por vários aspectos
Características do processador (pipeline, cache, DMA, ...).
I/O e interrupção Sincronização e Comunicação Arquitetura Gerência de Memória Aplicações Escalonamento.
Aspectos que afetam previsibilidade DMA
Transferência de dados entre dispositivos de I/O e memória principal.
Problema: DMA e CPU compartilham o mesmo barramento.
Aspectos que afetam previsibilidade 2 Soluções:
Roubar ciclos DMA Rouba ciclos da CPU para excutar transferência de dados. A CPU espera até que a transferência é completa. Fonte de Não determinismo.
Método de fatias de tempo Cada ciclo de memória é divido igualmente entre os elementos
envolvidos. Um para CPU, outro para o DMA.
Mais custoso, porém mais previsível.
Cache
Para aumentar a previsibilidade do sistema é melhor ter processadores sem cache.
Fonte de nãodeterminismo: Cache miss vs cache hit Escrita e leitura
Necessário considerar o pior caso.
Interrupções
Típico driver
<Habilita interrupção do dispositivo> <Aguarda pela interrupção> <transfere dados>
Em muitos Sistemas Operacionais
Interrupções possuem prioridades mais altas do que outros processos.
Qual o delay introduzido por uma interrupção? Quantas interrupções ocorrem durante uma tarefa.
Problemas em RTOS
Processos podem ser mais importantes que operações de I/O
Solução 1
Desabilitar todas as interrupções, com exceção do timer.
Características Todos os periféricos são tratados como tarefas. Transferência de dados através de pooling. Precisão na estimativa de tempo. Nenhuma mudança do kernel é necessária quando
adicionando dispositivos.
Problemas Degradação do desempenho do processador. Tarefa deve conhecer detalhes do driver.
Solução 2
Desabilitar todas as interrupção, com exceção do timer e tratar dispositivos, por rotinas especiais do kernel ativada pelo timer.
Vantagens Atrasos devido interrupção é eliminado Rotinas periódicas do dispositivo podem ser estimadas
antecipadamente. Detalhes do hardware encapsulados em rotinas
dedicadas.
Desvantagens Degradação do desempenho do processador. Mais intercomunicação entre processos que a primeira
solução. Kernel deve ser modificado quando adicionando
dispositvos.
Solução 3
Habilitar interrupções externas e reduzir tamanho do driver. Driver habilita apenas tarefas apropriadas para lidar
com o dispositivo. A tarefa executa sob controle direto do S.O., assim
como qualquer outra tarefa. Tarefas de controle possuem maior prioridade que
tarefas do dispositivo.
Solução 3
Vantagens Espera ocupada eliminada Atrasos devido ao tratamento do dispositivo são
reduzidos. Os atrasos podem ser estimados com certa
precisão.
Chamadas de Sistema
Toda chamada de sistema deve ser caracterizada por um tempo de execução conhecido. Cada primitiva do kernel deve ser preemptável. Chamadas não preemptáveis podem atrasar a
execução de atividades críticas.
Gerência de Memória
Evitar atrasos nãodeterminísticos: Falha de páginas e substituição de páginas podem
causar atrasos imprevisíveis.
Tipicamente usada Segmentação da memória Particionamento estático
Se aplicações requerem quantidades de memória similar. Problemas
Flexibilidade reduzida em um ambiente dinâmico. É requerido um balanceamento cuidadosos entre
flexibilidade e previsibilidade.
Aplicações
Linguagens de programação atuais não possuem expressividade suficiente para representar tempo.
Características desejáveis: Ausência de estrutura de dados dinâmicas,
recursão e laços de duração precisa.
Exemplos de linguagens de tempo real Real Time Concurrent C Real Time Euclid.
Para as próxima aula
Micro C Linux. Projetos. Aspectos de Modelagem e Tolerância a Falhas.