Questão de Banco de Dados — Gerência de Transações — FCC 2016
- Código
- fc029701
- Banca
- FCC
- Órgão
- PGE-MT
- Ano
- 2016
- Nível
- Superior
- Cargo
- Analista - Analista de Sistemas
- Aoverwhelming.
- Bdeadlock.
- Coverflow.
- Doverloading.
- Estarvation.
GabaritoE — 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.
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.
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.
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.
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.
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.
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