[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).
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.
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):
- 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.
- O hardware gera uma interrupção (por exemplo, do timer). O controle passa ao kernel.
- 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”.
- O escalonador decide qual processo vai executar a seguir.
- O kernel carrega o contexto do processo escolhido (restaura registradores, contador de programa etc.) — esse é o “restaurar estado”.
- 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.