Professional Documents
Culture Documents
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).
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
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
(lock liberado)
Coordenador
tabela de locks 1 lx 0 0 ly 0
Solicitante
(lock ocupado)
Coordenador
tabela de locks
P1 lx ly 1 0
Solicitante P1
lock(lx)
do algoritmo:
a excluso mtua
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
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.
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.
do funcionamento:
P2
P2 OK OK P1 OK P0 P1 P2
P2
8 8 P0 5 P1 5 OK P0
P2
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
P7 P6
P5
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
P3 P4
OK eleio
P5
P6 eleio OK
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).
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
Todas
t0
t1
o problema Detectar o deadlock e recuperar o sistema Prevenir o deadlock Evitar o estado de deadlock
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
deteco de deadlocks em sistemas distribudos pode ser feita das seguintes maneiras:
Algoritmo
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
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!!!
de falso deadlock:
M1 S C T B A R B S C C T
M0 A R B S
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.
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
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
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.
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.
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.
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.
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.
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
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.
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
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.
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:
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.
nem sempre til (ex: impressora) e pode conduzir a resultados inesperados (ex: bloqueio de registros).
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
um ambiente com transaes atmicas numerao nica para os processos: Impedir a no-preempo
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.