Pular para o conteúdo principal

Questão de Sistemas Operacionais — Processos — FUNDATEC 2025

Sistemas OperacionaisProcessos
Código
qg473682
Banca
FUNDATEC
Órgão
IF Sul - MG
Ano
2025
Nível
Superior
Cargo
PEBTT - Informática
Analise a seguinte movimentação em uma conta bancária, acessada por dois processos cuja execução é controlada pelo sistema operacional:Imagem associada para resolução da questãoO saldo final ficou em R$ 1.200,00, pois o processo A foi o último a atualizar o saldo. O saque de R$ 300,00 foi perdido. No contexto de sistemas operacionais, esse problema é conhecido como:
  1. ACondições de corrida.
  2. BEscalonamento de curta duração.
  3. CTrava de transação.
  4. DTrava de processo.
  5. ESemáforo.
Revelar gabarito e comentário

GabaritoA — Condições de corrida.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Condições de corrida (race condition) em sistemas operacionais

Gabarito: letra A. O problema descrito — dois processos acessando e atualizando o mesmo recurso compartilhado (o saldo da conta) sem sincronização, resultando na perda de uma atualização — é o clássico exemplo de condição de corrida (race condition). A condição de corrida ocorre quando o resultado final depende da ordem de execução dos processos concorrentes, e é exatamente o que aconteceu: o saque de R$ 300,00 foi sobrescrito pela atualização posterior do processo A.

O conceito central aqui é a concorrência entre processos e a necessidade de sincronização para garantir a exclusão mútua no acesso a recursos compartilhados. Quando dois ou mais processos leem e escrevem o mesmo dado sem controle, o resultado pode ser imprevisível e incorreto. No exemplo da conta bancária, a operação de saque (que envolve ler o saldo, subtrair R$ 300,00 e gravar o novo valor) não foi atômica: o processo B leu o saldo antigo, o processo A também leu o saldo antigo, e quando B gravou o resultado, A já havia gravado o dele, sobrescrevendo a atualização de B. O saldo final ficou em R$ 1.200,00 (valor após o depósito de A), e o saque de R$ 300,00 foi perdido.

A condição de corrida é um dos problemas mais fundamentais em sistemas operacionais e programação concorrente. Ela acontece quando o resultado de um processo depende da sequência ou sincronização de outros eventos, e a solução típica é o uso de mecanismos de sincronização, como semáforos, monitores ou travas (locks), que garantem que apenas um processo por vez acesse a região crítica (o trecho de código que manipula o recurso compartilhado).

Para entender bem o problema, é importante distinguir os conceitos envolvidos:

  • Condição de corrida: falha causada pela falta de sincronização no acesso concorrente a um recurso compartilhado.

  • Escalonamento de curta duração: política do sistema operacional para decidir qual processo executará na CPU a cada momento; não é a causa do problema, mas a condição de corrida pode ser influenciada pela ordem de escalonamento.

  • Trava de transação / trava de processo: mecanismos de exclusão mútua que previnem a condição de corrida, mas não são o nome do problema em si.

  • Semáforo: uma primitiva de sincronização usada para controlar o acesso a recursos compartilhados; também é uma solução, não o problema.

A pegadinha da questão está em confundir o problema (condição de corrida) com as soluções (trava, semáforo) ou com o mecanismo de escalonamento. O enunciado descreve exatamente o sintoma clássico da condição de corrida: a perda de uma atualização devido à interferência entre processos concorrentes.

Alternativa A — ✅ Correta ⟵ GABARITO

A alternativa descreve com precisão o fenômeno: dois processos acessam o mesmo recurso (saldo) sem sincronização, e o resultado final depende da ordem de execução. O saque de R$ 300,00 foi perdido porque a operação de atualização do processo B foi sobrescrita pela do processo A. Isso é a definição de condição de corrida (race condition), um problema clássico de concorrência em sistemas operacionais.

Alternativa B — ❌ Incorreta

Escalonamento de curta duração (short-term scheduling) é o mecanismo pelo qual o sistema operacional decide qual processo pronto será executado na CPU a cada instante. Embora a ordem de execução dos processos influencie quando a condição de corrida se manifesta, o escalonamento em si não é o problema descrito. A perda do saque não ocorre por uma falha no escalonador, mas pela falta de exclusão mútua no acesso ao saldo.

Alternativa C — ❌ Incorreta

Trava de transação (transaction lock) é um mecanismo de controle de concorrência usado para garantir que uma sequência de operações seja executada de forma atômica e isolada. É uma solução para evitar condições de corrida, não o problema em si. No cenário descrito, não há trava sendo aplicada; pelo contrário, a ausência dela é que causou o erro.

Alternativa D — ❌ Incorreta

Trava de processo (process lock) é um mecanismo de exclusão mútua que impede que dois processos acessem simultaneamente um recurso compartilhado. Assim como a trava de transação, é uma ferramenta de prevenção da condição de corrida, não o nome do problema. A questão descreve a falha que ocorre quando não há trava, não a trava em si.

Alternativa E — ❌ Incorreta

Semáforo é uma primitiva de sincronização (geralmente uma variável inteira com operações atômicas wait e signal) usada para controlar o acesso a recursos compartilhados e evitar condições de corrida. É uma solução para o problema, não o problema em si. O enunciado não menciona o uso de semáforos; descreve justamente a ausência de sincronização.

Gabarito: letra A

Link permanente: /questoes/qg473682