350 likes | 539 Views
Escalonamento de Tempo Real Introdução. André Luis Meneses Silva andreluis.ms@gmail.com http://strufs.wordpress.com/. Introdução.
E N D
Escalonamento de Tempo RealIntrodução André Luis Meneses Silva andreluis.ms@gmail.com http://strufs.wordpress.com/
Introdução • O problema de tempo real consiste então em especificar, verificar e implementar sistemas ou programas que, mesmo com recursos limitados, apresentem comportamento previsível. • Tempo real é intrínseco de programação concorrente.
Abordagens para Concorrência • Assíncrona • Introduzida por Robert Milner • Ocorrência e percepção de eventos em uma ordem arbitrária, mas não simultânea. • Interleaving (Entrelaçamento de eventos). • Visa a descrição precisa e exata do sistema. • Análise de propriedades do sistema é complexa. • Orientada a implementação • Pouco portável. • Implementada por Ada, CSP, Real-Time Concurrent C.
Abordagens para Concorrência /* Módulo de inicialização da aplicação */ intinit_module( void ){ RTIME now = rt_get_time(); /* Inicializa a tarefa em 5 ms */ rtl_task_init( &my_task, cod_tarefa, arg, stk_size, 1 ); /* Executa a cada 50 ms, aproximadamente 450 na unidade usada */ rtl_task_make_periodic(&mytask, now, 450); return0; }
Abordagens para concorrência • Síncrona • Introduzida por Gérard Berry • Cálculos e comunicação não levam tempo. • Mais portável • Menos dependente das questões de implementação. • Eventos cronológicos, permitindo simultaneidade. • Não existe interleaving, tempo não é tratado de maneira explícita. • Velocidade de processamento é considerada infinita. • Facilita a observação e a análise de sistemas de tempo real. • Implementadas por Esterel, Statecharts, Signal e Lustre.
Abordagens para concorrência module REGNIVEL : input Inic_Reg, Fim_Reg, Niv_min, Niv_max; output Abra_Valv, Fecha_Valv; awaitInic_Reg; emitFecha_Valv; abort loop awaitNiv_min; emitAbra_Valv; awaitNiv_max; emitFecha_Valv; endloop whenFim_Reg endmodule
Abordagem Assíncrona • Neste momento, iremos focar a abordagem assíncrona. • Estudaremos escalonamento de tempo real adequada à classe de problemas que o sistema deve tratar. • Iremos ver aspectos da teoria de escalonamento e de sistemas operacionais sob a ótica de tempo real.
Tarefas • Unidades de processamento seqüencial que concorrem sobre um ou mais recursos computacionais do sistema. • Além da correção lógica (correctness), tarefas de tempo real também devem apresentar correção temporal (timeliness).
Tarefas • Podem ser: • Tarefas Críticas • Quando ao ser completada após o seu deadline pode causar falhas catastróficas no sistema de tempo real e em seu ambiente. • Tarefas Brandas • Essas tarefas quando completadas após seu deadline no máximo implicam em uma diminuição do desempenho do sistema.
Tarefas • Tarefas periódicas, aperiódicas e esporádicas. • Similar ao que foi visto em eventos. • Tarefas periódicas, em geral, são associadas a deadlines hard • Tarefas aperiódicas, em geral, são associadas a deadlines soft • Tarefas se diferenciam de eventos por não ser causadas por interrupção, desvios condicionais e não condicionais.
Tarefas • Alguns conceitos relativos a tempo • Tempo de computação ("Computation Time") (C) • O tempo de computação de uma tarefa é o tempo necessário para a execução completa da tarefa. • Tempo de início ("Start Time“) (st) • Esse tempo corresponde ao instante de início do processamento da tarefa em uma ativação. • Tempo de término ("Completion Time“) (ct) • É o instante de tempo em que se completa a execução da tarefa na ativação.
Tarefas • Alguns conceitos relativos a tempo: • Tempo de chegada ("Arrival Time") (a) • Instante em que o escalonador toma conhecimento de uma ativação dessa tarefa. • Tarefas periódicas • o tempo de chegada coincide sempre com o início do período da ativação. • Tarefas aperiódicas • Momento em que a tarefa foi solicitada • Tempo de liberação ("Release Time“) (r) • O tempo de liberação de uma tarefa coincide com o instante de sua inclusão na fila de Pronto (fila de tarefas prontas) para executar. • Release Jitter (J) • Máxima variação dos tempos de liberação das instâncias das tarefas
Tarefas Período de Ativação Tempo de Computação Jitter (J) Deadline
Tarefas Legenda Tempo de Chegada Tempo de liberação Tempo de início Tempo de término
Tarefas Essa tarefa é periódica ou aperiódica? Tempo de Computação
Tarefas • Tarefas Periódicas • Representada pela quádrupla (Ji, Ci, Pi, Di), onde • Pi = período da tarefa, Ci = tempo de computação da tarefa, Di = Deadline e Ji é o Release Jitter • Tarefas Aperiódicas • Representada pela tripla (Ci, Di, mini), onde • Ci = tempo de computação da tarefa, Di = Deadline e mini é o mínimo intervalo entre duas requisições consecutivas.
Tarefa Aperiódica Legenda Tempo de Chegada mini Tempo de início Tempo de término
Escalonamento • Escalonamento • Ordenar tarefas na fila de pronto. • Escala de execução • Ordenação ou lista que indica a ordem de ocupação do processador por um conjunto de tarefas disponíveis na fila de pronto. • Política de escalonamento • Implementada pelo escalonador, define critérios ou regras para ordenação das tarefas na fila de pronto.
Escalonamento Escala de Execução Política de Escalonamento (Ordem)
Escalonamento • Algoritmos de escalonamento podem ser: • Escalonamento preemptivo • Quando tarefas podem interrompidas, quando em estado de execução. • Escalonamento não preemptivo • Quando tarefas não podem ser interrompidas, quando em estado de execução.
Escalonamento • Algoritmos de escalonamento podem ser: • Estático • Quando cálculo da escala de execução é feito tomando como base parâmetros atribuídos às tarefas do conjunto em tempo de projeto. • Dinâmico • Baseados em parâmetros que mudam em tempo de execução com a evolução do sistema.
Escalonamento • Algoritmos de escalonamento podem ser: • Off-line • Algoritmos que produzem a escala de execução em tempo de projeto. • On-line • Algoritmos que produzem a escala de execução em tempo de execução.
Escalonamento de Tempo Real • Problema NP-Completo • Algoritmos existentes representam uma solução polinomial. • Heurísticas também podem ser aplicadas para encontrar uma escala realizável.
Escalonamento de Tempo Real • Em escalonamento de tempo real, um importante conceito é o de carga computacional. • Somatório dos tempos de computação das tarefas na fila de prontos.
Escalonamento de Tempo Real • Cargas podem ser: • Carga estática ou limitada • todas as suas tarefas são bem conhecidas em tempo de projeto • Modeladas através de tarefas periódicas e esporádicas • Carga dinâmica ou ilimitada • Características de chegadas da tarefa não pode ser antecipada. • Modeladas através de tarefas aperiódicas.
Escalonamento de Tempo Real • Abordagens para o escalonamento • Garantia em tempo de projeto • Garantia em tempo de execução • Abordagens de melhor esforço
Escalonamento de Tempo Real • Garantia em tempo de projeto • Carga computacional estática. • No sistema existe uma reserva de recursos suficiente para a execução das tarefas, incluindo pior caso. • Testes de escalonabilidade em tempo de projeto. • Desperdício de recursos • Executivo Cíclico. • Escala de execução de tamanho finito e definida em tempo de projeto. • Escalonamento dirigido a prioridades. • Escala é produzida em tempo de execução.
Escalonamento de Tempo Real • Garantia em tempo de execução • Carga computacional dinâmica. • Escala de execução e teste de escalonabilidade realizado em tempo de execução. • Se a nova tarefa não satisfazer deadline, a mesma é descartada. • Podem descartar tarefas desnecessariamente • Indicado para sistemas críticos que operam em ambientes não-determinístico.
Escalonamento de Tempo Real • Abordagens de melhor esforço • Carga computacional dinâmica. • Não existe previsão de pior caso • Não consegue prever recursos para todas as situações de carga. • Escala de execução e teste de escalonabilidade realizado em tempo de execução. • Não descartam a nova tarefa, caso ela provoque perda de deadline. • Possui bom desempenho nos casos médios.
Escalonamento de Tempo Real • O escalonamento de tempo real é dividido em duas etapas fundamentais: • Teste de escalonabilidade • Cálculo da escala de execução
Teste de Escalonabilidade • Determina se existe uma escala realizável para um conjunto de tarefas. • Normalmente correspondem a análise de pior caso. • Podem ser de três tipos: • Exatos. • Suficientes. • Necessários.
Testes de Escalonabilidade • Testes Exatos. • Identificam, exatamente, conjuntos escalonáveis e não escalonáveis. • Testes Suficientes. • São mais simples, porém apresentam o custo de descarte de conjuntos de tarefas escalonáveis. • Testes Necessários. • Simples, mas não tão restritivo. Não implica que o conjunto de tarefas é escalonável, porém os conjuntos de tarefas descartados são certamente não escalonáveis.
Referências • Farines (Capítulo 2) • Seções 2.1 a 2.3