Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
so:escalonador_por_prioridades [2016/09/21 16:59] – [Escalonamento por prioridades] maziero | so:escalonador_por_prioridades [2023/04/27 20:22] (atual) – maziero | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
+ | ====== Escalonamento por prioridades ====== | ||
+ | |||
+ | :!: alterações na interface em 03/ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Este projeto consiste em adicionar um escalonador baseado em prioridades com envelhecimento ao nosso sistema operacional. | ||
+ | |||
+ | As seguintes operações devem ser implementadas: | ||
+ | |||
+ | * uma função '' | ||
+ | |||
+ | * funções para consulta e ajuste de prioridades, | ||
+ | |||
+ | |||
+ | <code c> | ||
+ | void task_setprio (task_t *task, int prio) | ||
+ | </ | ||
+ | |||
+ | Esta função ajusta a prioridade **estática**((Pode ajustar a prioridade dinâmica também, para que o efeito da mudança seja imediato.)) da tarefa '' | ||
+ | |||
+ | <code c> | ||
+ | int task_getprio (task_t *task) | ||
+ | </ | ||
+ | |||
+ | Esta função devolve o valor da prioridade **estática** da tarefa '' | ||
+ | |||
+ | ===== Observações ===== | ||
+ | |||
+ | * O escalonador deve usar prioridades no estilo UNIX (valores entre -20 e +20, com escala negativa). | ||
+ | * Para que o escalonador funcione corretamente, | ||
+ | * Ao ser criada, cada tarefa recebe a prioridade default (0). | ||
+ | |||
+ | Sua implementação deve funcionar com {{pingpong-scheduler.c|este código}}. A saída da execução deve ser **similar** a {{pingpong-scheduler.txt|este exemplo}} (pequenos desvios são aceitáveis). | ||
+ | |||
+ | <note tip> | ||
+ | No exemplo acima, observe que a tarefa '' | ||
+ | </ | ||
+ | |||
+ | ===== Outras informações ===== | ||
+ | |||
+ | * Duração estimada: 3 horas. | ||
+ | * Dependências: | ||
+ | * [[Gestão de Tarefas]] | ||
+ | * [[Dispatcher]] | ||