cardapio
Na entrada de um novo processo, o algoritmo de escalonamento avalia seu tempo de execução incluindo o job em execução, caso a estimativa de seu tempo de execução seja menor que o processo corrente em execução, ocorre a substituição do processo em execução pelo processo recém chegado.
A função de seleção pode ser representada simplificadamente por:
A cada mudança de contexto, o processo suspenso pela UCP deve ser recolocado em uma posição correspondente apenas ao seu tempo restante de execução e não mais o tempo de execução total;
As sobrecargas impostas pela manutenção dos registros de tempos decorridos e pela troca de contexto da UCP acabam sendo justificado pelo fato de pequenos processos serem executados praticamente de imediato, minimizando o tempo médio de espera dentro de um cenário mais amplo e tornando-se útil para sistemas de tempo repartido.
Este algoritmo também se baseia nas estimativas de tempo de execução dos processos, possuindo as mesmas deficiências do algoritmo SJN, sendo necessário considerar:
Processos com tempo de execução curtos são priorizados;
Processos de maior duração tem seus tempos de espera variáveis em função de jobs menores que venham a ser executados primeiramente;
Possibilidade potencial de processos grandes sendo adiados por um tempo indeterminado (starvation) devido ao excessivo favorecimento de processos de curta duração;
Deve-se incluir um mecanismo extra para evitar que um processo, prestes a ser finalizado, sofre alguma preempção.
Vantagens
A principal diferença para o algoritmo SJF é a preempção, digamos que um processo X esteja em execução na CPU e nesse meio tempo chegue um processo Y menor