Académique Documents
Professionnel Documents
Culture Documents
O que so?
uma coleo de computadores autnomos interconectados por uma rede,
com software projetado para produzir uma aplicao integrada.
Sincronizao:
A sincronizao entre processos to importante quanto comunicao entre
processos em sistemas distribudos. Por exemplo, como as regies crticas so
implementadas em um sistema distribudo e como estes recursos so
alocados?
Em sistemas de uma nica CPU, regies crticas, excluso mtua, e outros
problemas de sincronizao so geralmente resolvidos usando mtodos como
semforos e monitores. Estes mtodos no so recomendados para serem
usados em sistemas distribudos porque eles invariavelmente contam
(implicitamente) com a existncia de uma memria compartilhada. Por
exemplo, dois processos que esto interagindo usando um semforo, ambos
devem ser capazes de acessar o semforo. Se eles esto rodando na mesma
mquina, eles podem compartilhar o semforo tendoo armazenado no Kernel,
e executar chamadas de sistema (system calls) para acess-lo. Se, entretanto,
eles estiverem rodando em diferentes mquinas, este mtodo no mais
funcionar e outras tcnicas devem ser utilizadas. Mesmo parecendo
problemas simples, como determinar se o evento A aconteceu antes ou depois
do evento B, requer bastante cuidado.
Sincronizao de Relgio:
A sincronizao em sistemas distribudos mais complicada do que em
sistemas centralizados porque em sistemas distribudos necessrio utilizar
algoritmos distribudos. No usualmente possvel (ou desejvel) coletar todas
as informaes sobre o sistema em um nico lugar e depois deixar que alguns
processos examinemna e tomem uma deciso como feito no caso
centralizado.
Em geral, algoritmos distribudos possuem as seguintes propriedades:
Princpios:
a. Somente processos que interagem precisam sincronizar seus relgios.
b. No necessrio que todos os processos observem um nico tempo
absoluto;
c. eles somente precisam concordar com relao ordem em que os eventos
ocorrem.
Relgio Fsico:
Em alguns sistemas (por exemplo, sistemas de temporeal), o tempo real
importante.
Para estes sistemas relgios fsicos externos so necessrios. Por razes de
eficincia
redundncia,
mltiplos
relgios
fsicos
so
geralmente
a. Algoritmo de Berkeley:
A rede no dispe de uma mquina com um receptor WWV. Dispe de um time
server quefaz polling nas outras mquinas a fim de obter a hora marcada por
cada uma, fazer uma mdia entre essas horas e divulgar essa mdia para
todas as mquinas.
b. NTC: Network Time Protocol:
uma sub-rede hierrquica de sincronizao com servidores primrios (WWV)
e secundrios.
c. Algoritmo de Cristian:
A rede dispe de um time server (receptor WWV). Uma mquina cliente envia
uma mensagem pedindo a hora certa ao time Server e ao receber a mensagem
resposta do time server, o cliente adiciona o tempo mdio de envio de
mensagens hora recebida. Esse tempo mdio calculado pelo prprio cliente
considerando as horas de envio e recebimento das mensagens e ainda o
tempo gasto pelo time server para processar o pedido.
Relgios Sincronizados:
Est havendo, recentemente, uma fcil disponibilidade de hardware e software
para sincronizao de clocks em larga escala (Ex. sob a Internet). Novos e
interessantes algoritmos que fazem uso da sincronizao so cada vez mais
freqentes. Um exemplo deste tipo de algoritmo o algoritmo de consistncia
de cache com base em clock.
Na maioria dos sistemas existentes desejado que cada usurio tenha uma
cpia local de arquivos por questes de desempenho. Entretanto, o cache
introduz problemas de inconsistncia se dois clientes modificam o mesmo
arquivo ao mesmo tempo. A soluo mais adequada distinguir entre cache de
arquivos para leitura e cache de arquivos para escrita. A desvantagem deste
esquema que se um cliente tem um arquivo "cacheado" para leitura, antes de
conceder uma cpia de escrita para um outro cliente, o servidor precisa
primeiro dizer ao cliente detentor da cpia de leitura para anulla.
Este overhead extra pode ser eliminado usando relgios sincronizados.
Excluso Mtua:
Sistemas envolvendo mltiplos processos so mais facilmente programveis
usando regies crticas. Quando um processo tem que ler ou atualizar
determinadas estruturas de dados compartilhados, ele primeiro entra na regio
crtica para atingir a excluso mtua e garantir que nenhum processo ir usar
as estruturas de dados compartilhadas no mesmo tempo. Em sistemas de um
nico processador, regies crticas so protegidas usando semforos,
monitores, e construes similares. Sero apresentados alguns exemplos de
como regies crticas e excluses mtuas podem ser implementadas em
sistemas distribudos.
Algoritmos Centralizados:
Sistemas envolvendo mltiplos processos so mais facilmente programveis
usando regies crticas. Quando um processo tem que ler ou atualizar
determinadas estruturas de dados compartilhados, ele primeiro entra na regio
crtica para atingir a excluso mtua e garantir que nenhum processo ir usar
as estruturas de dados compartilhadas no mesmo tempo. Em sistemas de um
nico processador, regies crticas so protegidas usando semforos,
monitores, e
O caminho mais rpido para atingir excluso mtua em sistemas distribudos
similar ao feito em sistema com um nico processador. Um processo eleito
como o coordenador (por exemplo, um rodando na mquina com o maior
endereo da rede). Sempre que um processo quiser entrar na regio crtica, ele
envia uma requisio de mensagem para o coordenador declarando qual
regio ele quer entrar e requisitando permisso. Se nenhum outro processo
estiver atualmente naquela regio crtica, o coordenador envia uma resposta de
volta dando permisso. Quando a resposta chega, o processo de requisio
entra na regio crtica.
Quando o processo 1 sair da regio crtica, ele envia uma mensagem para o
coordenador liberando o acesso exclusivo. O coordenador toma a requisies
da fila de requisies, e envia ao processo uma mensagem de permisso. Se o
processo ainda estiver bloqueado (por exemplo, a primeira mensagem para
ele), ele desbloqueado e entra na regio crtica.
Deadlock:
Um deadlock causado pela situao onde um conjunto de processos est
bloqueado permanentemente, isto , no consegue prosseguir a execuo,
esperando um evento que somente outro processo do conjunto pode causar.
Condies necessrias para ocorrer o Deadlock no sistema:
- Excluso mtua;
- Segura e espera;
- No preempo;
- Espera circular.
Estratgias mais utilizadas para trabalhar o Deadlock:
- Algoritmo do avestruz (ignorar o problema);
- Deteco (permite que o deadlock ocorra, detecta e tenta recuperar);
- Preveno (estaticamente faz com que o deadlock no ocorra);
- Espera circular (evita deadlock alocando recursos cuidadosamente).
Algoritmo de Deteco Distribuda:
O algoritmo de deteco funciona da seguinte maneira: O algoritmo
executado quando um processo tem que esperar por algum recurso em funo
de outro processo que esta utilizando o mesmo.
Quando esta situao ocorre, uma mensagem especial enviada (probe
message) para o processo que esta utilizando o recurso, sendo composta de
trs partes:
- informaes sobre o nmero do processo que est bloqueando;
- o nmero do processo que esta enviando a mensagem; e o
- nmero do processo para quem a mensagem est sendo enviada.
O primeiro o Universo Fsico, que compreende os dispositivos semicondutores, elementos mecnicos, fontes de energia, ou qualquer outra
entidade fsica. Uma falha ocorre nesse universo. O Universo da Informao
compreende os dados manipulados pelo sistema, e onde um erro pode
ocorrer, em virtude da existncia de alguma falha no Universo Fsico. O ltimo
universo o Externo ou do Usurio. neste onde o usurio final percebe que o
sistema apresentou comportamento indesejado e, portanto, possui um defeito.
Como podemos perceber na figura acima, uma falha pode acarretar em um
erro e um erro pode acarretar em um defeito (TEIXEIRA & MERCER, 2000,
cap. 9). Mas, segundo (WEBER, 2000b, Sld 6), existe entre uma falha e um
erro, e entre um erro e um defeito uma fase chamada latncia. Esta latncia
pode ser:
- Latncia de falha: o perodo de tempo entre a ocorrncia da falha at a
manifestao do erro devido quela falha.
- Latncia de erro: o perodo de tempo entre a ocorrncia do erro at a
manifestao do defeito devido quele erro.
Classificao de Falhas:
Segundo (WEBER, 2000b, Sld 7) (SANTOS & CAVALCANTE, 2000, Cap 2.
p.10), as falhas podem ser classificadas quanto sua origem em:
- Fsicas: As falhas fsicas so causadas por fenmenos naturais como
desgaste do material, problemas de interconexo ou quaisquer outros que
afetem a estrutura mecnica ou eletrnica do sistema. As falhas fsicas podem
ainda ser subclassificadas quanto durao em:
Adiamento
de
Manuteno:
So
aplicaes
cuja
manuteno
o sistema por si s consiga evitar e tratar as falhas que ocorram durante sua
execuo. Um exemplo de aplicao desse tipo o sistema de estaes de
comutao telefnicas.
- Alta Disponibilidade: So aplicaes cuja disponibilidade um fator crtico.
Exemplos clssicos so os terminais de caixa eletrnicos dos bancos.
Fases do Processo de Tolerncia a Falhas:
Segundo (WEBERSLD, 2000b, Sld 26) (SANTOS & CAVALCANTE, 2000, Cap
2. p.11), h vrias fases para o processo de tolerncia a falhas nos sistemas.
As fases sero mais bem detalhadas a seguir:
- Deteco de Erros: A primeira fase do processo de tolerncia a falhas
claramente a deteco de erros no sistema. Todo o mecanismo de tolerncia a
falhas empregado no sistema depender da eficincia do seu mdulo de
deteco de erros.
O mdulo de deteco de erros deve observar o funcionamento do sistema
sendo capaz de perceber desvios de comportamento a partir da especificao
inicial.
Existem algumas propriedades que um mecanismo ideal para deteco de
erros deve apresentar:
Independncia o mdulo de deteco de erros no deve ser
influenciado pela estrutura interna do sistema, pois os erros existentes
no sistema poderiam afetar tambm este mdulo.
Completo deve detectar todos os erros possveis.
Correto no pode considerar um comportamento esperado como um
comportamento anmalo, ou seja, sempre que um erro for detectado,
pode-se ter certeza da existncia de falhas no sistema.
- Confinamento de Erros: Aps a deteco do erro, deve-se identificar o
mdulo ou componente falho do sistema. Com as passagens de informaes
entre os mdulos e componentes, os erros podem propagar-se pelo sistema.
Assim, todo o fluxo de informao originado do mdulo ou componente falho
deve ser observado e as conseqncias das aes devem ser delimitadas,
ento
mesmo
erro
poder
ocorrer
novamente
em
Para que um sistema no sofra pane total, ao ser detectada uma falha o
sistema deve ser automaticamente reconfigurado, ou seja, um processo que
estava sendo executado deve ser realocado para outros caminhos alternativos
que mantenham a comunicao contnua. Mas, para que o processo de
recuperao no reduza a performance do sistema e seja o mais transparente
possvel para o usurio, a tcnica de recuperao por avano bastante
utilizada e requer permanentemente um estado consistente entre as partes de
um sistema. Os mecanismos utilizados na tcnica de recuperao so (LUNG,
2000, Sld 59):
Logging: O logging o mecanismo pelo qual as requisies feitas pelos
usurios a uma parte do sistema que est distribudo em algum meio
fsico so gravadas em um arquivo log, para que no caso de uma falha,
uma outra parte do sistema que assumir o lugar do anterior possa obter
o estado corrente e da continuar o processo normalmente.
Checkpoint: O checkpoint um determinado ponto no qual o estado
atual de uma parte do sistema que est no arquivo log verificado e
copiado no arquivo de log das demais partes. Isto faz com que todas as
partes distribudas do sistema estejam sempre atualizadas, mantendo-se
assim consistentes.
O checkpoint realizado a cada tempo t, que pode ser definido pelo usurio ou
fixado na implementao do sistema. Durante este intervalo de tempo t, vrias
requisies de usurios so realizadas e gravadas no arquivo de log. Um
exemplo da utilizao da tcnica de recuperao uma transao bancria
onde um cliente requisita a transferncia de um determinado valor de uma
conta X para uma conta Y. Nesta transao ocorrem duas operaes: uma de
dbito da conta X, e uma de crdito na conta Y. Suponhamos que no intervalo
de tempo entre o dbito e o crdito ocorra uma falha e s tenha sido realizado
o dbito da conta X, ento haveria a uma inconsistncia de dados, pois o valor
debitado da conta X estaria perdido. Mas, com o uso do checkpoint e logging
isto resolvido da seguinte maneira: suponhamos que temos partes do sistema
que realiza esta operao de transferncia em vrios meios fsicos confiveis,
como por exemplo: em dois servidores de aplicao (um ativo e um outro como
backup). Quando o cliente requisita a operao de transferncia, o servidor
ativo assume a operao e o mecanismo de logging grava esta requisio em
um servidor de log. Se o intervalo de checkpoint for suficientemente curto, esta
requisio ser repassada para um arquivo de log no servidor backup. No
momento em que ocorre uma falha como a descrita anteriormente, o cliente
logo redirecionado para o servidor backup e o mecanismo de recuperao
(recovery) consulta o log para verificar qual foi a ltima operao realizada, e a
partir deste ponto continuar a operao, sem causar transtornos para o cliente.
- Tcnicas de Replicao:
A tcnica de replicao consiste em facilitar a criao de rplicas ou cpias de
um mesmo objeto em meios fsicos diferentes, garantindo assim que, no caso
de uma falha em um dos dispositivos, o cliente seja redirecionado de forma
transparente para outro que tenha uma rplica do objeto ativa (JATENE, 1999).
As tcnicas de replicao podem ser resumidas em dois tipos bsicos
(JATENE, 1999):
Replicao passiva: Neste tipo de replicao, h apenas um objeto que
recebe as requisies dos clientes, este objeto chamado primrio. Os outros
objetos so chamados secundrios ou backups, e constantemente so
informados pelo primrio sobre o estado atual do mesmo. Para isto, esta
replicao utiliza os mecanismos de checkpoint e logging.
Podemos perceber que este tipo de replicao pode gerar inconsistncia dos
dados no momento em que todas as rplicas enviam os resultados dos seus
processamentos para o cliente, pois pode ocorrer de uma resposta chegar
antes da outra, causando assim mltiplos resultados para o cliente. Para
resolver este problema, comum utilizar uma variao deste mtodo chamada
replicao ativa com votao, no qual ocorre uma votao e somente uma das
respostas retorna para o cliente.
Podemos perceber tambm que neste tipo de replicao h uma melhora de
performance no funcionamento dos sistema, pois no teramos mecanismos de
recuperao que causaria um certo atraso no processamento, principalmente
quando se trata de sistemas de tempo real como sistema clnicos, onde uma
demora de milissegundos pode ser fatal. Mas, como podemos perceber, este
tipo de replicao apesar de ser mais confivel, causa um trfego de
informaes razovel na rede, pois haveria uma difuso da requisies para
todas as mquinas da rede (broadcast) e as mesmas responderiam ao mesmo
tempo. Para resolver este problema, foi criada a tcnica de gerenciamento de
grupos.
- Tcnica de gerenciamento de grupos:
Uma das dificuldades encontradas nas tcnicas de replicao que vimos
anteriormente o trfego na rede. Mas, outro problema surge quando
precisamos tornar transparente para o cliente a localizao das rplicas no
caso de uma falha, pois teramos que criar uma referncia para cada rplica
criada. Para resolver estes problemas, foi criada uma definio de grupos de
objetos, onde os objetos so integrados em sub-grupos diferentes, contendo
cada grupo uma referncia nica. Com isto resolveramos tanto o problema da
localizao das rplicas pelos clientes, como tambm o trfego excessivo na
rede, pois nesta tcnica j estaria implementado a primitiva de comunicao
multicast, onde apenas um determinado grupo de objetos receberiam as
requisies, ao contrrio da primitiva de comunicao broadcast, onde todas os
objetos replicados recebem requisies (JATENE, 1999).
Tambm chamada de Group Membership (WEBER, 2000a) (JATENE, 1999) ou
associao de grupos, esta tcnica visa tambm facilitar a manipulao de
rplicas, onde podemos cadastrar e excluir rplicas de um grupo, alm de
aumentar a confiabilidade no tratamento de tolerncia a falhas, principalmente
quando temos redes particionadas, ou seja, sub-redes interconectadas por um
roteador, gateway, etc. Vejamos na figura 5 como definida a tcnica de
gerenciamento de grupo.
Vimos nos itens anteriores vrias tcnicas de tolerncia a falhas mais comuns
utilizadas em sistemas distribudos. Mas, quando estamos tratando de sistemas
muito complexos e altamente crticos, h uma necessidade de se testar as
tcnicas de tolerncia a falhas, tentando simular situaes de falhas mais
prximas possveis da realidade em que sero submetidas. A esses testes
damos o nome de injeo de falhas. (WEBER) (LEME , MARTINS & RUBIRA,
199?) 27 H trs categorias de injeo de falhas, que so mostradas abaixo
(WEBER, 2000a) (LEME , MATINS & RUBIRA, 199?):
- Injeo de falhas por hardware: Neste tipo de injeo o hardware forado
a erros atravs de mudanas de valores lgicos no prprio circuito. Exemplo:
um determinado pino de um CI (circuito integrado) deve receber o nvel lgico
1, e para forarmos a uma falha, injetamos um nvel lgico 0.
- Injeo de falhas por software: Neste tipo de injeo so utilizados
softwares que tentam corromper o cdigo do sistema, modificar caractersticas
de comunicao, etc.
- Injeo de falhas por simulao: Neste tipo de injeo, h uma simulao
de possveis falhas que possam ocorrer no sistema ainda mesmo em tempo de
projeto.
Replicao e Consistncia:
O que ? O uso de mltiplas cpias de dados ou servios (e estado associado).
Porqu? Essencialmente por razes de 3 ordens:
1. disponibilidade (availability): se um servio no estiver acessvel, pode-se
tentar aceder a uma sua rplica;
2. fiabilidade (reliability): mantendo rplicas em locais distintos, a capacidade
de sobrevivncia dos dados a acidentes srios, p.ex. tremores de terra,
maior;
3. desempenho (performance): a carga pode ser distribuda pelas diferentes
rplicas, possivelmente mais prximas dos clientes.
Replicao: Casos Particulares
Caches
tipicamente mantidas por clientes;
procuram explorar a localidade de referncia:
posteriores acessos aos mesmos dados usaro a cpia local.
Proxy Servers:
mantm tambm uma cache, que partilhada por vrios clientes;
pressupem localidade de referncia, e principalmente homogeneidade
dos clientes;
permitem, ou facilitam, por exemplo:
reduzir a latncia na resposta a pedidos;
Replicao: Consistncia:
Idealmente, a semntica dum servio replicado deveria ser idntica
dum servio no-replicado
Modelos de Consistncia:
Bibliografia:
http://www-usr.inf.ufsm.br/~ceretta/elc895/02_fundamentos.pdf
https://andreyhlb.files.wordpress.com/2010/04/tolerancia_a_falhas.pdf
http://www.ppgia.pucpr.br/~alcides/Teaching/SistemasDistribuidos/TOF/01_conc
eitosbasicos.pdf
http://www.tlc-networks.polito.it/oldsite/anapaula/Aula_Cap01.pdf
http://ricardobarcelar.com.br/aulas/sd/7-sincronizacao.pdf
http://web.fe.up.pt/~pfs/aulas/sd2009/at/20cons.pdf