37
 Sistemas Operacionais de Tempo Real Prof. Andre Luis Meneses Silva [email protected]

Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

Embed Size (px)

Citation preview

Page 1: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

Sistemas Operacionais de Tempo Real

Prof. Andre Luis Meneses [email protected]

Page 2: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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

Page 3: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

É necessário?

Nem sempre

Page 4: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

É necessário?

Nem sempre Abordagem mais simples: executivo cíclico

loop

parte da tarefa1

parte da tarefa2

parte da tarefa3

end loop

Page 5: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 6: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 7: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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

Page 8: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 9: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 10: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

Executivo Ciclico + Interrupção

Loop principal ainda sequencial. Programador  é  responsável  pelo 

escalonamento. Escalonamento estático. Eventos esporádicos são tratados lentamente.

Page 11: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 12: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 13: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 14: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 15: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 16: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

Real­Time Kernels

Que funções um núcleo deve ter? Que tipos existem? Núcleo: comprar ou construir, eis a questão.

Page 17: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

Funções de um núcleo

Escalonamento Dispatcher Comunicação entre tarefas

Page 18: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

Tipos de Núcleo■ Nano­kernel:

✦ Uma única thread (apenas task dispatching)■ Micro­kernel

✦ + escalonamento (multi­tasking)■ 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.

Page 19: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

Propriedades de um RTOS

Sistemas  de  tempo  real  requerem  suporte específico do Sistema Operacional.

Sistemas  Operacionais  convencionais  são inadequados.

Page 20: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 21: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 22: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 23: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

Propriedades de um RTOS

Projetado para altas cargas Todos os cenários devem ser considerados.

Manutenibilidade.

Page 24: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

Propriedades de um RTOS

Timeliness Alcançada  com  algoritmos  apropriados  de 

escalonamento.

Page 25: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 26: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 27: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 28: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

Cache

Para aumentar a previsibilidade do sistema é melhor ter processadores sem cache.

Fonte de não­determinismo: Cache miss vs cache hit Escrita e leitura

Necessário considerar o pior caso.

Page 29: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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

Page 30: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 31: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 32: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 33: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 34: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 35: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

Gerência de Memória

Evitar atrasos não­determiní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.

Page 36: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

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.

Page 37: Sistemas Operacionais de Tempo Real · Principal objetivo de um sistema operacional de tempo ... Primitivas de sincronização e ... Processos podem ser mais importantes que

   

Para as próxima aula

Micro C Linux. Projetos. Aspectos de Modelagem e Tolerância a Falhas.