Sistemas operacionais - Tanenbaum, Seção 2.5

Escalonamento
de processos

Escalonamento em 3 Níveis, Alternância Circular, Prioridades e Filas Múltiplas

Ednildo · André Nishi · Vinícius | ADS - 1º semestre
3 Níveis Round-Robin Prioridades Filas Múltiplas

Escalonamento em três níveis

Por que não carregar todos os jobs diretamente na memória RAM?

1. Admissão (longo prazo)

Olha a fila de entrada no disco. Decide quais jobs entram no sistema, dosando uma mistura equilibrada de processos de computação e de E/S.

2. Memória (médio prazo)

Controla quantos processos ficam na RAM. Os que não cabem vão para a área de troca no disco (swapped out), liberando espaço.

3. CPU (curto prazo)

Seleciona qual processo pronto na memória vai executar a seguir. É o escalonador de milissegundos que decide a cada quantum.

Qual é o perigo de não ter esses três níveis?

Se centenas de programas fossem jogados para disputar a CPU de uma vez, a RAM esgotaria. O sistema entraria em colapso de paginação (thrashing) e o processador ficaria quase ocioso esperando leituras lentas do disco.

Alternância circular (round-robin)

A cada processo é atribuído um intervalo de tempo chamado quantum

Como funciona a alternância

  • O escalonador mantém uma lista encadeada de processos prontos.
  • Ao esgotar o quantum, o relógio de hardware interrompe e o processo vai para o fim da fila.
  • Se bloquear por E/S antes do fim do quantum, a CPU é liberada imediatamente.
  • Garante que nenhum processo espere eternamente para avançar.

O dilema do tamanho do quantum

Quantum muito curto (2 a 4 ms)~20% overhead

CPU gasta tempo demais salvando registradores e recarregando cache.

Quantum ideal (20 a 50 ms)Equilíbrio

Troca consome ~1 ms (~2% a 5%), resposta na tela parece imediata.

Quantum muito longo (500 ms)Resposta lenta

Vários usuários esperariam segundos por um eco na tela.

Simulação round-robin

Observe o quantum expirando e cada processo voltando ao final da fila

Simulação Round-Robin · Quantum = 20 ms

Troca de contexto

Ao expirar o quantum, veja as 3 etapas: salvar PCB, atualizar MMU/cache e despachar o próximo processo.

Overhead real

Se a troca leva ~1 ms e o quantum é 20 ms, a CPU perde 5% do tempo só alternando processos.

E se bloquear antes?

Se o processo solicitar E/S antes do fim do quantum, a CPU é liberada na hora e o próximo da fila entra.

Escalonamento por prioridades

O processo executável com a prioridade mais alta sempre será o escolhido

Prioridade estática vs dinâmica

Estática: definida pelo administrador e não muda. Exemplo militar: generais = 100, coronéis = 90, tenentes = 60...
Dinâmica: o sistema ajusta automaticamente para atingir objetivos como manter discos e CPU trabalhando em paralelo.

A regra 1/f: prioridade automática

O sistema atribui prioridade 1/f, sendo f a fração do último quantum que o processo usou:

Processo de E/S: usou 1 ms de 50 ms (f = 1/50). Prioridade sobe para 50. Ele será atendido rápido quando o disco responder.
Processo de CPU: usou os 50 ms inteiros (f = 1). Prioridade cai para 1. Ele não pode monopolizar.

Problema: inanição (starvation)

Se as prioridades forem fixas, processos com prioridade baixa podem nunca executar. O escalonador pode reduzir a prioridade a cada tique do relógio ou atribuir um quantum máximo para evitar que processos de alta prioridade executem indefinidamente.

Prioridades + alternância circular

A combinação mais usada: prioridades entre classes, round-robin dentro de cada classe

Algoritmo de Tanenbaum

  • - Enquanto houver processos na classe 4, execute cada um por 1 quantum em alternância circular e nunca perca tempo com as classes abaixo.
  • - Se a classe 4 esvaziar, passe para a classe 3 em round-robin.
  • - Se 4 e 3 estiverem vazias, execute a classe 2 e assim por diante.

Risco de inanição

Se as prioridades não forem ocasionalmente ajustadas, as classes mais baixas podem morrer de fome - nunca receberem a CPU.

Solução: o sistema reduz a prioridade a cada tique de relógio ou atribui um quantum máximo. Quando a prioridade cai o bastante, o próximo processo de classe inferior executa.

Filas múltiplas

O caso histórico do CTSS e o truque dos quanta que dobram

O problema do CTSS (1962)

O computador IBM 7094 só mantinha um processo na memória por vez. Cada troca significava enviar o processo para o disco e ler outro. Trocar muitas vezes era extremamente caro.

Solução: dar quanta maiores para processos que já rodaram bastante, reduzindo as trocas com o disco.

A regra: quantum dobra a cada nível

Cada vez que o processo consumia todo o seu quantum, descia uma fila e o quantum dobrava:

1 → 2 → 4 → 8 → 16 → 32 → 64 quanta

Um processo de 100 quanta precisava de apenas 7 trocas em vez de 100 para um round-robin simples!

A esperteza dos usuários (o truque do <Entra>)

O CTSS movia o processo para a classe mais alta se o usuário apertasse <Entra> no terminal (achando que ele era interativo). Alunos com programas pesados de cálculo ficavam apertando <Entra> direto para furar a fila! Moral: conseguir acertar na prática é muito mais difícil que acertar na teoria.

Desafio da turma

Perguntas de análise sobre os 4 temas abordados

Questão 1 · 3 Níveis Análise

Se o escalonador de admissão carregar na memória apenas processos orientados à CPU, o que acontece com o desempenho geral do sistema?

Questão 2 · Round-Robin Trade-off

Por que não é uma boa ideia escolher um quantum de 2 ms nem de 500 ms?

Questão 3 · Prioridades Conceito

O que é inanição (starvation) e como o escalonamento por prioridades pode causar esse problema?

Questão 4 · Filas Múltiplas Aplicação

Por que no CTSS o quantum dobrava a cada nível em vez de permanecer fixo?

Cada ambiente exige uma estratégia

Os quatro mecanismos que estudamos se complementam: os três níveis organizam a admissão, o round-robin garante justiça, as prioridades favorecem quem mais precisa, e as filas múltiplas reduzem o custo das trocas.

3 Níveis + Filas Múltiplas

Sistemas em lote usam admissão controlada e filas com quanta progressivos para otimizar vazão e reduzir trocas de contexto com o disco.

Round-Robin + Prioridades

Sistemas interativos combinam alternância circular com prioridades dinâmicas (1/f) para garantir resposta rápida e evitar inanição.

Tanenbaum - Sistemas Operacionais Modernos, §2.5 Ednildo · André Nishi · Vinícius

Apresentação acadêmica - Sistemas Operacionais - ADS 1º Semestre