44
Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

Embed Size (px)

Citation preview

Page 1: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

Controle de Concorrência em Sistemas Distribuídos

Aluno: Fabiano Costa Teixeira

Disciplina: Sistemas Distribuídos

Professor: Dr. Marcos José Santana

Page 2: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

2Controle de Concorrência em Sistemas Distribuídos

Roteiro

IntroduçãoTransaçõesLocksControle Otimista de ConcorrênciaControle de Concorrência por

TimestampsConclusão

Page 3: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

3Controle de Concorrência em Sistemas Distribuídos

Introdução

Um servidor pode permitir acesso concorrenteProcessosThreads

Se o projeto não for bem feito, as ações dos clientes podem interferir umas nas outras

Essas interferências podem resultar em resultados incorretos dos objetos

Page 4: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

4Controle de Concorrência em Sistemas Distribuídos

Transações

Foram originadas nos SGBD’sPodem ser utilizadas em servidores

transacionais de ArquivosPropriedades ACID:

AtomicidadeConsistência IsolamentoDurabilidade

Page 5: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

5Controle de Concorrência em Sistemas Distribuídos

Transações

Uma maneira para garantir o isolamento é realizar as transações de forma serial

Essa solução é inaceitávelServidores compartilham recursos entre

diversos clientes Interatividade do sistema

Os servidores precisam maximizar a concorrência!!!!!

Page 6: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

6Controle de Concorrência em Sistemas Distribuídos

Transações: Lost Update

Transação T

x = b.getSaldo();

b.setSaldo(x * 1,1);

Transação U

x = b.getSaldo();

b.setSaldo(x * 1,1);

b

saldo = 200

x = b.getSaldo()x = b.getSaldo()b.setSaldo(x * 1,1);

b.setSaldo(x * 1,1);

x = 0 x = 0x = 200 x = 200

220

Perdido

240

Page 7: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

7Controle de Concorrência em Sistemas Distribuídos

Transações: Retrievals Problem

Transação V

a.retira(100);

b.deposita(100);

Transação W

total = a.getSaldo();

total = total + b.getSaldo();

a

saldo = 200100

b

saldo = 200300

a.retira(100);

total = a.getSaldo();total = total + b.getSaldo();

b.deposita(100);

total = 0total = 100total = 300total = 300

Page 8: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

8Controle de Concorrência em Sistemas Distribuídos

Transações: Equivalência Serial

Quando as transações são executadas serialmente não há problemas

Se transações concorrentes tiverem suas operações intercaladas de forma que o resultado final seja o mesmo que alguma das combinações seriais, essa intercalação é SERIALMENTE EQUIVALENTE!

Protocolos de controle de concorrência se baseiam nesse princípio

Page 9: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

9Controle de Concorrência em Sistemas Distribuídos

Transações: Equivalência Serial

Um mesmo objeto pode ser requisitado por operações de transações diferentes

É dito que um par de operações é conflitante quando o resultado depende da ordem que elas aparecem na execução

Operações de transações diferentes

Conflito?

Read Read Não

Read Write Sim

Write Read Sim

Page 10: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

10Controle de Concorrência em Sistemas Distribuídos

Transações: Equivalência Serial

É possível definir a ordem das operações conflitantes

“Para que duas transações possuam equivalência serial, é necessário e suficiente que todos os pares de operações conflitantes sejam

executados na mesma ordem”

Transação T Transação U

x = read(i);

write(i, 10);

write(j, 20);

y = read(j);

write(j, 30);

z = read(i);

Não há equivalência serial:T acessa i antes de UU acessa j antes de T

Page 11: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

11Controle de Concorrência em Sistemas Distribuídos

Locks

Um mecanismo que faz com que duas transações concorrentes sejam serialmente equivalentes

Quando ocorre um conflito de operações, o objeto acessado é “bloqueado”

Outro cliente deve aguardar até que o objeto seja “liberado” para poder acessá-lo

Page 12: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

12Controle de Concorrência em Sistemas Distribuídos

Locks Simplesmente bloquear um objeto e liberá-lo

logo após o uso não garante a equivalência serial

Transação T Transação U

x = b.read(); (lock b)y = b.read(); (wait b)

b.write(x-10);

y = b.read(); (lock b)

y = y + c.read(); (lock c)

c.write(x+10); x = c.read(); (lock c)

unlock(b)

unlock(c)

unlock (b)

unlock (c)

Page 13: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

13Controle de Concorrência em Sistemas Distribuídos

Locks: Two Phase Locking

Garante a equivalência serialDepois que a transação libera um lock

ela não pode adquirir mais nenhumA transação é dividida em duas fases:

Crescimento: Os locks são adquiridosEncolhimento: Os locks são liberados

O encolhimento ocorre após a execução de um commit ou rollback

Page 14: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

14Controle de Concorrência em Sistemas Distribuídos

Locks: Compatibilidade de Operações

Se duas transações acessam o mesmo objeto somente para leitura não há riscos de inconsistência

Um mecanismo simples que observa uma operação read da mesma maneira que uma operação write reduz a concorrência mais que o necessário

Page 15: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

15Controle de Concorrência em Sistemas Distribuídos

Locks: Compatibilidade de Operações

É interessante que seja possível ter diversas transações lendo um objeto ou somente uma alterando-o

Mecanismo referenciado como “many reades / single writer”

São utilizados dois tipos de locks:Read LocksWrite Locks

Page 16: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

16Controle de Concorrência em Sistemas Distribuídos

Locks: Compatibilidade de Operações

Lock existente

Lock solicitado

read write

none OK OK

read OK wait

write wait wait

Page 17: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

17Controle de Concorrência em Sistemas Distribuídos

Locks: Promoção

Uma mesma transação pode efetuar operações de leitura e escrita em um mesmo objeto

Quando realizada uma leitura, um read lock é atribuído ao objeto

Se for solicitada uma leitura é feita uma promoção para write lock

Um write lock não pode virar um read lock

Page 18: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

18Controle de Concorrência em Sistemas Distribuídos

Locks: Deadlocks

O uso de locks pode levar a uma situação de deadlock

Transação T Transação U

Operações Locks Operações Locks

a.deposito(100);

b.saque(100);

write lock a

Aguarda U

b.deposito(100);

a.saque(100);

write lock b

Aguarda T

Page 19: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

19Controle de Concorrência em Sistemas Distribuídos

Locks: Deadlocks

É possível representar as “esperas” através de um grafo dirigido

Os vértices representam as transaçõesAs arestas representam a espera de

uma transação Tx por uma transação Ty

Um circuito encontrado no grafo indica a existência de um DeadLock

T U

espera por

espera por

Page 20: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

20Controle de Concorrência em Sistemas Distribuídos

Locks: Deadlocks

Uma vez que um Deadlock é detectado, para resolvê-lo é preciso abortar uma das transações envolvidas

É necessário decidir qa respeito de qual transação abortar:Número de ciclos dos quais ela faz parteTimeout

Page 21: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

21Controle de Concorrência em Sistemas Distribuídos

Controle Otimista de Concorrência

Parte do princípio de que a possibilidade de haver duas transações em conflito é baixa

A transação prossegue sem solicitar locks

Escritas realizadas em cópias tentativasLeituras realizadas diretamente nos

objetos

Page 22: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

22Controle de Concorrência em Sistemas Distribuídos

Controle Otimista de Concorrência

Quando é solicitado o encerramento da transação é verificado se há conflitos

Se houver conflito uma transação é abortada e deve ser reiniciada

Cada transação possui três fases:TrabalhoValidaçãoAtualização

Page 23: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

23Controle de Concorrência em Sistemas Distribuídos

Controle Otimista: Validação de Transações

São mantidos os grupos de objetos lidos e objetos alterados por uma transação

Na validação é verificada a existência de conflitos entre as operações das transações concorrentes

Tv Ti Regra

write

read

write

read

write

write

1

2

3

Ti não pode ler objetos escritos por Tv

Tv não pode ler objetos escritos por Ti

Ti não pode escrever objetos escritos por Tv e

Tv não pode escrever objetos escritos por Ti

Page 24: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

24Controle de Concorrência em Sistemas Distribuídos

Controle Otimista: Validação de Transações

Cada transação que entra na fase de validação recebe, sequencialmente, um número identificador

Duas formas de validaçãoBackward ValidationForward Validation

Page 25: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

25Controle de Concorrência em Sistemas Distribuídos

Controle Otimista: Backward Validation

A transação validada é comparada com aquelas que foram iniciadas antes do começo de sua fase de validação e que já foram efetivadas

Transação Tv é compara-da com as transações T2

e T3.

Quais serão as transa-ções a serem compara-das?

Page 26: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

26Controle de Concorrência em Sistemas Distribuídos

Controle Otimista: Backward Validation

É necessário realizar a validação apenas da regra 2

Se a regra não for obedecida é necessário abortar a transação sob validação

É necessário manter o conjunto de objetos escritos de uma transação até que todas aquelas que possuem sobreposição a ela sejam validadas

Page 27: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

27Controle de Concorrência em Sistemas Distribuídos

Controle Otimista: Forward Validation

A transação validada é comparada com aquelas em atividade

É necessário realizar a validação apenas da regra 1

Transações read-only sempre passam pela validação

Transações em conflito estão ativas, flexibilizando a escolha de “qual abortar”

Page 28: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

28Controle de Concorrência em Sistemas Distribuídos

Controle por Timestamp

Toda transação, no momento de sua criação, recebe um timestamp

O timestamp define a posição da transação

Cada transação que aplica uma operação de write possui uma versão “tentativa” do objeto

Page 29: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

29Controle de Concorrência em Sistemas Distribuídos

Controle por Timestamp

As versões tentativas devem ser efetivadas na ordem dos timestamps das transações

T1 T2 T3 T4

OBJ

OBJ OBJ OBJ OBJ

OBJ

OBJ Tentativa

Efetiva

Page 30: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

30Controle de Concorrência em Sistemas Distribuídos

Controle por Timestamp

A versão efetiva do objeto possui um write timeStamp

Cada versão tentativa possui:write timestampConjunto de read Timestamp

Page 31: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

31Controle de Concorrência em Sistemas Distribuídos

Controle por Timestamp

Operações write:Mantidas na versão tentativa até o commitExecutada no momento do closeTransactionCliente não precisa aguardar

Operações read:Direcionadas para a versão com maior

Timestamp que seja <= que a transaçãoPrecisa aguardar pelas transações

anteriores

Page 32: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

32Controle de Concorrência em Sistemas Distribuídos

Controle por Timestamp

Não ocorre DeadlockRegra para a escrita d um objeto D por

uma transação Tc:

if (Tc >= Maior read timestamp de D && Tc > write timestamp da versão efetiva Executa o write na versão tentativa Tcelse Aborta a transação Tc

Page 33: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

33Controle de Concorrência em Sistemas Distribuídos

Controle por Timestamp: Exemplo de Escrita

OBJ T2 OBJ T3

Exemplo 1:

OBJ T1 OBJ T2

Exemplo 2:

OBJ T3

OBJ T1 OBJ T4

Exemplo 3:

OBJ T4OBJ T3

OBJ T4

Exemplo 4:

OBJ T3

OBJ T3

OBJ

OBJ Tentativa

Efetiva

Page 34: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

34Controle de Concorrência em Sistemas Distribuídos

Controle por Timestamp: Leitura

A leitura de um objeto deve ser realizada seguindo os Timestamps. Sendo a regra:

if (Tc >= Maior write timestamp da versão efetiva de D){ let Dselected = D com maior write timestamp <= Tc

if (Dselected é uma versão efetiva) Executa read sobre a versão Dselected

else Aguarda até que a transação que gerou Dselected seja efetivada ou abortada e reaplica a regra de leitura}else Aborta a transação Tc

Page 35: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

35Controle de Concorrência em Sistemas Distribuídos

Controle por Timestamp: Leitura

T2

Exemplo 1:

T2 T4

Exemplo 2:

T1

Exemplo 3:

T2

T4

Exemplo 4:

T3Seleciona

T3

Seleciona

T3Seleciona

Efetua leitura!

Efetua leitura!

Aguarda commit ou rollback!!

T3

OBJ

OBJ Tentativa

Efetiva

Page 36: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

36Controle de Concorrência em Sistemas Distribuídos

Controle por TimeStamps

O commit deve ser feito na ordem dos timestamps

Se for necessário aguardar por transações anteriores o cliente não precisa aguardar

Necessidade de armazenar as cópias tentativas pertencentes a transações efetivas em meios persistentes

Page 37: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

37Controle de Concorrência em Sistemas Distribuídos

Multiversion Timestamp

Para um mesmo objeto é mantida uma lista das versões efetivas

Semelhante a um históricoOperações de read que chegam

“atrasadas” não precisam ser abortadasDa mesma forma que no sistema básico

de timestamps, as operações de escrita são realizadas em versões tentativas

Page 38: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

38Controle de Concorrência em Sistemas Distribuídos

Multiversion Timestamp

Toda versão efetiva possui dois Timestamps:Da transação que a gravouMaior Timestamp de leitura

Operações de leitura são sempre aceitas, mas podem precisar aguardar

Cuidado com as transações de escrita que afetariam uma leitura já realizada

Page 39: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

39Controle de Concorrência em Sistemas Distribuídos

Multiversion Timestamp

Operações de escrita de transações diferentes não são conflitantes

Regra de escrita:

if (read timestamp of DmaxEarlier <= Tc{ executa o write na versão tentativa com w-ts Tc

}else Aborta a transação Tc

Page 40: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

40Controle de Concorrência em Sistemas Distribuídos

T3

Multiversion Timestamp

r,w

r,w Tentativa

Efetiva

?,T1 ? ,T3 ?,T2

read

write

T3,T2

T5

read

T5 ,T3

T4

write

Page 41: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

41Controle de Concorrência em Sistemas Distribuídos

Multiversion Timestamp

Maior uso de espaço em discoTransações read-only sempre são

realizadasRazoável nível de concorrênciaInexistência de Deadlocks

Page 42: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

42Controle de Concorrência em Sistemas Distribuídos

Conclusão

Diversos mecanismos para o controle de concorrência

Diferença entre o grau de concorrênciaSerialização estática ou dinâmicaTransações somente leituraDeadlocksDecisão de qual transação abortar

Page 43: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

43Controle de Concorrência em Sistemas Distribuídos

Page 44: Controle de Concorrência em Sistemas Distribuídos Aluno: Fabiano Costa Teixeira Disciplina: Sistemas Distribuídos Professor: Dr. Marcos José Santana

44Controle de Concorrência em Sistemas Distribuídos

Referência Bibliográfica

Coulouris, G., Dollimore, J., Kindberg, T.:

“Distributed Systems: Concepts and Design”

Addison-Wesley, páginas.: 465-510, 2001