Suporte à execução de várias tarefas ❚ Escalonadores e mudanças de contexto ❚ ❚ ❚ ❚ ciclo infinito (“loop” com “polling”) … RTOS preemptivo e baseado em prioridades Escalonadores orientados a metas temporais SC -- cra Algumas categorias de escalonadores de tarefas Tipo de escalonador Execução de tarefas Tipo de interface E/S Ciclo infinito Não há tarefas “polling” Executivo cíclico básico Execução sempre que possível Executivo cíclico despoletado Frequência única pelo tempo Executivo cíclico multiVárias frequências, frequência maior precisão Executivo multi-frequência Várias frequências, com interrupções maior precisão Escalonamento preemptivo Tarefas periódicas e baseado em prioridades não-periódicas Escalonamento por metas Tarefas periódicas e temporais não-periódicas “polling” “polling” “polling” “polling” e interrupções “polling” e interrupções “polling” e interrupções SC -- cra 1 Ciclo infinito ❚ Não há tarefas ❚ Todo o código num mesmo ciclo ❚ Diversas operações executadas em sequência SC -- cra Executivo cíclico básico ❚ Código separado em tarefas ❚ Executadas sequencialmente num ciclo infinito ❚ Execução completa ❚ E/S por “polling” ❚ Não há problemas com partilha de dados SC -- cra 2 Executivo cíclico depoletado por tempo ❚ Interrupção por temporizador ❚ Maior precisão no início da execução ❚ Execução sequencial e total das tarefas ❚ Devem terminar antes da próxima interrupção ❚ E/S por “polling” SC -- cra Executivo cíclico multi-frequência ❚ Execução de tarefas com diferentes frequências ❚ Múltiplas da frequência base (várias execuções por cada interrupção) ❚ Possível problema com espaçamento SC -- cra 3 Limitações dos executivos cíclicos ❚ “Polling” ❚ ❚ perda de eventos desperdício de CPU ❚ Baixa precisão no início de execução ❚ Preempção manual (complexa) ❚ Problema na partilha de dados ❚ Problemas com modificação de código SC -- cra Executivos multi-frequência para tarefas periódicas ❚ Interrupções do temporizador a um ritmo suficientemente elevado para suportar a tarefa mais frequente ❚ (mínimo múltiplo comum) SC -- cra 4 Adição de interrupções ❚ Cuidado na partilha de dados ❚ Possíveis problemas de coerência SC -- cra Executivo multi-frequência com interrupções ❚ Utilização de conjuntos de “buffers” diferentes ❚ Inibição temporária das interrupções para efectuar troca/cópia ❚ Uma tarefa executa-se completamente antes do início de outra ❚ E/S por interrupção em paralelo, mas dados apenas disponíveis no ciclo seguinte SC -- cra 5 Escalonamento preemptivo ❚ Mudança de tarefas em qualquer altura ❚ Maior complexidade ❚ Necessidade de guardar contexto das tarefas ❚ RTOS ❚ E/S por “polling” ou interrupção SC -- cra Escalonamento preemptivo SC -- cra 6 Escalonamento preemptivo Núcleo preemptivo Núcleo não-preemptivo SC -- cra Problemas associados à preempção de tarefas ❚ Critérios para a preempção (prioridades) ❚ Coerência na partilha de dados SC -- cra 7 Mecanismos de sincronização e comunicação ❚ Semáforos ❚ Filas de mensagens (“queues”) SC -- cra Outros critérios no escalonamento ❚ Rate Monotonic – maior prioridade a tarefas mais frequentes ❚ Escalonamento baseado em metas temporais (“deadline”) SC -- cra 8