Estratégias e Critérios de Escalonamento de CPU

Classificado em Computação

Escrito em em português com um tamanho de 3,97 KB

O Conceito de Escalonamento de CPU

O objetivo da multiprogramação é ter sempre algum processo em execução para maximizar a utilização da CPU. Para um sistema uniprocessador, nunca haverá mais de um processo em execução simultaneamente. Se houver mais de um processo, o restante terá de esperar até que a CPU esteja livre e possa ser reescalonada.

A ideia da multiprogramação é relativamente simples: um processo é executado até ter de esperar, geralmente pela conclusão de um pedido de E/S (Entrada/Saída). Em um sistema de computação simples, a CPU ficaria ociosa. Todo este tempo de espera é perdido, e nenhum trabalho útil é realizado. Com a multiprogramação, esse tempo é usado de forma produtiva. Vários processos são mantidos na memória ao mesmo tempo. Quando um processo precisa esperar, o sistema operacional tira a CPU do processo e a passa para outro processo.

Estratégias de Escalonamento

Existem duas estratégias diferentes de escalonamento:

  • Escalonamento Não Preemptivo

    Nesta estratégia, os processos que ganham o uso do processador não podem ser interrompidos pelo escalonador para ceder o processador a outro processo. Um processo em execução só deixará o processador quando completar sua execução ou quando solicitar uma operação de E/S ou evento externo a ele. Por esse motivo, são mais simples de serem implementados. Este método foi usado pelo Microsoft Windows 3.x. O escalonamento não preemptivo é o único método que pode ser usado em determinadas plataformas de hardware, porque não requer hardware especial (por exemplo, um timer) necessário para o escalonamento preemptivo.

  • Escalonamento Preemptivo

    Os escalonadores preemptivos podem interromper um processo em execução e colocá-lo no estado pronto para dar a outro processo o uso do processador. O Windows 95 introduziu o escalonamento preemptivo. O sistema operacional Apple Macintosh introduziu o escalonamento preemptivo no MacOS 8 para a plataforma PowerPC.

O Dispatcher (Executor)

Um componente envolvido na função de escalonamento de CPU é o Dispatcher (Executor). O dispatcher é um módulo que dá controle da CPU ao processo selecionado pelo escalonador de curto prazo.

Essa função envolve o seguinte:

  • Troca de contexto;
  • Passar para o modo usuário;
  • Pular para a posição adequada no programa de usuário para reiniciar esse programa.

O dispatcher deve ser o mais rápido possível, considerando que ele é chamado durante cada troca de processo. O tempo necessário para o dispatcher interromper um processo e iniciar a execução de outro é chamado de latência de dispatcher.

Critérios de Escalonamento

Existem alguns critérios que são usados para medir a eficiência dos escalonadores. Dentre eles, destacam-se:

  • Utilização da CPU: A CPU deverá ficar o mais ocupada possível. A porcentagem de tempo em que a CPU ficou trabalhando deve ser em torno de 40% a 90%.
  • Produção (Throughput): Se a CPU estiver ocupada executando processos, o trabalho está sendo feito. Uma medida de trabalho é o número de processos completados por unidade de tempo, denominado throughput. Para processos longos, essa taxa pode ser de um processo por hora; para transações curtas, o throughput pode ser de 10 processos por segundo.
  • Tempo de Retorno (Turnaround Time): Tempo desde a submissão até a conclusão do programa.
  • Tempo de Espera: Soma dos tempos gastos pelo processo na fila de processos prontos.
  • Tempo de Resposta: Tempo desde a submissão de um pedido de E/S até a primeira resposta obtida pelo processo.
  • Justiça: Garante a todos os processos chances iguais de uso do processador.

Entradas relacionadas: