Exercício 2 =========== 1) a) lock-X(D, Tx): inicio se lock(D) = 'U' lock(D) <- 'X' senao insere(Tx, 'X') na fila-WAIT(D) fim b) unlock(D, Tx): inicio se lock(D) = 'S' inicio remove Tx da lista-READ(D) se lista-READ está vazia lock(D) <- 'U' libera fila-WAIT[0] fim senão // lock(D) = 'X' inicio lock(D) <- 'U' libera fila-WAIT[0] fim fim libera fila-wait(D): se fila-wait != Conj.vazio: se fila-wait contem locks S: *libera todos os S senão se fila-wait contem locks X: retira de fila-wait o primeiro lock (X, Tx) lock-X(Tx, D) *libera todos os S retira da fila cada intenção de bloqueio (S, Tx) e invoca lock-S(D, Tx) 2) Meio-ponto na prova 2 (e-mail) Exercício 3 =========== 1) T1 T2 s1 s2 lx1(X) lx2(Y) lx1(Y) lx2(X) H: s1 s2 lx1(X) lx2(Y) lx1(Y) lx2(X)... 2) H: s1 s2 lx2(X) w2(X) lx2(Y) u2(X) ls1(X) r1(X) u1(X) c1 w2(Y) u2(Y) c2 Exercicio 4 =========== 1) T1: r(Y) w(Y) w(Z) T2: r(X) r(T) w(T) T3: r(Z) w(Z) T4: r(X) w(X) 2PL conservador: lx1(Y) lx1(Z) r1(Y) lx4(X) w1(X) r4(X) u1(Y) w4(X) w1(Z) u4(X) ls2(X) r2(X) u1(Z) u2(X) c1 c4 lx3(Z) lx2(T) r2(T) r3(Z) w2(T) w3(Z) u2(T) u3(Z) c2 c3 2PL estrito: 2PL rigoroso: