O que você vai aprender
Definir tempo real e diferenciar rígido (hard) de flexível (soft).
Identificar as métricas de um RTOS: latência, jitter, determinismo e WCET.
Descrever a arquitetura e as primitivas do FreeRTOS em um microcontrolador.
Avaliar a escalonabilidade de tarefas periódicas por Rate Monotonic.
Quando "rápido em média" não basta
Um airbag deve inflar entre 15 e 30 ms após a colisão. Um sistema que dispara em 5 ms na média, mas ocasionalmente em 80 ms, é inútil — ou pior, perigoso. Aqui, a média não importa: importa o pior caso.
Sistemas de tempo real trocam a busca pela maior vazão média pela garantia de prazos. Eles preferem ser previsíveis a ser velozes. Esta aula define o que isso significa, quais métricas medem essa previsibilidade e como um RTOS minúsculo como o FreeRTOS a entrega em microcontroladores de poucos KB.
O que veremos nesta aula
rígido × flexível→Métricas:
latência, jitter, WCET→FreeRTOS→Escalonabilidade
(RM)
Do conceito de prazo às métricas que o quantificam, terminando num kernel real e no teste que diz se um conjunto de tarefas cabe no tempo.
Tempo real rígido e flexível
Rígido (hard). Perder um prazo é falha catastrófica (airbag, controle de voo, marca-passo).
Flexível (soft). Perder um prazo degrada a qualidade, mas é tolerável (streaming, jogos).
Determinismo: o pior caso é tudo
O coração do tempo real é o determinismo: a garantia de que toda operação termina dentro de um limite de tempo conhecido. Para provar que um sistema cumpre seus prazos, o engenheiro precisa do WCET (Worst-Case Execution Time) de cada tarefa — quanto ela leva no pior cenário possível.
O problema é que muitos recursos que melhoram a média pioram o pior caso e tornam o WCET difícil de calcular: caches (acerto ou erro?), pipelines com predição de desvio, paginação para disco, coleta de lixo. Por isso, em tempo real rígido, esses recursos são desabilitados, controlados ou substituídos por alternativas previsíveis (memória fixa, sem swap, sem GC).
Três tarefas periódicas e sua utilização
Utilização de uma tarefa periódica = tempo de execução ÷ período. A soma indica quanto da CPU é consumido:
| Tarefa | Período (T) | Execução (C) | Utilização (C/T) |
|---|---|---|---|
| Ler sensor | 10 ms | 2 ms | 0,20 |
| Atualizar display | 40 ms | 8 ms | 0,20 |
| Registrar log | 100 ms | 10 ms | 0,10 |
| Total | 0,50 | ||
Utilização total de 0,50 (50%) está bem abaixo do limite de Rate Monotonic (~0,78 para 3 tarefas), então o conjunto é escalonável por RM.
Passo a passo: latência de uma interrupção em RTOS
Latência, jitter e WCET
Jitter. Variação da latência entre ocorrências sucessivas. Em controle, o jitter pode ser pior que uma latência alta porém constante.
WCET. Tempo de execução no pior caso de uma tarefa — base para provar escalonabilidade.
Escalonamento preemptivo por prioridade
O escalonador típico de um RTOS é preemptivo por prioridade fixa: a tarefa pronta de maior prioridade roda sempre; se uma de prioridade ainda maior fica pronta, ela preempta a atual imediatamente. Isso garante que a tarefa mais urgente nunca espere por uma menos urgente.
As prioridades costumam ser atribuídas por Rate Monotonic (RM): período menor (maior frequência) recebe prioridade maior. RM é ótimo entre os esquemas de prioridade fixa e tem um teste de escalonabilidade simples: se a utilização total não passa do limite de Liu & Layland, o conjunto cumpre todos os prazos. Cuidado com a inversão de prioridade (Aula 6): mutexes em RTOS usam herança de prioridade para evitá-la.
O pronto-socorro com triagem
RTOS × SO de propósito geral
| Aspecto | RTOS | SO de propósito geral |
|---|---|---|
| Objetivo | Cumprir prazos (determinismo) | Vazão e interatividade médias |
| Escalonador | Preemptivo por prioridade fixa | Justiça, time-sharing |
| Memória | Estática/fixa, sem swap | Virtual, com paginação |
| Tamanho | KB (FreeRTOS, Zephyr) | MB a GB (Linux, Windows) |
| Foco | Pior caso (WCET) | Caso médio |
O ciclo de uma tarefa periódica
período→Executa
(≤ WCET)→vTaskDelay /
bloqueia→Dorme até o
próximo período
O teste de escalonabilidade RM
Esse teste é suficiente, mas não necessário: um conjunto que ultrapassa o limite ainda pode ser escalonável (verifica-se então com análise de tempo de resposta, mais precisa). O EDF (prioridade dinâmica por prazo) atinge até 100% de utilização em uniprocessador, mas RM é preferido em embarcados pela simplicidade e previsibilidade da prioridade fixa.
Verifique seu entendimento
Por que o jitter pode ser mais prejudicial que uma latência alta porém constante em um laço de controle?
FreeRTOS em um ESP32
O FreeRTOS é um kernel de tempo real minúsculo (poucos KB) muito usado em microcontroladores como ARM Cortex-M e ESP32. Oferece tarefas, escalonamento preemptivo por prioridade, filas, semáforos e mutex com herança de prioridade — tudo o que um sistema embarcado de tempo real precisa, sem MMU nem swap.
Em um robô ou drone, tarefas como ler IMU (alta frequência), estabilizar (controle) e telemetria (baixa frequência) coexistem com prioridades RM, comunicando-se por filas.
Confusões frequentes
• Achar que RTOS = "SO mais rápido" — RTOS = previsível, não necessariamente veloz.
• Confundir latência (atraso) com jitter (variação do atraso).
• Esquecer a inversão de prioridade ao usar mutexes — habilite a herança.
• Usar vTaskDelay esperando período exato — o certo para período fixo é vTaskDelayUntil.
• Ignorar que o teste de RM é suficiente, não necessário.
Como projetar tarefas de tempo real
Revele a resposta
Por que caches e predição de desvio são um problema para o tempo real rígido?
Revisão relâmpago
Para onde isso leva
O tempo real recolhe fios de todo o curso:
- O escalonamento RM e EDF vem da Aula 5; a inversão de prioridade e a herança, da Aula 6.
- A proibição de swap (Aula 9) e a preferência por polling (Aula 10) garantem determinismo.
- A MPU (Aula 8) protege tarefas sem o custo da MMU.
- O projeto embarcado culmina nas apresentações da Aula 14.
Resumo da aula
Atividade em grupo · Projetando tarefas de RTOS
Em trios, projetem um conjunto de tarefas periódicas para um microcontrolador.
Roteiro
- Definam 3 tarefas periódicas (ex.: ler sensor 100 Hz, atualizar display 10 Hz, log 1 Hz) com seus tempos de execução.
- Atribuam prioridades por Rate Monotonic.
- Calculem a utilização total e verifiquem a escalonabilidade.
- Simulem no simulador de tempo real e ajustem se houver perda de prazo.
Mini-quiz · Aula 12
20 questões sobre esta aula. Escolha e veja a explicação na hora.
📌 Resumo — leve isto para a prova
- Tempo real é sobre prazos: rígido (catastrófico) versus flexível (degradação).
- RTOS prioriza determinismo (pior caso) sobre média; mede latência, jitter e WCET.
- O escalonador é preemptivo por prioridade fixa; RM atribui prioridade por período.
- O limite de Liu & Layland testa a escalonabilidade RM (suficiente, não necessário).
- FreeRTOS é um kernel RT minúsculo com tarefas, filas e mutex com herança.