ROUND ROBIN,
uma técnica preemptiva de escalonamento.

A seguir, entenderemos o funcionamento do algoritmo de
escalonamento chamado Round Robin, ou Escalonamento Circular.

O que é escalonamento?

Políticas ou técnicas de escalonamento são uma série de técnicas usadas com o objetivo de se obter uma melhor utilização da CPU. As políticas de escalonamento se dividem em duas classes: aquelas que usam preempção e as que não usam preempção.

> Preempção

Preempção é a interrupção forçada de um processo, para que outro processo de maior prioridade possa usar a CPU. A preempção é usada em sistemas multiprogramados para evitar que um processo monopolize a CPU. A preempção é implementada através de um relógio de tempo real que interrompe a CPU a intervalos de tempo regulares, a fim de que o escalonador de tarefas possa fazer uma reavaliação de prioridades e escalonar outro processo. Este intervalo é a unidade básica de alocação de tempo da CPU e é denominado quantum.

Escalonamento circular (Round-Robin)

É o tipo de escalonamento preemptivo mais simples e consiste em repartir uniformemente o tempo da CPU entre todos os processos prontos para a execução. Os processos são organizados numa fila circular, alocando-se a cada um uma fatia de tempo da CPU, igual a um número inteiro de quanta. Caso um processo não termine dentro de sua fatia de tempo, ele é colocado no fim da fila e uma nova fatia de tempo é alocada para o processo no começo da fila, como ilustrado na figura abaixo:

O escalonamento circular é muito simples, mas pode trazer problemas se os tempos de execução são muito discrepantes entre si. Quando existirem muitas tarefas ativas e de longa duração no sistema, as tarefas curtas terão o seu tempo de resposta degradado, pois as tarefas longas reciclarão continuamente na fila circular, compartilhando de maneira equitativa a CPU com tarefas curtas.

Vídeo

O vídeo exemplifica o funcionamendo do código (em linguagem C) encontrado abaixo. Para maior entendimento, pode-se baixar o arquivo para que ele seja executado na sua própria máquina.

Código

O código em linguagem C abaixo associa o escalonamento circular à situação de uma fila em um banco. O caixa é a CPU, e as pessoas na fila são os processos. Cada processo precisa "pagar" um certo número de "contas" para terminar sua execução, ou seja, usar a CPU por um determinado tempo. Porém, o caixa (CPU) só permite que cada pessoa pague X contas de cada vez. Esse valor X é chamado de Quantum. Se o processo terminar sua execução, ou seja, todas as contas forem pagas, a pessoa sai da fila, caso contrário, volta ao final da fila e espera sua vez novamente. O vídeo acima também exemplifica o funcionamento do código a seguir.