Escalonamento por prioridades

:!: alterações na interface em 03/2023

Vídeo deste projeto

Este projeto consiste em adicionar um escalonador baseado em prioridades com envelhecimento ao nosso sistema operacional.

As seguintes operações devem ser implementadas:

void task_setprio (task_t *task, int prio)

Esta função ajusta a prioridade estática1) da tarefa task para o valor prio (que deve estar entre -20 e +20). Caso task seja nulo, ajusta a prioridade da tarefa atual.

int task_getprio (task_t *task)

Esta função devolve o valor da prioridade estática da tarefa task (ou da tarefa corrente, se task for nulo).

Observações

Sua implementação deve funcionar com este código. A saída da execução deve ser similar a este exemplo (pequenos desvios são aceitáveis).

No exemplo acima, observe que a tarefa pang executa com mais frequência que peng, esta executa com mais frequência que ping e assim sucessivamente. Isso mostra claramente a influência das prioridades das tarefas no escalonamento.

Outras informações

1)
Pode ajustar a prioridade dinâmica também, para que o efeito da mudança seja imediato.