O escalonamento, controle do compartilhamento de recursos computacionais de um sistema, é uma função essencial dos sistemas operacionais. A CPU, um dos principais recursos do sistema, deve ser compartilhada entre os diversos processos, através do escalonador de CPU, de forma a otimizar o uso deste recurso.
Silberschatz, cita vários critérios para o escalonamento da CPU (critérios para avaliar os diversos algorítmos de escalonamento de CPU):
- uso da CPU: é desejável maximizar o uso da CPU
- throughput: forma de medir o uso da CPU através do número de processos concluídos por unidade de tempo; por exemplo: nº de processos por hora (processos de longa duração) ou por segundo (transações curtas).
- turnaround time: definido como o tempo total que um determinado processo gasta nas seguintes atividades:
* aguardando ser carregado em memória
* aguardando na fila dos processos prontos para execução ("waiting time")
* em execução (usando a CPU)
* efetuando operações de entrada e saída (E/S ou I/O)
- waiting time: tempo que um processo aguarda na fila dos processos prontos para executar (é um dos itens medido no "turnaround time")
- response time (tempo de resposta): é o tempo decorrido entre a submissão de uma requisição até o início da produção da primeira resposta (é o tempo que leva para começar a responder e não o tempo gasto na exibição da resposta)
É desejável maximizar: o uso da CPU, o throughput - e minimizar: turnaroud time, waiting time, response time.
c-
O escalonamento de processos (scheduling) é feito pelo escalonador da CPU ou de um sistema distribuído, executando processos concorrentes e os priorizando.
https://pt.wikipedia.org/wiki/Escalonamento_de_processos
A decisao do escalonador pode ser varios fatores- tempo, prioridade, tamanho etc. Um dos objetivos do escalonador é sempre manter CPU ocupado com alguma coisa (processo) == maximizar uso de CPU. Varios programas na memoria ajuda escalonamento, aplicando o conceito de load balancing.