Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
| Ambos lados da revisão anterior Revisão anterior | |||
| ppos-v2:tarefas_que_dormem [2026/05/06 19:31] – maziero | ppos-v2:tarefas_que_dormem [2026/07/29 17:36] (atual) – maziero | ||
|---|---|---|---|
| Linha 1: | Linha 1: | ||
| + | ====== Tarefas dormindo ====== | ||
| + | |||
| + | Este projeto faz parte do [[PPOS-v2: | ||
| + | |||
| + | O objetivo deste projeto é criar uma função '' | ||
| + | |||
| + | <code c> | ||
| + | void task_sleep(int t) | ||
| + | </ | ||
| + | |||
| + | Para implementar essa funcionalidade é necessário: | ||
| + | |||
| + | * Criar uma fila de " | ||
| + | * Escrever a função '' | ||
| + | * Periodicamente, | ||
| + | * Use o controle de preempção para evitar condições de disputa na manipulação da fila de tarefas adormecidas. | ||
| + | |||
| + | <note warning> | ||
| + | Um erro muito frequente neste projeto é colocar a verificação da fila de tarefas adormecidas dentro do tratador de //ticks// de relógio. **Não faça isso**, pois esse tratador representa uma ISR - //Interrupt Service Routine//, que deve ser pequena e muito rápida. Implemente essa verificação como uma função ativada periodicamente pelo **despachante**. | ||
| + | </ | ||
| + | |||
| + | ===== Arquivos ===== | ||
| + | |||
| + | Os seguintes arquivos são relevantes para este projeto: | ||
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | Na saída, observe que o campo "'' | ||
| + | |||
| + | ===== Outras informações ===== | ||
| + | |||
| + | * Duração estimada: 6 horas. | ||
| + | * Dependências: | ||
| + | * [[Tarefas cooperativas]] | ||
| + | * [[Despachante de tarefas]] | ||
| + | * [[Preempção por tempo]] | ||
| + | * [[Tarefas que esperam]] | ||