Escalonador de curto prazo,também chamado scheduler, é a parte do sistema operacional que organiza e determina o funcionamento da fila de prontos e o tempo que cada processo terá de execução no processador.
O escalonador é avaliado em dois aspectos principais, que são;
Conforme o tipo de escalonador aplicado no sistema operacional, teremos um impacto diferente nos diferentes tipos de processos.
Estes algoritmos escalonadores são clássicos, ou seja, nem sempre são ou foram utilizados comercialmente.
Algoritmo FIFO (first-in/first-out)
Este algoritmo implementa uma fila simples, onde o primeiro processo que chega na fila é executado até seu encerramento (processo não sai do processador até terminar seu processamento).
Algoritmo SJF (Shortest Job First)
Trabalhos mais curtos primeiro - este algoritmo implementa uma fila ordenada pelo menor tempo de execução, ou seja, quanto menor o tempo de execução mais na frente da fila o processo está.
Algoritmo por prioridade
Trabalhos marcados com prioridade primeiro – este algoritmo implementa uma fila ordenada pela prioridade, ou seja, todo processo deve ter uma marca de prioridade2. Esta prioridade irá definir a posição a ser ocupada na fila.
Clientes com alta prioridade são sempre atendidos primeiro – deixando os de baixa prioridade por longos períodos na fila;
Algoritmo por prioridade com aging
Para eliminar a desvantagem de postergação indefinida do algoritmo escalonador por prioridade, podemos implementar um mecanismo de aumento de prioridade conforme o tempo de espera na fila. Isto é conhecido por aging3 - e no caso, a cada “rodada” de execuções, a prioridade do processo que está na fila aumenta, até que o mesmo será atendido.
Algoritmo por prioridade preemptivo e não-preemptivo
Algoritmo Round Robin (fatia de tempo)
Este algoritmo escalonador é o mais comum entre os sistemas operacionais convencionais e que viabiliza a multiprogramação efetivamente – o algoritmo trabalha com fatia de tempo. Cada processo na fila tem um tempo de execução (já definido como quantum); a cada quantum, o processador troca de processo em execução (pelo mecanismo de chaveamento de contexto).
Este algoritmo ainda pode ser implementado, de forma associada, ao algoritmo por prioridade (que poderá ser preemptivo ou não-preemptivo). Garantindo um mecanismo de escalonamento de fatia de tempo com prioridade.
Sistemas operacionais atuais trabalham com o conceito de múltiplas filas, em que o processador de duas ou mais filas de espera para execução, cada qual com um algoritmo escalonador específico. Podemos, por exemplo, termos um sistema com duas filas de espera, sendo:
Fila de processos do tipo foreground
Processos com interação direta do usuário, normalmente executados na presença do usuário e com necessidade de baixo tempo de resposta. Editores de texto e planilhas são típicos exemplos de processos deste tipo.
Esta fila poderia trabalhar com um algoritmo escalonador round-robin com prioridade preemptiva. Certamente os usuários de um sistema deste tipo teriam uma boa relação entre produção e de tempo de resposta do sistema computacional.
Fila de processos do tipo background
Processos sem interação de usuário, normalmente executados sem a presença do usuário ou disparados em batch. Podem, por exemplo ser executados durante a madrugada (quando normalmente ninguém mais está usando o sistema). Processos para cálculo de folha de pagamento ou processos de computação científica podem ser exemplos deste tipo de fila. Tipicamente, processos que consomem muita CPU.
Esta fila poderia trabalhar com um algoritmo escalonador do tipo fila (FIFO) e os processos seriam executados do início ao fim sem problemas (até porque não tem usuário requisitando a máquina).