[7]. O que significa um processo sofrer preempção?

Passo 1

O enunciado pergunta claramente: “O que significa um processo sofrer preempção?”
Informações dadas: nenhuma além da própria pergunta.
O que precisa ser respondido: uma definição clara do que é “preempção” aplicada a processos, e explicar como/por que isso acontece e quais as consequências práticas (ou seja, tudo que ajuda a entender e responder essa pergunta numa prova).

Passo 2

Definição direta e simples (preparando para detalhar depois).
Quando dizemos que um processo sofreu preempção, queremos dizer que ele foi interrompido de forma involuntária enquanto estava usando a CPU e foi retirado do estado de execução para permitir que outro processo use a CPU. Em outras palavras: o escalonador “tirou” a CPU do processo atual sem que ele pedisse.

Passo 3

Explicando os estados de processo para você não se perder:
  • Estado “running”: o processo está executando instruções na CPU agora.
  • Estado “ready” (pronto): o processo pode executar, está na fila aguardando a CPU.
  • Estado “blocked” (esperando/I/O): o processo não pode executar até que aconteça algum evento (por exemplo, terminar uma leitura de disco).
    Preempção é a transição “running” → “ready” forçada pelo sistema (não é o mesmo que “running” → “blocked”, que ocorre quando o processo espera por I/O).

Passo 4

Como a preempção acontece na prática (mecanismo técnico, explicado passo a passo):
  1. Um evento dispara a necessidade de trocar o processo que está na CPU. Os eventos mais comuns são: expiração do quantum de tempo (time slice) ou chegada/despertar de um processo com prioridade maior. Também pode vir de uma interrupção que exige o escalonador.
  2. O hardware gera uma interrupção (por exemplo, do timer). O controle passa ao kernel.
  3. O kernel executa o rotineiro do escalonador: ele salva o contexto do processo que estava rodando (registradores, contador de programa, ponteiro de pilha, informações no PCB) — esse passo é o “salvar estado”.
  4. O escalonador decide qual processo vai executar a seguir.
  5. O kernel carrega o contexto do processo escolhido (restaura registradores, contador de programa etc.) — esse é o “restaurar estado”.
  6. A CPU começa a executar o novo processo. O processo preemptado fica na fila “ready” aguardando a próxima vez que a CPU será atribuída a ele.

Passo 5

Diferença entre preemptivo e não-preemptivo (cooperativo), pra responder numa prova com clareza:
  • Escalonamento preemptivo: o sistema pode forçar a troca de processos a qualquer momento (ex.: round-robin, escalonamento por prioridades com preempção). Favorece responsividade e justiça.
  • Escalonamento não-preemptivo: um processo só deixa a CPU voluntariamente (por terminar ou bloquear). Simples, mas pode deixar o sistema lento para outros processos e provocar starvation.

Passo 6

Vantagens da preempção (por que os sistemas usam):
  • Responsividade: tarefas interativas recebem CPU com frequência.
  • Compartilhamento justo da CPU entre processos.
  • Permite implementar prioridades (um processo urgente pode interromper outro).

Passo 7

Custos e cuidados (o que pode dar errado):
  • Overhead: salvar/restaurar contexto custa tempo (context switch).
  • Concorrência: ações interrompidas no meio podem deixar estruturas de dados em estado inconsistente — por isso existem mecanismos de sincronização (locks, seções críticas) e, em alguns casos, formas de desabilitar preempção em trechos curtos.
  • Problemas como priority inversion: um processo de baixa prioridade detém um recurso bloqueando um de alta prioridade; existem soluções como priority inheritance.

Passo 8

Exemplo passo a passo, bem concreto (imaginações para fixar):
  • Processo A está rodando. Seu quantum de tempo é de 10 ms.
  • Depois de 10 ms o timer gera uma interrupção. O kernel entra e salva o contexto de A.
  • O escalonador decide dar a CPU ao processo B (próximo da fila). O contexto de B é carregado. A vai para a fila “ready”.
  • B executa; mais tarde, quando for escalonado novamente, A sairá da fila “ready” e retomará exatamente de onde parou (com seus registradores e contador de programa restaurados).
    Isso é preempção na prática: A foi interrompido sem pedir, e só volta quando o escalonador permitir.

Passo 9

O que você deve escrever numa resposta de prova curta (modelo de resposta):
  • Dê a definição curta: processo é interrompido involuntariamente e levado de “running” para “ready”.
  • Explique a causa: timer/chegada de processo de maior prioridade/interrupção.
  • Mencione que envolve salvar e restaurar contexto (context switch).
  • Cite uma vantagem e um custo (responsividade vs overhead) — isso mostra entendimento.

Passo 10

Encorajamento rápido: sei que isso parece muita coisa, mas para a prova memorize a definição curta e um exemplo (timer → contexto salvo → outro processo executa). Assim você garante uma resposta completa e clara mesmo com tempo curto. Você consegue!

Resposta

Processo que é interrompido involuntariamente pelo escalonador: o sistema retira a CPU do processo que estava em execução (transição de “running” para “ready”) — por exemplo quando expira seu quantum ou chega um processo de prioridade maior — salvando seu contexto e fazendo um context switch para outro processo.

Exercícios relacionados