Informática
Os processos podem estar executando, bloqueados, ou prontos para serem executados. Quando um ou mais processos estão prontos para serem executados, o sistema operacional deve decidir qual deles vai ser executado primeiro. A parte do sistema operacional responsável por essa decisão é chamada escalonador, e o algoritmo usado para tal é chamado de algoritmo de escalonamento. Os algoritmos de escalonamento dos primeiros sistemas, baseados em cartões é perfurados e unidades de fita, era simples: ele simplesmente deveria executar o próximo job na fita ou leitora de cartões. Em sistemas multi-usuário e de tempo compartilhado, muitas vezes combinados com jobs batch em background, o algoritmo de escalonamento é mais complexo.
Os critérios com os quais eles devem se preocupar:
1. Justiça: fazer com que cada processo ganhe seu tempo justo de UCP;
2. Eficiência: manter a UCP ocupada 100% do tempo (se houver demanda);
3. Tempo de Resposta: minimizar o tempo de resposta para os usuários interativos;
4. Tempo de Turnaround: maximizar o número de jobs processados por unidade de tempo;
Uma complicação que os escalonadores devem levar em consideração é que cada processo é único e imprevisível. Alguns passam a maior parte do tempo esperando por E/S de arquivos, enquanto outros utilizam a UCP por horas se tiverem chance. Quando o escalonador inicia a execução de um processo, ele nunca sabe com certeza quanto tempo vai demorar até que o processo bloqueie, seja por E/S, seja em um semáforo, seja por outro motivo. Para que um processo não execute tempo demais, praticamente todos os computadores possuem um mecanismo de relógio que causa uma interrupção periodicamente.