Sistema operacional
Escalonamento de processos é o ato de realizar o chaveamento dos processos ativos, de acordo com regras bem estabelecidas, de forma que todos os processos tenham chance de utilizar a UCP.
O escalonador é a parte do SO encarregada de decidir entre os processos prontos, qual será colocado em execução.
Diferente da idéia de execução de um processo até o término, vamos utilizar o escalonamento preemptivo, ou seja, o SO interrompe um processo em execução e roda o escalonador para decidir qual o próximo processo a ser executado.
Existem várias formas de implementar o escalonamento e estes devem seguir critérios como justiça (cada processo obter sua parte justa do tempo da UCP), eficiência (garantir ocupação de 100% do tempo da UCP), minimizar o tempo de resposta a comandos de usuários interativos, maximizar o número de serviços processados por hora etc. Vejamos algumas forma de implementar:
1. Escalonamento “Round-Robin”: Cada processo recebe um intervalo de tempo (quantum) e se o processo ainda está rodando quando seu quantum terminar (ou se o processo bloqueie ou termine antes de acabar), a UCP é tomada deste processo e o escalonador seleciona um novo para rodar. O escalonador mantém uma lista de processos executáveis (que estão prontos) e quando o quantum termina sem o processo terminar, o mesmo é colocado no fim dessa lista. O escalonador sempre seleciona o primeiro processo dessa lista para execução. O valor do quantum deve ser escolhido cuidadosamente, se o valor do quantum for muito pequeno, teremos grande parte do tempo de execução da UCP gasta com o processo de chaveamento, e se o valor for muito grande, isto gera um tempo de resposta muito grande para usuários interativos. Processo com muita utilização da UCP devem ganhar maior quantum, para reduzir o número de chaveamento executado nesse processo. O grande problema aqui é o que o SO trata igualmente todos os processos, seja ele de pouca importância ou de grande importância.