Banco de Dados: Para realizarmos o controle de concorrência de transações locais podemos utilizar técnicas de banco centralizados, como, por exemplo, o protocolo de bloqueio. Considere o seguinte cenário referente às operações das transações T1 e T2: Dentro deste cenário avalie as assertivas a seguir e a relação proposta entre elas. I. Tanto T1 quanto T2 ficaram bloqueadas porque II. Estamos na presença de um deadlock. Quanto às duas afirmativas observamos que:
Para realizarmos o controle de concorrência de transações locais podemos utilizar técnicas de banco centralizados, como, por exemplo, o protocolo de bloqueio. Considere o seguinte cenário referente às operações das transações T1 e T2:
Dentro deste cenário avalie as assertivas a seguir e a relação proposta entre elas. I. Tanto T1 quanto T2 ficaram bloqueadas porque II. Estamos na presença de um deadlock.
Quanto às duas afirmativas observamos que:
A) As duas afirmações estão corretas e a segunda justifica a primeira.
B) As duas afirmações estão corretas e a segunda não justifica a primeira.
C) A primeira afirmação é correta e a segunda falsa.
D) A primeira afirmação é falsa e a segunda correta.
E) As duas afirmações são falsas.
Pelo protocolo de bloqueio (locks), considere os pedidos na tabela:
-
No instante 1, T1 solicita bloqueio em A para gravação ⇒ isso é um lock exclusivo (X) em A. Assim, T1 fica com X(A).
-
No instante 2, T2 solicita bloqueio em B para leitura ⇒ isso é um lock compartilhado (S) em B. Assim, T2 fica com S(B).
-
No instante 3, T2 solicita bloqueio em A para leitura ⇒ seria S(A), mas S(A) é incompatível com X(A) que já está com T1. Logo, T2 fica bloqueada esperando A (espera T1 liberar A).
-
No instante 4, T1 solicita bloqueio em B para gravação ⇒ seria X(B), mas B está com S(B) de T2, e X(B) é incompatível com S(B). Logo, T1 fica bloqueada esperando B (espera T2 liberar B).
Agora temos:
- T2 espera por T1 (para liberar A), e
- T1 espera por T2 (para liberar B).
Isso forma um ciclo de espera no grafo de espera (wait-for graph), caracterizando deadlock.
Assim: I. “Tanto T1 quanto T2 ficaram bloqueadas” — verdadeiro (T2 bloqueia no instante 3; T1 bloqueia no instante 4). II. “Estamos na presença de um deadlock” — verdadeiro (há espera circular).
E a II justifica a I, pois o deadlock é exatamente a situação em que transações ficam bloqueadas mutuamente, sem progresso.
Alternativa correta: (A).