Você está na página 1de 67

Sincronizao em Sistemas Distribudos

5 Introduo
Em

sistemas monoprocessados, a sincronizao entre processos geralmente feita atravs de mecanismos que garantem a excluso mtua. Estes mecanismos presupem a existncia de um meio nico e global de comunicao (e.g. memria compartilhada).

5 Em sistemas distribudos, como no existe


uma estrutura fsica global compartilhada, ns utilizamos frequentemente algortimos distribudos para resolver este problema. Propriedades do algoritmo distribudo:
Cada

Introduo

nodo guarda uma parte da informao utilizada na deciso Os processos baseiam sua deciso em informao parcial (geralmente local). No deve existir singularidade. No existe tempo global (clock nico)

5 Clocks lgicos
Todo computador possui um clock que d a noo de tempo para a mquina. Na realidade, o clock um circuito baseado em cristal de quartzo que oscila em uma frequncia pr-estabelecida. A frequncia programada por hardware e so geradas interrupes de tempo nesta frequencia. O computador mantem a noo de tempo fsico atualizando uma posio de memria prestabelecida a cada interrupo de tempo.

Em um sistema monoprocessador, a fonte de tempo nica pois temos um nico clock. Em um sistema distribudo, temos n nodos, cada um com o seu clock. impossvel fazer com que os clocks de todos os nodos possuam exatamente a mesma frequncia. Como os clocks possuem frequencias ligeiramente diferentes, medida que o tempo passa, os nodos vo perdendo o sincronismo (escorregamento do clock). Assim, programas que raciocinam sobre o tempo fsico provavelmente no executaro corretamente em ambientes distribudos.

Clocks lgicos

5 Clocks lgicos
No

entanto, possvel utilizar um algoritmo que produza um tempo nico e sem ambigidade. Para tanto, necessrio distinguir as noes de tempo fsico e tempo lgico. Tempo fsico:tempo real medido pelos relgios (dd,mm,yy,hh,mm,ss) Tempo lgico: tempo baseado na ordem dos eventos observados

5 Para os algoritmos que usam a noo de tempo


lgico, ns utilizamos clocks lgicos. A sincronizao de clocks lgicos foi proposta pela primeira vez por Lamport e baseia-se na relao acontece-antes (happens-before). Um par de eventos obedece a relao happensbefore se ( a hb --> b) se: Se a e b so eventos do mesmo processo e a hb ocorre antes de b ento a --> b. Se a o evento de envio de mensagem e b o evento de recepo da mesma mensagem, ento a hb --> b.

Clocks lgicos

5 Clocks lgicos
A relao happens-before transitiva. Se a happens-before b e b happens-before c, ento a happens-before c. Se dois eventos no esto relacionados pela relao happens-before eles so ditos eventos concorrentes. Sobre os eventos concorrentes, nada se pode afirmar sobre a ordem de acontecimento.

5 Clocks lgicos
Baseado na relao happens-before, Lamport prope um algoritmo onde atribumos a cada evento um valor C(a), com o qual todos os processos que o observam concordem. Os valores devem respeitar a relao happensbefore. Se a happens-before b ento C(a) < C(b). Os valores C(x) so obtidos de maneira crescente.

5 Clocks lgicos
Uma

mensagem que deixa a sua mquina no instante t deve chegar na outra mquina no instante t onde t > t.
P0
0 6 12 18 0 10 21 31

P1

P2
0 4 22 8

5 Clocks lgicos

O algoritmo de Lamport fornece um ordenamento total dos eventos em um sistema distribudo. Ordenamento total: Todos os processos distribudos possuem a mesma viso da ordem de todos os eventos do sistema Ordenamento parcial: Todos os processos distribudos possuem a mesma viso da ordem de um subconjunto os eventos do sistema

5 Excluso Mtua Distribuda


Vrios sistemas compostos de vrios processos utilizam a excluso mtua para garantir o acesso exclusivo a uma poro de cdigo. A excluso mtua geralmente implementada atravs de semforos, monitores, etc. Alguns algoritmos utilizados para garantir a excluso mtua: algoritmo centralizado algoritmo de Lamport algoritmo do token ring

Excluso Mtua Distribuda 5 Algoritmo centralizado


Neste caso, um processo o coordenador. Cada solicitao de entrada em seo crtica deve ser enviada ao processo coordenador, que decidir se o processo solicitante pode ou no entrar. Se no houver ningum na seo crtica, o coordenador envia uma mensagem OK ao processo solicitante. O processo solicitante executa a seo crtica. Quando o processo solicitante quiser deixar a seo crtica, ele envia uma mensagem ao coordenador.

Excluso Mtua Distribuda 5 Algoritmo centralizado


Funcionamento

(lock liberado)
Coordenador
tabela de locks 1 lx 0 0 ly 0

Solicitante

lock(lx) OK(lx) OK(lx) unlock(lx)

Excluso Mtua Distribuda 5 Algoritmo centralizado


Funcionamento

(lock ocupado)
Coordenador
tabela de locks
P1 lx ly 1 0

Solicitante P1

lock(lx)

Excluso Mtua Distribuda 5 Algoritmo centralizado


Caractersticas
Garante

do algoritmo:

a excluso mtua

justo No h starvation Nmero de mensagens por requisio: 2

Problemas tradicionais de abordagens centralizadas:


No

h tolerncia falhas se o coordenador falhar Possibilidade de saturao do coordenador

Excluso Mtua Distribuda 5 Algoritmo de Lamport


O algoritmo proposto por Lamport distibudo. Este algoritmo admite como hiptese que existe o ordenamento total dos eventos do sistema Podem ser utilizados os relgios lgicos para garantir isso!!! Ricart et Agrawala tornaram este algoritmo mais eficiente

Excluso Mtua Distribuda 5 Algoritmo de Lamport


Funcionamento:
Assume-se

um esquema confivel de comunicao (toda mensagem enviada recebida). Quando um processo deseja entrar na seo crtica, ele envia uma mensagem com o nome da seo crtica, seu nmero e o seu tempo para todos os outros processos.
Pode

ser utilizado o esquema de broadcast ou grupos de processos

Excluso Mtua Distribuda 5 Algoritmo de Lamport

Funcionamento (cont): Ao receber uma solicitao de entrada em seo crtica, o processo pode tomar as seguintes aes:
Se

ele no estiver na seo crtica e nem desejar entrar nela, responde OK. Se ele estiver na seo crtica, no responde nada e guarda a solicitao. Se ele quiser tambm entrar na seo crtica, ele compara o tempo da mensagem recebida com o tempo no qual a sua mensagem de solicitao foi enviada. Se o tempo da mensagem recebida for menor, envia um OK. Seno, coloca a mensagem recebida na fila.

Excluso Mtua Distribuda 5 Algoritmo de Lamport

Funcionamento (cont): O processo s entra na seo crtica se receber OK de todos os outros processos. Quando o processo sair da seo crtica, ele envia um OK a todos os processos que esto na sua fila.

Excluso Mtua Distribuda 5 Algoritmo de Lamport


Ilustrao
8

do funcionamento:
P2
P2 OK OK P1 OK P0 P1 P2

P2
8 8 P0 5 P1 5 OK P0

P2

Excluso Mtua Distribuda 5 Algoritmo de Lamport

Caractersticas do algoritmo: Garante a excluso mtua justo No h starvation Nmero de mensagens por entrada na seo: 2(n-1) Uma falha em um componente faz que os processos interpretem errneamente como acesso negado seo crtica.
Soluo:

temporizadores

Possivel

gargalo pois agora todos os processadores

Excluso Mtua Distribuda 5 Algoritmo do anel


Neste caso, os processos da rede so ordenados logicamente e todos tm conhecimento desta ordenao. Cada processo recebe um nmero sequencial, que vai de 0 at n-1, onde n o nmero de processos. Cada processo tem a sua vez de entrar na seo crtica, que determinada por um token que fica circulando pelo sistema. Ao terminar o acesso seo crtica, o processo x passa o token ao processo (x+1) MOD n.

Excluso Mtua Distribuda 5 Algoritmo do anel


Funcionamento:
P2 P1 P0 P3 P4

P7 P6

P5

Excluso Mtua Distribuda 5 Algoritmo do anel

Caractersticas do algoritmo: Garante a excluso mtua justo No h starvation A perda do token pode levar o sistema a um estado de deadlock A falha de um nodo pode ser detectada se um processo desejar passar o token e no conseguir. A entrada/sada de processos do anel uma operao demorada.

5 Algoritmos eletivos
A maioria dos algoritmos distribudos utiliza um coordenador, responsvel pelo bom andamento do algoritmo. Como o coordenador escolhido? Arbitrariamente

Sistemas

de caractersticas no-homogneas (processador mais rpido, processador conectado diretamente ao sistema de E/S).

Atravs

de eleio

5 Algoritmos eletivos
O algoritmo eletivo s termina quando o novo coordenador eleito e todos os outros processos sabem quem o novo coordenador. Algoritmos eletivos: Algoritmo do ditador

Algoritmos eletivos 5 Algoritmo do ditador


O algoritmo admite que todos os processos possuem uma identificao nica globalmente conhecida. Se um processo x observa que o coordenador no est respondendo s requisies, ele convoca eleies. Um processo x convoca eleies atravs do seguinte processo: Envia a mensagem ELEIO a todos os processos com identificao superior sua. Se ningum responder, x ganha. Se algum dos processos responder, ele passa a controlar a eleio.

Algoritmos eletivos 5 Algoritmo do ditador


Funcionamento:
P2 P1 P0
eleio OK eleio eleio P7 eleio

P3 P4
OK eleio

P5

P6 eleio OK

Algoritmos eletivos 5 Algoritmo do ditador


Este algoritmo conhecido como algoritmo do ditador porque o processo de nmero mais alto sempre ganha as eleies, se estiver ativo. Caso o processo de nmero mais alto tenha sido recuperado, ele envia a mensagem coordenador a todos os outros processos e assume a coordenao.

Deadlock Distribudo 5 Introduo


Processo P1: Obtem(Ra); Obtem(Rb); ---processa--

Processo P2: Obtem(Rb); Obtem(Ra); ---processa---

Quando os recursos s podem ser usados por um processo de cada vez, os processos P1 e P2 podem chegar a uma situao de bloqueio eterno, esperando por recursos que nunca sero liberados (DEADLOCK).

Deadlock Distribudo 5 Introduo


Definio

de deadlock: Um conjunto de processos est em deadlock se cada processo pertencente ao conjunto estiver esperando por um evento que somente um outro processo pertencente ao mesmo conjunto pode fazer ocorrer

Deadlock Distribudo 5 Introduo

Quatro condies necessrias para a ocorrncia de deadlocks:


Excluso mtua: cada recurso deve ser alocado de maneira exclusiva Posse e espera: um processo que detem recursos pode solicitar novos recursos. No-preempo: cada recurso s pode ser liberado pelo processo que o detem. Espera circular: deve existir um ciclo de dois ou mais processos onde cada processo est esperando por um recurso detido pelo prximo membro da cadeia.

Todas

as 4 condies devem ocorrer para que haja uma situao de deadlock

Deadlock Distribudo 5 Introduo


Processo A Req(R) Req(S) Lib(R) Lib(S)
Situao sem deadlock: A B C t0 R S A B C t1 R S A B R S T t2

Processo B Req(S) Req(T) Lib(S) Lib(T)

Processo C Req(T) Req(R) Lib(T) Lib(R)

Deadlock Distribudo 5 Introduo


Processo A Req(R) Req(S) Lib(R) Lib(S)
Situao com deadlock: A B C R S T A B C R S T

Processo B Req(S) Req(T) Lib(S) Lib(T)

Processo C Req(T) Req(R) Lib(T) Lib(R)

t0

t1

Estratgias para o tratamento 5 de deadlocks


Existem

basicamente 4 tipos de estratgias para o tratamento do deadlock:


Ignorar

o problema Detectar o deadlock e recuperar o sistema Prevenir o deadlock Evitar o estado de deadlock

Estratgias para o tratamento 5 de deadlocks - Ignorar


Ignorar

o problema

Justificativa:

No vale a pena degradar a performance do sistema para tratar uma situao que ocorre com pouca frequncia. O programador que deve se preocupar com este problema Ex: a maioria dos sistemas modernos monoprocessados e distribudos

Estratgias para o tratamento 5 de deadlocks - Detectar e recuperar


Justificativa: como existe a possibilidade de ocorrncia do problema, o sistema operacional deve trat-lo. Primeira fase: Deteco tcnica usual: Constri-se o grafo de alocao de recursos. Se existir um ciclo, todos os processos que fazem parte deste ciclo esto em deadlock. Para detectar o ciclo, deve-se utilizar um algoritmo qualquer de deteco de ciclos em grafos dirigidos

Estratgias para o tratamento 5 de deadlocks - Detectar e recuperar


Correo
O

de um algoritmo de deteco de deadlocks distribudos:


algoritmo deve ser capaz de detectar todas as situaes de deadlock em um tempo finito. O algoritmo no deve detectar nenhum falso deadlock.

Estratgias para o tratamento 5 de deadlocks - Deteco


A

deteco de deadlocks em sistemas distribudos pode ser feita das seguintes maneiras:
Algoritmo

centralizado Algoritmo distribudo Algoritmo hierrquico

Deteco de Deadlocks 5 Algoritmos Centralizados


Primeira
O

soluo:

coordenador recebe todas as solicitaes de recursos (request e release). A cada solicitao, o coordenador adiciona um nodo e um vertice no grafo global de alocao de recursos.
M0
solicita(C,T)

C A R S C T

OK

Deteco de Deadlocks 5 Algoritmos Centralizados


Primeira

soluo (cont) Algoritmo correto Alto trfego na rede Saturao do coordenador

Deteco de Deadlocks 5 Algoritmos Centralizados


Segunda
Visa

soluo

reduzir o trfego na rede. Continua a figura do coordenador, porm cada nodo mantem um grafo parcial de alocao de recursos e envia as modificaes sofridas neste grafo periodicamente ao coordenador. Devido a atrasos de comunicao, o coordenador pode ter uma viso inconsistente do sistema e detectar falsos deadlocks!!!

Deteco de Deadlocks 5 Algoritmos Centralizados


Exemplo

de falso deadlock:
M1 S C T B A R B S C C T

M0 A R B S

Deteco de Deadlocks 5 Algoritmos Centralizados

Soluo 3 Visa solucionar o problema dos falsos deadlocks. Cada nodo mantem duas tabelas: tabela de recursos e tabela de processos Tabela de recursos: mantem os processos que esperam recursos do nodo Tabela de processos: mantem processos do nodo que esperam recursos.

Deteco de Deadlocks 5 Algoritmos Centralizados


Soluo

3 (cont)
o coordenador pede as duas tabelas

Periodicamente,

de cada nodo. O grafo s construdo com os nodos que constam tanto na tabela de processos de um nodo como na tabela de recursos de outro nodo. No detecta falso deadlock

Deteco de Deadlocks 5 Algoritmos Distribudos


Neste

caso, a deteco do deadlock feita por vrios (ou todos) nodos do sistema. O grafo de alocao de recursos distribudo. Tipos de algoritmos
Path-pushing Edge-Chasing

Deteco de Deadlocks 5 Algoritmos Distribudos


Algoritmos
Cada

Path-pushing

nodo constri uma verso simplificada do grafo global de alocao de recursos. Cada vez que uma deteco de deadlock iniciada, o nodo manda a sua viso do grafo para os seus vizinhos. Recebendo o grafo, o nodo continua passando-o a seus vizinhos at que algum nodo possua uma viso suficientemente completa do grafo e possa decidir se h ou no deadlock.

Deteco de Deadlocks 5 Algoritmos Distribudos


Algoritmos
Muitos

Path-pushing (cont)

dos algoritmos path-pushing propostos na literatura so incorretos, apesar de todos terem sido provados corretos. Isso aconteceu porque, na poca (final dos anos 70 e incio dos anos 80), no se conhecia bem como obter estados globais consistentes em um sistema distribudo.

Deteco de Deadlocks 5 Algoritmos Distribudos


Algoritmos
Ao

edge-chasing

invs de enviar pedaos de paths entre nodos, os algoritmos edge-chasing percorrem de maneira distribuda os paths atravs de mensagens especiais (probes). Se o probe voltar para o nodo que o iniciou, o deadlock detectado.

Deteco de Deadlocks 5 Algoritmos Distribudos


Algoritmos
Estes

edge-chasing (cont)

algoritmos so mais confiveis pois o grafo percorrido de maneira distribuda (no criada uma viso do grafo em cada nodo). Mesmo assim, foi proposto e provado um algoritmo desta categoria que no detectava deadlocks quando o nodo origem da pesquisa tinha somente um processo envolvido no deadlock. Este algoritmo foi rapidamente resolvido.

Deteco de Deadlocks 5 Algoritmos Hierrquicos


Neste

tipo de algoritmo, os nodos esto organizados em clusters e o deadlock s detectado intra-cluster. Os nodos so divididos em: nodos-folha (gerenciam recursos) e outros nodos (detectam deadlocks). Quando ocorre uma mudana, o nodo no qual a mudana ocorreu passa esta informao para o pai, que vai atualizar o grafo e procurar ciclos.

Deteco de Deadlocks 5 Algoritmos Hierrquicos


root Deadlock intracluster Deadlock intercluster

nfolha0

nfolha1

folha00

folha01

folha10

folha11

5 Recuperao de Deadlocks
Tendo

detectado um deadlock, devemos tomar as medidas necessrias para desfazlo. Para desfazer um deadlock, devemos quebrar o(s) ciclo(s), matando processos ou forando a liberao de recursos.

5 Recuperao de Deadlocks
Em

um sistema distribudo, temos os seguintes complicantes:


Um

processo que detecta um deadlock no conhece necessariamente todos os processos envolvidos. Dois ou mais processos podem detectar simultaneamente o mesmo deadlock. Se este for o caso, sero tomadas mais aes do que o necessrio (morte de processos, liberao de recursos). Precisamos definir que processo vai recuperar o deadlock.

5 Recuperao de Deadlocks
O processo escolhido para resolver o deadlock necessita de uma fase de conversao com os outros processos para obter as informaes necessrias resoluo. Estando de posse destas informaes:

Selecionar uma vtima Matar a vtima Liberar os recursos da vtima Deletar todas as informaes sobre a vtima nos outros nodos.

O algoritmo de deteco de deadlock no deve rodar enquanto estivermos na fase de recuperao !!

possibilidade de deteco de falsos deadlocks

Preveno de Deadlocks 5
Como

existem 4 condies necessrias para a ocorrncia de deadlocks, uma maneira de impedir que estes ocorram e fazer com que uma destas 4 condies no seja nunca verdadeira.
Excluso

mtua Posse e espera No-preempo Espera circular

Preveno de Deadlocks 5 Impedir a excluso mtua


Restringir

ao mximo o numero de processos que podem solicitar um determinado recurso.


Impressoras:

spool de impresso (o recurso so pode ser solicitado ao gerenciador de impresso) Bloqueio de registros: SGBD Problemas: nem todos os recursos podem ser gerenciados por um processo nico.

Preveno de Deadlocks 5 Impedir a posse e espera

Impedir que os processos possuam recursos enquanto esperam por outros. Fazer com que os processos solicitem todos os recursos que necessitam, antes da execuo.
Problema:

necessidade de conhecimento futuro, utilizao no otimizada de recursos.

Um

processo que solicita recursos deve liberar todos os recursos que adquiriu anteriormente para depois tentar adquirir de uma vez todos os recursos necessarios.
Problema:

programao mais complexa, no previne o deadlock, apenas reduz a sua probabilidade de ocorrncia.

Preveno de Deadlocks 5 Impedir a no-preempo


Garantir

que sempre haja uma maneira de retirar um recurso de um processo.


Problema:

nem sempre til (ex: impressora) e pode conduzir a resultados inesperados (ex: bloqueio de registros).

Preveno de Deadlocks 5 Impedir a espera circular


Impedir
Impor

ciclos na alocao de recursos.

uma numerao global de todos os recursos do sistema e fazer com que os processos sigam esta ordem na requisio de recursos.
Problema:

grande quantidade de recursos (posies em tabelas, registros bloqueados, etc). Uso no-otimizado de recursos

Preveno de Deadlocks 5 O que utilizar?


Em

ambientes distribudos, possvel e vivel a utilizao de alguma tcnica de preveno de deadlock?


Em

um ambiente com transaes atmicas numerao nica para os processos: Impedir a no-preempo

Preveno de deadlocks em 5 ambientes distribudos


Cada processo do sistema possui um nmero nico. Antes que um processo se bloqueie a espera de um recurso, ele verifica o nmero do processo que detem o recurso. Se for menor que o seu (o processo que detem o recurso mais velho), ele espera. Seno, o recurso tirado a fora do processo mais novo e dado ao processo mais velho. O processo mais novo faz o rollback da transao e solicita de novo o recurso.

Qual tratamento dar ao 5 deadlock?


Apesar de teoricamente possvel, o tratamento de deadlocks uma operao bastante complexa e pesada para um sistema operacional distribudo. Seguindo a tendncia dos SO para ambientes monoprocessados, a maioria dos sistemas operacionais distribudos no utiliza nenhuma tecnica de tratamento de deadlocks Utilizando-se boas tcnicas de programao concorrente, o problema do deadlock fica bastante reduzido.

5 Deadlock de comunicao
Em vrios textos, encontramos referncias deadlocks de comunicao, diferenciando-os dos deadlocks tradicionais. Isso ocorre porque, neste caso, o recurso envolvido geralmente o buffer de comunicao e, ao contrrio dos deadlocks anteriores, no podemos simplesmente ignorar o problema. Um deadlock de comunicao pode parar um sistema distribudo.

5 Deadlock de comunicao
Exemplo
P0
M0,P2

P1
M0,P2 M1,P0

P2 M0
M2,P1

5 Deadlock de comunicao
O

deadlock de comunicao deve ser tratado. Isso geralmente feito ordenando os nodos de maneira a no se formarem ciclos no envio de mensagens (P2->P0 seria invlido) ou controlando cuidadosamente a alocao de espao no buffer.