5.3 KiB
< Voltar | Sumário | Adiante >
⚡ Eventos e Interrupções
1. Visão Geral
PROMETEU distingue claramente execução normal, eventos e interrupções.
Nada ocorre “fora do tempo”.
Nada interrompe o sistema sem custo.
Nada acontece sem um ponto bem definido no ciclo de execução.
Eventos são sinais. Interrupções são decisões da máquina.
Este capítulo define:
- o que PROMETEU considera um evento
- como interrupções são modeladas
- quando elas podem ocorrer
- como se relacionam com ciclos, CAP e determinismo
2. Filosofia de Eventos em PROMETEU
PROMETEU não utiliza callbacks assíncronos invisíveis.
Todo evento:
- é registrado
- é entregue em momento previsível
- é tratado dentro do loop principal
Esse modelo evita:
- concorrência implícita
- race conditions ocultas
- efeitos colaterais não determinísticos
PROMETEU favorece:
controle explícito sobre reatividade.
3. Eventos
3.1 Definição
Um evento em PROMETEU é um sinal lógico gerado pelo sistema ou pelo programa, que indica que algo ocorreu.
Exemplos de eventos:
- fim de frame
- timer expirado
- troca de estado do sistema
- erro de execução
Eventos não executam código automaticamente.
Eles apenas informam.
3.2 Fila de Eventos
PROMETEU mantém uma fila de eventos:
- eventos são enfileirados
- a fila é processada em ordem
- o processamento ocorre em pontos definidos do frame
Eventos:
- não interrompem execução arbitrariamente
- não executam fora do loop
4. Interrupções
4.1 Definição
Uma interrupção é um evento especial, tratado pelo sistema como prioritário, que pode:
- alterar o fluxo normal de execução
- executar código específico do sistema
- impactar ciclos e orçamento
Interrupções são raras e explícitas.
4.2 O que NÃO é uma interrupção
Em PROMETEU, não são interrupções:
- input de botão
- colisões
- timers comuns
- lógica de jogo
Esses são tratados como estado ou eventos normais.
5. Tipos de Interrupções em PROMETEU
PROMETEU define um conjunto pequeno e bem controlado de interrupções.
5.1 Interrupção de Frame (VBlank Conceitual)
O final de cada frame gera uma interrupção lógica de sincronização, responsável por:
- swap de framebuffer
- commit de áudio
- sincronização de estado
Essa interrupção:
- ocorre no SYNC
- tem custo fixo
- não executa código do usuário
5.2 Interrupção de Sistema
Gerada por condições excepcionais:
- erro fatal de VM
- violação de memória
- instrução inválida
Resultado:
- execução é interrompida
- estado da VM é preservado
- relatório detalhado é gerado
5.3 Interrupções Temporizadas (Timers)
PROMETEU pode oferecer timers do sistema, modelados como:
- contadores baseados em frames
- sinais gerados ao atingir zero
Timers:
- não disparam código automaticamente
- geram eventos consultáveis
Exemplo conceitual:
if (timer.expired(T1)) {
// tratar evento
}
6. Relação entre Eventos, Interrupções e o Loop
O fluxo completo pode ser representado assim:
FRAME N
──────────────
SAMPLEINPUT
PROCESS EVENTS
UPDATE
DRAW
AUDIO
INTERRUPT: VBLANK
SYNC
──────────────
Importante:
- eventos são processados antes da lógica principal
- interrupções ocorrem apenas em pontos seguros
- nenhuma interrupção ocorre “no meio” de uma instrução
7. Custos e Orçamento
Eventos e interrupções:
- consomem ciclos
- participam do CAP
- aparecem na certificação
Exemplo de relatório:
Frame 18231:
Event processing:120cycles
VBlank interrupt:80cycles
Nada é gratuito.
8. Determinismo e Reprodutibilidade
PROMETEU garante:
- mesma sequência de eventos → mesmo comportamento
- interrupções sempre no mesmo ponto do frame
- timers baseados em frame count, não em tempo real
Isso permite:
- replays confiáveis
- debugging preciso
- certificação justa
9. Boas Práticas
PROMETEU incentiva:
- tratar eventos como dados
- consultar eventos explicitamente
- evitar lógica pesada em handlers
- usar timers em vez de polling excessivo
PROMETEU desencoraja:
- simular callbacks assíncronos
- depender de ordem implícita
- usar eventos como “atalho” para lógica complexa
10. Relação com Microcontroladores
O modelo reflete MCUs reais:
| MCU | PROMETEU |
|---|---|
| ISR | Interrupção explícita |
| Loop principal | Loop PROMETEU |
| Flags | Eventos |
| Timers | Timers por frame |
Mas sem:
- concorrência real
- interrupções imprevisíveis
PROMETEU ensina o conceito, não o caos.
11. Implicações Pedagógicas
Este modelo permite ensinar:
- diferença entre evento e interrupção
- sincronização segura
- controle de fluxo em sistemas reativos
- impacto de decisões temporais
Tudo com ordem, clareza e mensuração.
12. Resumo
- eventos informam, não executam
- interrupções são raras e controladas
- nenhuma execução ocorre fora do loop
- custos são explícitos
- comportamento é determinístico