Bacharel
1. Primeiro escalonador por prioridade
Um dos primeiros escalonadores por prioridade foi implementado no CTSS (Compatible Time-Sharing System – Sistema Compatível de Divisão por Tempo) do MIT, que operava em um IBM 7094 (em 1962).
2. O problema do CTSS
O CTSS tinha um problema. O chaveamento de processo era muito lento, porque o IBM 7094 só podia manter na memória um processo por vez. Ou seja, cada chaveamento significava trocar todo o processo (enviá-lo para o disco e ler outro do disco).
3. A solução do problema
Os projetistas do CTSS perceberam que era mais eficiente dar, de vez em quando, um “quantum” grande para os processos limitados pela CPU, do que fornecer frequentemente um “quantum” pequeno (para reduzir as operações de troca entre o disco e a memória).
Por outro lado, dar a todos os processos um quantum grande significaria ter um tempo de resposta inadequado. A solução, então, foi definir classes de prioridade.
4. Classes de Prioridades
Os processos na classe de prioridade mais alta eram executados por um quantum. Os processos na classe seguinte de prioridade mais alta executavam por dois quanta. Os processos na próxima classe executavam por quatro canta e assim por diante. Se um processo utilizasse toso os seus quanta, seria movido para uma classe inferior.
5. Imagem
Representação de um algoritmo de escalonamento com quatro classes de prioridade.
(Próximo Slide)
6. Funcionamento
Os processos são divididos em filas, com suas respectivas prioridades de execução. A fila de alta prioridade tem preferência sob a média e baixa, enquanto a média tem preferência somente sob a baixa. Sendo assim, esvaziam-se as filas de maior prioridade primeiro, e vai esvaziando as outras subconsequentemente.
Lembrando que a princípio, um processo não muda de fila.
Caso haja mais de um processo com uma dada prioridade, então é aplicado um algoritmo de desempate, tipicamente o Round-Robin.
(Próximo Slide)