🎧 New: AI-Generated Podcasts Turn your study notes into engaging audio conversations. Learn more

Aula 10 - RTOS - Introdução-8-37.pdf

Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...

Full Transcript

Real Time Operating Systems - RTOS Introdução RTOS é um software responsável pelo escalonamento de tarefas, gestão de recursos do sistema e por fornecer uma camada de abstração para o desenvolvimento do código da aplicação. Em alguns casos, o RTOS pode ser composto apenas pelo seu n...

Real Time Operating Systems - RTOS Introdução RTOS é um software responsável pelo escalonamento de tarefas, gestão de recursos do sistema e por fornecer uma camada de abstração para o desenvolvimento do código da aplicação. Em alguns casos, o RTOS pode ser composto apenas pelo seu núcleo, que fornece apenas a lógica mínima, algoritmos de escalonamento e gerenciamento de recursos. Em outros casos, pode ser uma combinação de vários módulos, incluindo o núcleo, sistema de arquivos, suporte de rede, etc. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Introdução A diferença entre um RTOS e um sistema operacional convencional é o requisito tempo como parâmetro fundamental. Windows, Linux, macOS, não são sistemas operacionais de tempo real. Exemplo de uso de sistemas RTOS: ○ Um monitor batimento cardíaco de uma UTI deve monitorar um paciente disparar um alarme caso alguma irregularidade seja identificada. Este é um exemplo de software crítico, pois precisa ser altamente confiável e não pode tolerar atrasos. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Introdução Ilustração das camadas de um sistema RTOS Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Introdução Ilustração do kernel de um RTOS ○ Scheduler (escalonamento): algoritmo que determina qual tarefa é executada e quando. Exemplos de algoritmos de escalonamento: Round-Robin e escalonamento preemptivo. ○ Objects: são recursos disponibilizados pelo kernel que ajudam os desenvolvedores a criar aplicações para sistemas embarcados em tempo real. ○ Services: operações que o kernel realiza em um objeto, por exemplo, operações para lidar com temporização, gerenciamento de interrupção, gerenciamento de memória, etc. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Board Support Package - BSP A interface entre o RTOS e a plataforma de hardware é chamada Board Support Package - BSP. BSP pode ser definida como um conjunto de drivers específico para os componentes de hardware. O BSP possui informações sobre as características do hardware, ou seja, sua implementação é específica para um determinado hardware (board ou uC) para um dado RTOS. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Board Support Package - BSP Um BSP deve minimamente incluir: ○ Configuração da CPU; ○ Configuração de memória (e.g., stack, heap); ○ Configuração do Hardware Interrupt; ○ Configuração de escalonamento de sistema. Implementar um BSP requer um profundo conhecimento em hardware, assembly e sistemas operacionais. Normalmente o desenvolvimento de um BSP não começa do zero. Em vez disso, uma BSP já desenvolvida é utilizada como base, onde são feitas adaptações. Este processo é chamado de RTOS porting. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Scheduler (escalonador de processos) O scheduler (escalonador) está no cerne de cada kernel, e fornece os algoritmos necessários para determinar qual tarefa (task) executar e quando. Duas preocupações específicas: ○ Tempo de resposta; ○ Previsibilidade: garantir que respostas sejam entregues de maneira ordenada e correta. O algoritmo de escalonamento impacta diretamente no desempenho do sistema. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Scheduler (escalonador de processos) Entidades escalonáveis ○ Uma entidade escalonável é um objeto do kernel que pode competir pelo tempo de execução em um sistema, com base em um algoritmo de escalonamento predefinido. ○ Tarefas (tasks) e processos (processes) são exemplos de entidades escalonáveis encontradas na maioria dos kernels. Tarefas (task) ○ Uma tarefa é uma thread independente de execução que contém uma sequência de instruções escalonáveis. Processos (processes) ○ Semelhantes a tarefas no sentido de que podem competir pelo tempo da CPU. No entanto, os processos diferem das tarefas por fornecerem recursos de proteção de memória melhores. Na disciplina, usaremos task para se referir a tarefas e processos. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Multitasking Multitarefa é a habilidade do sistema operacional de lidar com múltiplas atividades dentro de prazos definidos. Um kernel em tempo real pode ter várias tarefas que ele precisa escalonar. Exemplo na figura ao lado. O kernel realiza multitarefa de forma que muitas threads de execução parecem estar rodando simultaneamente; no entanto, na verdade o kernel intercala as execuções sequencialmente, com base em um algoritmo de escalonamento. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Multitasking Um ponto importante a ser observado é que as tarefas seguem o algoritmo de escalonamento do kernel, enquanto as rotina de serviço de interrupção (ISR) são acionadas para executar por causa de interrupções de hardware. A medida que o número de tarefas a serem escalonadas aumenta, também aumentam os requisitos de desempenho da CPU. Isso ocorre devido ao aumento da alternância entre os contextos das diferentes threads de execução. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Context switch (troca de contexto) Cada tarefa possui seu próprio contexto, que é o estado dos registradores da CPU necessários sempre que é escalonada para executar. Uma troca de contexto ocorre quando o escalonador muda de uma tarefa para outra. Cada vez que uma nova tarefa é criada, o kernel também cria e mantém um bloco de controle de tarefa associado (TCB, associated task control block), que são estruturas de dados do sistema que o kernel usa para manter informações específicas da tarefa. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Context switch (troca de contexto) Exemplo: quando o escalonador do kernel determina que precisa parar a execução da tarefa 1 e começar a executar a tarefa 2, ele realiza os seguintes passos: ○ O kernel salva as informações de contexto da tarefa 1 no seu TCB. ○ Carrega as informações de contexto da tarefa 2 do seu TCB, que se torna a thread de execução atual. ○ O contexto da tarefa 1 fica congelado enquanto a tarefa 2 é executada, mas se o escalonador precisar executar a tarefa 1 novamente, a tarefa 1 continua de onde parou logo antes da troca de contexto. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Context switch (troca de contexto) O tempo que o escalonador leva para trocar de uma tarefa para outra é o tempo de troca de contexto. É relativamente insignificante em comparação com a maioria das operações que uma tarefa realiza. No entanto, se ocorrer trocas de contexto frequentes, a aplicação pode incorrer em sobrecarga de desempenho desnecessária. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Dispatcher (despachante) O dispatcher é a parte do escalonador que realiza a troca de contexto e altera o fluxo de execução (ou fluxo de controle). Durante o tempo em que o RTOS está em execução, o fluxo de execução passa por uma das seguintes áreas: ○ Tarefa de aplicação; ○ Rotina de serviço de interrupção (ISR); ○ Kernel. Quando uma tarefa ou ISR faz uma chama de sistema, o fluxo de controle passa pelo kernel para executar uma das rotinas de sistema fornecidas pelo kernel. Quando é hora de sair do kernel, o dispatcher é responsável por passar o controle para uma das tarefas. Não necessariamente será a mesma tarefa que fez a chamada de sistema. São os algoritmos de escalonamento que determinam qual tarefa será executada em seguida. Em outras palavras, é o dispatcher que realiza o trabalho de troca de contexto e manipulação do fluxo de controle. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Algoritmos de escalonamento O escalonador determina qual tarefa é executada seguindo um algoritmo de escalonamento. A maioria dos kernels atualmente suporta dois algoritmos de escalonamento comuns: ○ Escalonamento preemptivo baseado em prioridade. ○ Escalonamento Round-Robin. O fabricante do RTOS geralmente define esses algoritmos. No entanto, em alguns casos, os desenvolvedores podem criar e definir seus próprios algoritmos de escalonamento. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Escalonamento preemptivo baseado em prioridade A maioria dos kernel de tempo real utiliza, por padrão, o escalonamento preemptivo baseado em prioridade. Com esse tipo de escalonamento, a tarefa que é executado em determinado momento é aquela com a mais alta prioridade entre todas as outras tarefas prontas para serem executadas no sistema. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Escalonamento preemptivo baseado em prioridade Os kernels de tempo real geralmente suportam 256 níveis de prioridade, onde 0 é o mais alto e 255 o mais baixo. Alguns kernels atribuem as prioridades em ordem reversa, onde 255 é o mais alto e 0 o mais baixo. Cada tarefa tem uma prioridade, e a tarefa com prioridade mais alta é executada primeiro. Se uma tarefa com uma prioridade mais alta do que a tarefa atual estiver pronta para ser executada, o kernel imediatamente salva o contexto da tarefa atual em seu TCB e muda para a tarefa de maior prioridade. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Escalonamento Round-Robin Um dos algoritmos mais antigos, mais simples e mais amplamente utilizados. Seu funcionamento se baseia no rodízio entre os Lista de processos executáveis processos (tasks). A cada processo é atribuído um intervalo de tempo, chamado de quantum, durante o qual ele pode ser executado. Se o processo estiver em execução no fim do quantum, é realizada a preempção da CPU, e esta é alocada a outro processo. Lista de processos executáveis Se o processo tiver sido bloqueado ou finalizado antes do após B consumir seu quantum quantum ter expirado, a troca da CPU será feita neste momento. Tudo que o escalonador precisa fazer é manter uma lista de processos executáveis. Quando o processo consome o seu quantum, ele é colocado no fim da lista. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Escalonamento Round-Robin O escalonamento Round-Robin oferece a cada tarefa uma parcela igual de tempo de execução da CPU. No entanto, seu algoritmo original não consegue atender aos requisitos de sistemas em tempo real, porque nesses sistemas as tarefas realizam tarefas de importância variada. Uma solução é complementar o escalonamento preemptivo baseado em prioridade com o escalonamento Round-Robin, para alcançar uma alocação igual da CPU para tarefas do mesmo tipo. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Escalonamento Round-Robin Cada tarefa executa por um intervalo definido, em um ciclo contínuo (Round-Robin). Um contador de tempo de execução (quantum) acompanha a fatia de tempo para cada tarefa, incrementando a cada pulso de clock. Quando o intervalo de tempo para uma tarefa é concluída, o contador é zerado e a tarefa é colocada no final do ciclo. Tarefas recém criadas com a mesma prioridade são colocadas no final do ciclo. Se uma tarefa de maior prioridade surgir, o contador de tempo da tarefa atual é salvo, para ser retomado após o final da execução da tarefa de maior prioridade. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Escalonamento Round-Robin Um problema interessante relacionado ao Round-Robin é a duração do quantum. Trocar de um processo para outro exige certa quantidade de tempo para realizar a troca de contexto. Suponha que a troca de contexto demore 1 ms. Suponha também que o quantum seja configurado como 4 ms. Com esses parâmetros, depois de fazer 4 ms de trabalho útil, a CPU terá que gastar 1 ms na troca de contexto. 20% do tempo da CPU será desperdiçado na troca de contexto. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Escalonamento Round-Robin Para melhorar a eficiência da CPU, poderíamos configurar o quantum como 100 ms. Agora, o tempo desperdiçado é de apenas 1%. Mas considere um sistema de compartilhamento de tempo, se dez usuários interativos pressionarem a tecla enter mais ou menos ao mesmo tempo. Dez processos serão colocados na lista de processos prontos. Se a CPU estiver ociosa, o primeiro processo começara imediatamente, o segundo poderá começar somente 100 ms depois e assim por diante. O infeliz último da fila talvez tenha de esperar 1 segundo antes de ter uma chance, supondo que todos os outros utilizem o quantum inteiro. A maioria dos usuários achará lenta uma resposta de 1 s. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Escalonamento Round-Robin A conclusão pode ser formulada como segue: ○ Configurar o quantum curto demais causa muita troca de contexto e reduz a eficiência da CPU. ○ Configurar o quantum longo demais pode causar um tempo de resposta ruim. Um quantum em torno de 20-50 ms frequentemente é um compromisso razoável. Existem pesquisas sobre o valor do quantum. É um problema em aberto. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Tasks (Tarefas) Na programação sequencial, as instruções são executadas uma por vez, em uma cadeia predefinida de instruções. Esta abordagem não é adequada para aplicações embarcadas em tempo real, que normalmente lidam com múltiplas entradas e saídas dentro de limites temporais rigorosos. Sistemas embarcados em tempo real necessitam de programação concorrente. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Tasks (Tarefas) A programação concorrente requer dos desenvolvedores a decomposição de uma aplicação em unidades de programa pequenas e escalonáveis. Quando feito corretamente, a programação concorrente permite atender aos requisitos de desempenho e temporização de um sistema em tempo real. A maioria dos sistemas operacionais de tempo real oferece suporte a programação concorrente. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Tasks (Tarefas) Definição de task ○ Uma task é um fluxo de execução independente que pode competir com outras tasks concorrentes pelo tempo de processamento do processador. ○ Os desenvolvedores devem decompor a aplicações em múltiplas tasks concorrentes para otimizar o processamento. ○ Uma tarefa é definida por seu conjunto de parâmetros e estruturas de dados. Após sua criação, cada task possui: nome associado ID único prioridade bloco de controle de tarefa associado (TCB) uma pilha e uma rotina de tarefa Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Tasks (Tarefas) Definição de task Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Tasks (Tarefas) Inicialização do sistema ○ Quando o kernel é iniciado pela primeira vez, ele cria seu próprio conjunto de tasks do sistema e aloca a prioridade para cada uma a partir de um conjunto de níveis de prioridade reservados. ○ Exemplos de tasks do sistema: initialization or startup task: inicializa o sistema idle task: tarefa ociosa logging task: registro de mensagens do sistema exception-handling task: trata as exceções. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Tasks (Tarefas) Idle task ○ Criada na inicialização do kernel. Configurada como menor prioridade, composta por um loop infinito, executada quando nenhuma outra tarefa pode ser executada ou quando nenhuma outra tarefa exista. ○ O único propósito é utilizar os ciclos ociosos do processador. ○ É necessária porque o processador executa a instrução para a qual o contador de programa aponta enquanto está em execução. A menos que o processador possa ser suspenso, o contador de programa deve sempre apontar para instruções válidas, mesmo que nenhuma outra tarefa exista. ○ Em alguns casos, o kernel pode permitir que uma rotina configurada pelo usuário seja executada em vez da tarefa ociosa para implementar requisitos especiais, por exemplo, colocar o processador em modo de conservação de energia. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados Real Time Operating Systems - RTOS Tasks (Tarefas) Estados e escalonamento ○ Uma tarefa pode variar em três estados: ready: task pronta para ser executada. blocked: task solicitou um recurso que não está disponível; solicitou para aguardar até que algum evento ocorra; causou um delay nela mesma por alguma duração. running: a task é a de mais alta prioridade e está em execução. Prof. Dr. Harlei M. A. Leite (ITA) - EEA-27 Microcontroladores e Sistemas Embarcados

Use Quizgecko on...
Browser
Browser