SEM 544 Desenvolvimento de Produtos Mecatrônicos >>>> Sistemas de Tempo Real <<<<< Rafael Aroca, Glauco Caurin Aula 4
Aula de Hoje -Revisão Aula 3 Dúvidas? -Escalonamento -Gerenciamento de Memória -Prática com RTLinux Interrupções inb()
Aula anterior I/O Mapeado em memória
I/O Programada Aula Anterior
Pentium
Escalonamento
Estados de Processos 1. Processo aguardando I/O 2. Escalonador escolhe outro processo 3. Escalonador escolhe este processo 4. I/O se torna disponível Estados possíveis Rodando Bloqueado Pronto Setas mostram possibilidade de transição
Task Control Block Campos de uma TCB (TCB, PT, PCB)
Threads The Thread Model (1) (a) Três processos, cada um como uma thread (b) Um processo com três threads
Escalonamento Uso de CPU alterna com espera por I/O Processo CPU Bound Processo I/O Bound
Escalonamento Utilização de CPU como função do número de tarefas
Escalonamento Sistemas de Lote (a) Execução na ordem de chegada (b) Escalonador SJF Shortest Job First
Escalonamento: Sistemas Interativos Escalonamento Round Robin (a) Lista de processos prontos para executar (b) Lista de processos prontos para executar depois de B Não existe distinção de importância Impacto no tamanho do quantum Recomendado 20-50ms
Escalonamento: Sistemas Interativos Escalonamento por Prioridades - Cada processo entra em uma lista de prioridade - Round Robin entre processos de uma mesma prioridade - Comando nice
Outros Escalonadores Loteria Fair-Share Garantido Queues 3 Níveis First Come, First Served Shortest Job First Shortest Process Next
Escalonamento de Tempo Real Antes de escalonar, verificar se uma tarefa é Escalonavel Dado m eventos periódicos evento i ocorre no perído P i e precisa de C i segundos da CPU O processamento só pode ser feito se: m C i 1 i= 1 P i
Escalonamento de Tempo Real Exemplo Tarefas A = 10/30 (Ci = 10, Pi=30) B = 15/40 (Ci=15, Pi=40) C = 5/50 (Ci=5, Pi=50) S = 10/30 + 15/40 + 5/50 = 0,8 => 80% de CPU E se dobrarmos a velocidade do processador? Ci/Pi => Fração da CPU usada pelo processo i
Escalonamento de Tempo Real Round-Robin funciona bem Mas não se preocupa com tempos Pode ser: Estático Dinâmico Toma decisão antes de iniciar Decisões em tempo de execução
Processos periódicos: 3 filmes simultâneos NTSC: 30 vezes/segundo, PAL: 25 vezes/segundo Diferença no Frame-Rate de acordo com padrão
Escalonamento Rate Monotonic Liu, 1973 Método Clássico para sistemas de Tempo Real Estático Preemptivo Teorema: Dado um conjunto de tarefas periódicas e escalonamento preemptivo com prioridades, determine as prioridades de forma que as tarefas com menor períodos tenham maior prioridade, levando a um algoritmo de escalonamento ótimo.
RMA - Rate Monotonic Scheduling Condições: 1. Cada tarefa periódica deve terminar dentro de seu período 2. Um processso não pode depender de outro 3. Cada processo precisa do mesmo tempo de CPU a cada uso 4. Tarefas não periódicas não têm deadline 5. Preempção dos processos é instantânea, sem overhead
Rate Monotonic Scheduling Exemplo: Tarefas de exibição de vídeo: A: Cada 30ms -> 33 vezes/segundo B: Cada 40ms -> 25 vezes/segundo Prioridade C: Cada 50ms -> 20 vezes/segundo
Rate Monotonic Scheduling
Escalonamento Earliest Deadline First Processos não precisam ser periódicos (RMA precisa) Dinâmico Lista ordenado por deadline Escalonador escolhe processo com deadline mais próximo Sempre que um processo fica Pronto, escalonador verifica deadlines
EDF: Earliest Deadline First Scheduling
RMA X EDF Exemplo com outro processador A=30, B=40, C=50
Definição 12 Aula 1 1.1.4 Utilizaçao de CPU Fator de Carga Temporal U é a medida da porcentagem de tempo de processamento não ocioso Utilizaçao 0 25 26-50 51 68 Zoneamento (Classificaçao) Poder de processamento excessivo - CPU deve ser mais poderosa que o necessario Muito Seguro Seguro Aplicaçao Típica Varias Varias Varias 69 70 82 83 99 100+ Limite Teorico Questionavel Perigoso Sobrecarregado Sistemas Embarcados Sistemas Embarcados Sistemas Embarcados Sistemas Embarcados
Porquê 69%? m i= 1 C i i P 1 Prova feita por Liu, 73 Falha do exemplo anterior. Uso = 97,2%
Gerenciamento de Memória
Gerenciamento de Memória Básico Monoprogramação sem swap nem paginação Três formas simples de organizar a memória - Sistema operacional com um processo de usuário (DOS)
Multiprogramação com partições fixas Usado em mainframes Cada novo processo é alocado numa partição de menor tamanho possível Ou através de uma fila única Simples de implementar
CPU X Memória 10 processos rodando 16MB -> Sistema operacional 4MB -> Cada tarefa 32MB RAM 4 tarefas na memória de cada vez CPU=60%, Espera de I/O=80% 48MB RAM 8 tarefas na memória de cada vez CPU=83%, Espera de diminui 38% 64MB RAM 12 tarefas na memória de cada vez CPU=93%, Espera de diminui só 12%
Relocação e Proteção Nunca se sabe onde um programa vai ser carregado na memória PC com endereços relativos Programa não pode invadir partição de outros programas Programas.COM e.exe Registradores base e limit base = 100K, limit = 101K CALL 100 é mapeado para CALL 100K+100 CALL para endereços > 101K geram uma interrupção de erro. Evita programas maliciosos
Swapping - Memória insuficiente para todos programas que estão rodando - Solução 1: Swap - Carregar o programa todo que está rodando em memória - Quando não estiver rodando, colocar o seu conteúdo de memória em disco - Solução 2: Memória Virtual - Endereçamento de memória Virtual - Mais detalhes logo mais
Swapping - Partições dinâmicas, Partes da vão e voltam do disco. Exemplo: c para d, e f para g - Compactação de memória - Com 256MB de RAM leva 2.7 segundos! - Ruim para Tempo Real
Swapping Crescimento dinâmico: Malloc() Prever espaço para crescimento Se acabar, processo precisar ser movido. Tempo Real: tempo para mover Bitmap da memória
Memória Virtual Programas maiores que a RAM Dividir a memória do programa em várias partes (overlays) Swap dinâmico dos overlays conforme necessário (SO) Parte do trabalho era feito pelo programador Exemplo: Programa de 16MB rodando em máquina de 4MB
Memória Virtual Paginação MMU faz mapeamento automático MOV REG,1000 Sem Memória Virtual MOV REG,1000 -> Barramento Com Memória Virtual MOV REG,23459 -> Barramento Espaço de endereçamento Virtual
Memória Virtual MMU faz o mapeamento usando uma tabela
Paginação Relação entre TRAP/INT Page Fault SO busca página endereço virtual e fisico esta na tabela de páginas
Tabela de Páginas Algumas arquiteturas tem vários níveis de páginas Operação interna de uma MMU com 16 páginas de 4KB
Algoritmos de troca de páginas Page fault necessita uma escolha Que página remover Liberar espaço para página necessária Páginas modificada precisa ser salva Página não modificada sobrescrita Evitar escolher uma página muito usada Ela vai ter que voltar para a memória logo
Algoritmos de Troca de Páginas
Politica de Limpeza Processo de background, cleaning daemon Inspeciona periodicamente o estado da memória Quando a MMU tem poucos frames livres Seleciona páginas para evitar usar um algoritmo de troca no futuro Uma lista circular pode ser usada
Travando Páginas na Memória Interação de Memória Virtual e I/O DMA Processo solicita a transferência de dados Enquanto espera I/O, outro processo inicia Causa um page fault SO substitui página que está recebendo dados do DMA Necessidade de travar estas páginas
Segmentação Segmenta um mesmo programa em diferentes espaços de endereçamento
Comparação de Paginação e Segmentação
Segmentação: Implementação Páginas tem tamanho fixo, e segmentos não. Fragmentação externa -> Compactação
Pentium: Segmentação + Paginação Descritor de segmento
Pentium: Segmentação + Paginação Conversão de um endereço no Pentium
Pentium: Segmentação + Paginação Mapeamento de um endereço linear para fisico
Pentium: Segmentação + Paginação Proteção no Pentium: 4 níveis Nível de proteção LKM está no nível 0
Dicas norma MISRA-2004C Regra 14.4 Não usar goto Regra 14.5 Não usar continue Regra 14.6 Usar no máximo um break por loop
Dicas norma MISRA-2004C Regra 20.10 Não é permitido usar as funções atof, atoi, atol Comportamento indeterminado com strings que não podem ser convertidas
Laplante Leitura Recomenada Capítulo 3: Real Time Operating Systems Modern Operating Systems, Tanenbaum Capítulo 2: Processos e Threads Capítulo 4: Gerenciamento de Memória Capítulo 6: Multimidia -> Escalonamento RT