Pular para o conteúdo principal

Questão de Banco de Dados — Gerência de Transações — FCC 2016

Banco de DadosGerência de Transações
Código
fc029701
Banca
FCC
Órgão
PGE-MT
Ano
2016
Nível
Superior
Cargo
Analista - Analista de Sistemas
Considere que existem muitas transações em um banco de dados. A transação A faz a requisição de um bloqueio compartilhado de um item de dado. Logo em seguida a transação B faz uma requisição de bloqueio exclusivo do mesmo item. Enquanto a transação B está na fila, chega o pedido da transação C que consegue bloqueio compartilhado do mesmo item. Quando a transação A desocupa o item de dado, ele é ocupado pela transação C. Enquanto isso, a transação B continua aguardando a liberação total do item de dado para que possa fazer o bloqueio exclusivo. Em seguida chegam novas transações de acesso compartilhado deste mesmo item, o que faz com que a transação B nunca consiga fazer progresso. Isso é conhecido como
  1. Aoverwhelming.
  2. Bdeadlock.
  3. Coverflow.
  4. Doverloading.
  5. Estarvation.
Revelar gabarito e comentário

GabaritoE — starvation.

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”.

Gerência de Transações: Starvation

Gabarito: letra E. O cenário descrito é o clássico exemplo de starvation (inanição), no qual uma transação (B) nunca consegue obter o bloqueio exclusivo que necessita porque outras transações com bloqueio compartilhado (A, C, e novas) continuamente ocupam o recurso, impedindo seu progresso. Diferentemente do deadlock, não há um ciclo de espera, mas sim uma postergação indefinida.

A banca explora a confusão entre deadlock e starvation. Ambos são problemas de concorrência, mas a causa e o mecanismo são distintos. Enquanto no deadlock as transações bloqueiam umas às outras em um ciclo, na starvation uma transação é preterida indefinidamente por outras que competem pelo mesmo recurso.

  1. 1StarvationTransação B nunca progride
  2. 2DeadlockEspera circular entre transações
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Overwhelming (sobrecarga) não é um termo técnico padrão em gerência de transações. O fenômeno descrito não se relaciona com excesso de requisições ou capacidade do sistema, mas com um problema de escalonamento de bloqueios.

Alternativa B — ❌ Incorreta

Deadlock (impasse) ocorre quando duas ou mais transações esperam por recursos que estão bloqueados umas pelas outras, formando um ciclo. No enunciado, a transação B espera por um bloqueio exclusivo enquanto outras obtêm bloqueios compartilhados, mas não há espera circular. B apenas não consegue progredir porque sempre há novas transações compartilhadas.

Alternativa C — ❌ Incorreta

Overflow (estouro) refere-se a situações de transbordamento de buffer ou de capacidade, como em inteiros ou pilhas. Não se aplica ao contexto de concorrência entre transações.

Alternativa D — ❌ Incorreta

Overloading (sobrecarga) é usado em contextos de carga excessiva no sistema, mas não descreve o fenômeno específico de uma transação ser postergada indefinidamente por outras.

Alternativa E — ✅ Correta ⟵ GABARITO

Starvation (inanição) é exatamente a situação em que uma transação nunca consegue obter o recurso necessário porque outras transações o ocupam repetidamente. No caso, a transação B fica eternamente na fila enquanto transações de leitura (compartilhadas) passam à sua frente. Isso é um problema de escalonamento de bloqueios, frequentemente tratado com políticas como priority aging ou wait-die.

NÃO CAIA NESSA!

A banca espera que o candidato confunda starvation com deadlock. A diferença crucial: no deadlock há um ciclo de espera entre transações; na starvation, uma transação simplesmente nunca é escalonada. Lembre-se: se uma transação está esperando sozinha e outras passam na frente, é starvation, não deadlock.

Gabarito: letra E.

Link permanente: /questoes/fc029701