Escolar Documentos
Profissional Documentos
Cultura Documentos
Ricardo Anido
MC704
Arquitetura
GT1 CT1
N 3 N 2
3
N 1
Controle de Concorrncia
Protocolos baseados em locks Protocolos baseados em timestamp
Pode ser concedido um lock de um dado a uma transao se o lock solicitado compatvel com locks adquiridos por outras transaes para o mesmo dado. Se o lock no pode ser concedido, a transao que requer o lock suspensa at que todos os outros locks incompatveis sejam liberados pelas outras transaes.
6
Locks usados como acima no garantem seriao: se A e B forem atualizados entre as leituras de A e B, a soma mostrada estaria errada.
7
Deadlock
Considere o escalonamento parcial
T3
lockEx(B) read(B) B = B 50 write(B) lockCp(A) read(A) lockCp(B) lockEx(A)
T4
Nem T3 nem T4 podem prosseguir. Esta situao chamada de deadlock. Para tratar o deadlock necessrio desfazer T3 ou T4 (rollback), e liberando os locks adquiridos.
9
11
num. locks
fase 1
fase 2
tempo
12
num. locks
fase 1
fase 2
tempo
14
Converso de locks
Protocolo de lock em duas fases com converso: Fase 1: pode requisitar lockCp sobre dado. pode requisitar lockEx sobre dado. pode converter lockCp em lockEx. Fase 2: pode liberar lock-Cp. pode liberar lock-Ex. pode converter lockEx em lockCp
16
17
Implementao
Servidor de locks centralizado Fcil de gerenciar, mas ponto central de falha Servidor de locks distribudo Resolve o problema de falha, mas pode levar a deadlock distribudo.
19
Exerccio
T9: write(D)
Antes
TS-W=6 TS-R=7 TS-W= TS-R=
Depois ?? (complete)
23
Exerccio (cont.)
T7: write(D)
Antes
TS-W=6 TS-R=8 TS-W= TS-R=
Depois ?? (complete)
24
Exerccio (cont.)
D:
TS-W=6 TS-R=8
25
Exemplo de uso
Escalonamento parcial, transaes com timestamps 1, 2, 3, 4 e 5.
T1 T2
read(Y) read(Y) write(Y) write(Z) read(Z) read(Z) abort() read(X) write(Z) abort() write(X) write(Z)
26
T3
T4
T5
read(X)
No h ciclos no grafo de precedncia. No h deadlock, j que transaes nunca esperam. Escalonamento pode no ser livre de cascata, e pode no ser recupervel.
27
Mltiplas verses
Esquemas com verses mltiplas mantm verses antigas de dados para aumentar concorrncia. Podem ser baseados em Ordem de timestamp Lock de duas fases Cada atualizao efetuada com sucesso cria uma nova verso do dado. Timestamps so usadas para rotular verses
31
32
33
Quando transao Ti cria nova verso Qk, Rtimestamp e W-timestamp so inicializadas com TS(Ti). Quando uma transao Ti l Qk e TS(Ti) > Rtimestamp(Qk), atualiza-se a R-timestamp.
34
35
Exerccio
Qual o valor lido?
T5
W-timestamp = 4
R-timestamp = 6 valor = 37
A) T5.read(Q) = B) T7.read(Q) =
36
37
Exerccio
Complete com novas verses, conforme o caso
Ti
W-timestamp = 4
R-timestamp = 6 valor = 37
40
Operaes de remoo
Se ptrotocolo de lock de duas fases utilizado, necessrio bloquear o dado com lock exclusivo antes que ele possa ser removido. Se protocolo de timestamp utilizado, regra similar a write. Suponha que Ti deseje executar delete(D):
43
44
Operaes de insero
Operao insert(D) conflita com delete(D), read(D) e write(D), j que nenhum dado pode ser removido, lido ou escrito antes de existir. Uma vez que insert(D) atribui um valor para o dado D, operao deve ser tratada da mesma forma que write, tanto no protocolo de lock como no protocolo de timestamp.
45
Tratamento de deadlocks
Considere as seguintes transaes:
T1: write(X) write(Y) T2: write(Y) write(X)
T2
46
47
Preveno de deadlocks
Algumas estratgias de preveno: Pr-declarao: requer que cada transao efetue lock de todos os seus dados antes do incio da execuo. Ordenao: Impor ordem parcial de todos os dados e requerer que uma transao efetue lock nos dados somente na ordem especificada.
48
49
Tanto no esquema wait-die quanto no wound-wait, uma transao desfeita reinicia com a mesma timestamp original. Dessa forma, transaes antigas tm precendncia sobre transaes recentes, o que evita starvation.
51
Deteo de deadlocks
Deadlocks podem ser descritos por um grafo de espera (wait-for graph) G = (V, E) V o conjunto de vrtices (todas as transaes do sistema). E o conjunto de arestas, cada elemento um par ordenado Ti Tj.
T1 T2 T4 T3
53
54
55
Recuperao de deadlocks
Quando dedlock detectado: Deve-se procurar uma vtima (transao que ser desfeita). Procurar selecionar a vtima que causar menor custo; para evitar starvation, incluir nmero de rollbacks no custo. Extenso do rollback: Total: aborta a transao e a reinicia. Parcial: efetuar rollback somente at o ponto onde deadlock quebrado.
56