Sie sind auf Seite 1von 29

Sistemas

Distribudos
Parte 08
Controle de Concorrncia
Coantedo adaptado a partir do material do professor Edmar Rezende (PUCCampinas)

Transaes Distribudas
Transaes que afetam dados armazenados em um nico
local podem ser tratadas como se ocorressem em um
banco de dados centralizado
Transaes que envolvem mais de um local precisam de
coordenao
As propriedades A.C.I.D. precisam ser mantidas em
todos os locais envolvidos na transao
Mudanas de estado ATOMICAS em todas as mquinas
envolvidas
Todos os locais devem ter dados CONSISTENTES
As transaes devem ocorrer de forma ISOLADA apesar do
paralelismo
As alteraes em todas as rplicas de dados devem ser DURVEIS

Transaes Distribudas
Falhas que podem afetar a execuo de transaes
distribudas:
Falhas de mquinas
Falhas de comunicao entre as mquinas envolvidas
Mensagem perdida ou corrompida
Indisponibilidade de rota
Particionamento da rede pode obrigar a um aborto
da transao
Quando uma mquina no responde, as demais no
tem como saber se ocorreu uma falha de mquina ou
de comunicao, muito menos se a falha temporria
ou permanente
3

Transaes Distribudas
Tratamento de falhas em transaes
distribudas
Rplicas de dados hospedados no site que falhou
deixam de ser atualizadas
O site no mais usado em transaes futuras
Transaes ativas no site que falhou so abortadas
Se o servidor que falhou desempenha um papel
vital, deve ser substitudo por outro
Ao se reintegrar rede, o site deve ter seu estado
atualizado perante os demais e qualquer conflito
deve ser resolvido (preferencialmente antes de estar
disponvel aos usurios e aplicaes)
4

Transaes Distribudas
Modos de execuo:
Podem ser executadas de modo:
Sequencial: Uma transao T1
termina antes do incio de outra
transao T2, ou comea aps o final
de T2
Concorrente: Partes das transaes
T1 e T2 podem ser processadas
simultaneamente, sem prejudicar a
consistncia de ambas
5

Transaes Distribudas
Modos de execuo (cont.):
Execues concorrentes so necessrias
para melhorar o desempenho do ambiente
(especialmente em ambientes distribudos)
O sistema ao qual a transao foi
submetida deve garantir que no
haja interferncia das demais
transaes
Ou seja: garantir a propriedade de
isolamento de transaes
6

Isolamento e Serializao
Isolamento
Uma transao no toma
conhecimento de outras transaes
concorrentes
Para se formalizar o isolamento
adotado o critrio de serializao

Isolamento e Serializao
Serializao
Quando diversas transaes concorrentes
so executadas, suas operaes podem ser
intercaladas de modo inconveniente,
causando inconsistncias
O critrio de serializao a garantia
assegurada pelo sistema de que o
resultado da execuo concorrente de
um conjunto de transaes seja o
mesmo que o produzido pela sua
execuo serial (sequencial).
8

Escalonador (Scheduler)
As transaes devem garantir execuo em
isolamento, porm, na maioria dos sistemas h
muitas transaes sendo executadas ao mesmo
tempo.
O escalonador (tambm conhecido como
Scheduler ou Gerenciador de Controle de
Concorrncia) deve assegurar que as aes
individuais das vrias transaes sejam
executadas em tal ordem de forma que o efeito
final seja igual ao que seria se as transaes
fossem realmente executadas em sua totalidade,
uma de cada vez (serializadas)
9

Escalonador (Scheduler)
Como trabalha um escalonador?
Um scheduler tpico utiliza bloqueios (locks)
sobre os itens do banco de dados para essa
finalidade.
Esses bloqueios impedem que duas transaes
tenham acesso ao mesmo item de dado por
meios que interajam de forma incorreta.
Em geral, os bloqueios so armazenados em
tabelas de bloqueios na memria principal
10

Bloqueios (Locks)
uma tcnica bastante usada por SGBDs
Para garantir escalonamento serializvel
necessrio que o acesso ao dado seja feito de
modo mutuamente exclusivo
Enquanto uma transao acessa um dado
outra no poder modific-lo
O escalonador recebe solicitaes das
transaes e decide se elas vo acessar o
dado ou esperar at que seja seguro o acesso.
11

Bloqueios (Locks)
Para decidir que transao vai acessar
determinada informao o escalonador usa uma
tabela de bloqueios
A transao pode realizar suas operaes somente
depois que o gerenciador de controle de
concorrncia concedeu o bloqueio a transao
A transao s acessa um dado sobre o qual ela
mantm algum tipo de bloqueio
necessrio definir o modo de bloqueio apropriado
para o tipo de acesso desejado
Modo Compartilhado (shared) - s pode ler
Modo Exclusivo (exclusive)- ler e escrever
12

Bloqueios (Locks)
Matriz de compatibilidade

BLOQUEIO SOLICITADO
Compartilha Exclusivo
do

BLOQUEI
O
EXISTENT Compartilha
E
do
Exclusivo

SIM

NO

NO

NO

Durante um bloqueio, transaes com modos


incompatveis esperam

13

Bloqueios (Locks)
Instrues de bloqueio
Para fins de demonstrao de situaes de
bloqueio, usa-se:
Para bloqueios compartilhados (Shared Lock)
LOCK-S(Q)

Para bloqueios exclusivos (Exclusive Lock)


LOCK-X(Q)

Para liberao (Unlock) de qualquer bloqueio


UNLOCK(Q)

Onde Q o recurso manipulado pela


transao
14

Bloqueios (Locks) Exemplos


Considere duas transaes T1 e T2, onde:
T1 transfere 50 da conta A para a conta B
T2 apresenta o resultado de A+B

T1
lock-X(A)
read(A)
A:=A-50
write(A)
unlock(A)
lock-X(B)
read(B)
B:=B+50
write(B)
unlock(B)

T2
lock-S(B)
read(B)
unlock(B)
lock-S(A)
read(A)
unlock(A)
display (B+A)

Em execuo serial:
Se: T1 e depois T2 display (B+A) = 300
Se: T2 e depois T1 display (B+A) = 300
15

Bloqueios (Locks) Exemplos


O que acontece se o dado for liberado logo aps
o acesso a ele?
TEMPO
T1
T2

Passa a
mostrar 250

lock-X(A)
read(A)
A:=A-50
write(A)
unlock(A)

lock-X(B)
read(B)
B:=B+50
write(B)
unlock(B)

ERRADO !!!
lock-S(B)
read(B)
unlock(B)
lock-S(A)
read(A)
unlock(A)
display (B+A)

16

Bloqueios (Locks) Exemplos

O que acontece se a liberao for adiada?


TEMPO

T1
lock-X(A)
read(A)
A:=A-50
write(A)

lock-X(B)
read(B)
B:=B+50
write(B)
unlock(A)
unlock(B)

T2

Deve aguardar
a libero de B

Deve aguardar
a libero de A
lock-S(B)
read(B)
lock-S(A)
read(A)
display (B+A)
unlock(B)
unlock(A)

DEADLOCK !!!
17

Protocolos de Bloqueio
Concluso:
Se maximizarmos a concorrncia (liberao do dado o mais
cedo possvel) podemos gerar estados inconsistentes
Se no liberarmos o dado antes de bloquearmos outro, pode
ocorrer deadlock
Em virtude destas duas situaes necessria a aplicao
de certas regras que definam quando uma transao pode
bloquear e liberar cada dado

Chamamos estas regras de protocolos de bloqueio


Estes protocolos garantem que quando uma transao
solicita bloqueio sobre um determinado item de dado em
particular, e nenhuma outra transao mantm o mesmo
item de dado bloqueado de modo conflitante, tal bloqueio
pode ser concedido.
18

Exemplo: Protocolo 2 PL
Tambm conhecido como:
Protocolo Two Phase Lock
Protocolo Bifsico de Bloqueio

Funcionamento:
Cada transao deve bloquear e liberar recursos
em duas fases distintas:
Fase de expanso: uma transao pode
obter bloqueios, mas no pode liberar nenhum
Fase de encolhimento: uma transao pode
liberar bloqueios, mas no consegue obter
nenhum bloqueio novo
19

Exemplo: Protocolo 2 PL

O ponto de escalonamento no qual a transao obteve


seu bloqueio final (o fim da fase de expanso) chamado
de ponto de bloqueio da transao
As transaes podem ser ordenadas de acordo com seus
pontos de bloqueio
Essa ordenao , de fato, uma ordenao serializada
de transaes
Importante: O protocolo 2PL no garante imunidade
contra deadlocks

20

Exemplo: Protocolo 2 PL
Se uma transao Ti falhar, por qualquer razo,
preciso desfazer seus efeitos para garantir a
propriedade de atomicidade de transao.
Em um sistema que permite execues concorrentes,
tambm necessrio assegurar que qualquer
transao Tj que seja dependente de Ti (Tj leu dados
escritos por Ti) tambm seja abortada.
Escalonamentos de execuo recuperveis:
quando a transao que dependente de outra no
efetivada antes que a outra o seja.
Escalonamentos sem Cascata: quando para cada
par de transaes Ti e Tj, Tj leia um item de dado
previamente escrito por Ti se Ti j se efetivou.
21

DEADLOCKs
Como lidar com deadlocks?
Mtodo 1: Deteco e recuperao de deadlocks
Deixar acontecer o deadlock, e depois administrar o problema
Para detectar deadlock, dever existir um mecanismo de
monitoramento peridico da situao. necessrio:
Manter informaes sobre a alocao de dados s transaes.
Ter um algoritmo que usa estas informaes para descobrir se
est havendo algum deadlock
No caso de se perceber a ocorrncia de algum deadlock,
realizar a recuperao (administrar o problema - rollback)
Soluo possvel: desfazer uma das transaes envolvidas para
que as demais se liberem
preciso haver uma regra/mtodo para escolher uma
transao vtima (geralmente escolhe-se a de menor custo)
22

DEADLOCKs
Como lidar com deadlocks?
Mtodo 2: Preveno contra deadlocks
No deixar entrar em deadlock
Mtodo usado quando a probabilidade de haver
deadlocks muito alta
Existem vrias forma de implementar
Solues PESSIMISTAS:
Bloqueio 2PL rigoroso (ou conservador)
Timestamp (wait-die e wound-wait)
Espera Cautelosa (cautious-waiting)

Soluo OTIMISTA:
Validao
23

DEADLOCKs
Bloqueio 2PL Conservador
Variante do protocolo 2PL original
Funcionamento:
Uma transao Tx deve bloquear todos os dados que deseja
antes de iniciar qualquer operao
Caso no seja possvel bloquear todos os dados, nenhum
bloqueio feito e Tx entra em espera para tentar novamente

Vantagem
Uma vez adquiridos todos os seus bloqueios, Tx no entra
em deadlock durante a sua execuo

Desvantagem
H ocorrencia de overhead devido aos bloqueios
A impossibilidade de bloquear todos os dados envolvidos
pode gerar longas esperas
24

DEADLOCKs
Timestamp
Para cada transao Tx atribudo um rtulo de
tempo associado TS(Tx) Timestamp de Tx
Cada dado tambm possui seu timestamp

Funcionamento:
Quando uma transao bloqueia um determinado dado,
atualiza o timestamp do mesmo com seu prprio timestamp.
Quando uma transao deseja usar um dado j bloqueado,
compara seu timestamp com o timestamp do dado solicitado:
Tcnica 1 - esperar ou morrer (wait-die)
Se TS(Tx) <= TS(dado)
Ento Tx espera
Seno ABORT(Tx) e START(Tx) com o
mesmo timestamp

Tcnica 2 ferir ou esperar (wound-wait)


Se TS(Tx) <= TS(dado)
Ento ABORT(Tx) e START(Tx) com
o mesmo timestamp
Seno Tx espera

(quanto mais antiga a transao, maior a


possibilidade de esperar)

(a transao mais antiga nunca espera a mais


nova)
25

DEADLOCKs
Timestamp
Problema:
Trata bloqueios exclusivos e compartilhados como se fosse a
mesma coisa (isso obriga a tratar todos como exclusivos)

Soluo:
Usar dois timestamps para cada dado: um para leitura e atualizao
(exclusivo) e outro pra apenas leitura (compartilhado)

Vantagem
Evita starvation (espera indefinida) de uma transao
A ordem de execuo das transaes definida (indiretamente)
antes que elas comecem a executar
Elimina o overhead de bloqueio

Desvantagem
Muitos abortos podem ser provocados, sem nunca ocorrer um
deadlock
26

DEADLOCKs
Espera Cautelosa
Funcionamento
Se Tx deseja um certo dado e este est bloqueado por
Ty ento:
Se Ty no est em alguma outra fila de espera
Esto Tx espera
Senao ABORT(Tx) e START(Tx)
Vantagem
Se Ty j est em espera, Tx abortada para evitar um possvel
ciclo de espera

Desvantagem
A mesma das tcnicas baseadas em timestamp (muitos abortos
podem ser provocados, sem nunca ocorrer um deadlock)

27

DEADLOCKs
Validao
Tcnica na qual atualizaes de uma transao Tx
so feitas sobre cpias locais dos dados
Funcionamento
Um processo que comea uma transao cria um espao
privado em memria contendo cpias de todos os objetos
manipulados pela transao
Se ocorrer commit, feita uma validao entre os dados
originais e as cpias alteradas
Tx violou a serializao? (ou seja: algum mais alterou
este objeto durante a transao Tx?)
NO: a transao atualiza o dado original a partir de
suas cpias alteradas
SIM: Tx abortada e reiniciada posteriormente
28

DEADLOCKs
Validao
Vantagens
Reduz o overhead durante a execuo de Tx
Evita aborto em cascata
Tx no grava alteraes em dados antes de suas
atualizaes serem validadas em memria
Desvantagens
Se houve interferncia entre Tx e outras
transaes (isso no esperado pois a tcnica
otimista), isso descoberto somente ao final da
execuo de Tx inteira (na validao) e s aps
essa validao Tx pode ser reiniciada
29

Das könnte Ihnen auch gefallen