Escolar Documentos
Profissional Documentos
Cultura Documentos
DISTRIBUÍDOS
Introdução
A tecnologia oferece diversos tipos de serviços os quais geram muitos
dados e, consequentemente, demandam um alto poder de processa-
mento. Portanto, um único computador não é capaz de, sozinho, atender
às necessidades dos serviços tecnológicos disponibilizados diariamente
para as pessoas. Desse modo, é necessário um conjunto de computadores
atuando juntos para oferecer esses serviços, o que é caracterizado como
um sistema distribuído.
Neste capítulo, você conhecerá os mecanismos de coordenação de
processos, bem como sua importância para o funcionamento eficaz de
um sistema distribuído. Além disso, verá, em detalhes, os diferentes tipos
de coordenação de processos (com exemplos) e suas finalidades.
Exclusão mútua
É fundamental que os processos distribuídos coordenem suas ações. Em um
sistema distribuído, é comum que seus processos compartilhem um ou uma
coletânea de recursos. Devido a esse compartilhamento de recursos, é neces-
sário utilizar um mecanismo que possibilite coordenar o acesso aos diversos
recursos e não permitir que diferentes processos acessem o mesmo recurso,
evitando que ele possa ser corrompido ou se torne inconsistente (TANEN-
BAUM; VAN STEEN, 2007). No contexto de sistemas operacionais, é comum
resolver o problema de compartilhamento de recursos utilizando a abordagem
de exclusão mútua; já considerando sistemas distribuídos, a solução para o
problema é baseada na exclusão mútua distribuída.
A exclusão mútua distribuída é unicamente baseada em troca de mensagens,
assim, é dispensada a ideia de possuir no sistema um servidor responsável
por aplicá-la, garantindo o compartilhamento efetivo de recursos. A aplicação
da exclusão mútua distribuída é de responsabilidade dos próprios processos,
que devem conversar entre si e garantir o gerenciamento efetivo dos recursos,
eliminando a necessidade de um servidor separado (TANENBAUM; VAN
STEEN, 2007). Alguns algoritmos possibilitam implementar a exclusão mútua
distribuída, a seguir você conhecerá dois deles: o algoritmo centralizado e
o em anel.
A abordagem que utiliza o algoritmo centralizado para garantir a exclusão
mútua distribuída é similar a de sistemas monoprogramados. No algoritmo
centralizado, um dos processos é eleito para desempenhar o papel de coorde-
nador central. Tanenbaum e Van Steen (2007) explicam que o coordenador
central é o responsável por liberar o uso de determinado recurso para um
processo solicitante. Desse modo, quando um processo necessita usar um
recurso compartilhado, envia uma mensagem para o coordenador central
informando o recurso desejado e solicitando a permissão para acessá-lo. Caso
Coordenação de processos 5
0 1 2 0 1 2 0 1 2
Outro algoritmo que pode ser utilizado para resolver o problema de exclusão
mútua é o algoritmo de anel. Nele, os processos são organizados formando um
anel, com isso, cada processo (pi) tem um canal de comunicação com o seguinte
(pi ) no anel. Observe na Figura 2 a ilustração de n processos organizados
+1
logicamente como um anel (COULOURIS et al., 2013).
Eleições
Em sistemas distribuídos, alguns algoritmos precisam que um processo desem-
penhe o papel de coordenador ou uma função especial entre todos os outros.
Assim, um processo precisa ser eleito, independentemente de qual for e assumir
a função especial no sistema, o que importa é que um deles realmente faça essa
função (TANENBAUM; VAN STEEN, 2007). Um exemplo da necessidade
de eleger um processo para desempenhar uma função especial é o algoritmo
centralizado, utilizado para garantir exclusão mútua, já discutido neste capítulo.
Coulouris et al. (2013) complementam que a escolha resultante do processo
de eleição deve ser de conhecimento geral, e todos os demais devem concordar.
Além disso, quando um processo eleito necessita se retirar, imediatamente
outra eleição deve ocorrer para eleger o substituto.
A eleição em um sistema distribuído é aplicada pelos chamados algorit-
mos de eleição. Você conhecerá, agora, dois algoritmos clássicos para essa
finalidade: o valentão e o de eleição baseado em anel. Para o estudo desses
algoritmos, você deve recordar que cada processo presente no sistema é um
ou uma parte de um programa em execução, possui um número de processos
únicos e que todos conhecem os números um dos outros (LYNCH, 1996).
O algoritmo do valentão faz uso do número de cada processo para decidir
qual deve ser eleito. Considere sete processos que possuem números de 1 a 7,
nessa situação, seguindo o algoritmo do valentão, o eleito para desempenhar
funções especiais será o que possuir o número 7, ou seja, o maior número de
processos (TANENBAUM; VAN STEEN, 2007).
Observe a ilustração da Figura 3a, em que o processo eleito (7) se re-
tira do sistema por algum motivo, e, então, uma nova eleição deve ocorrer.
No exemplo, o processo 4 percebe que o 7 eleito se retirou e envia uma mensa-
gem de eleição para os que possuem número maior que ele, ou seja, 5, 6 e, até
mesmo, 7. Após esse momento, os processos 5 e 6 respondem ao 4 aceitando
a eleição (Figura 3b), em seguida, ambos enviam mensagens de eleição para
os processos que possuem número maior que eles, ou seja, o 5 envia uma
8 Coordenação de processos
1 1 1
2 5 2 5 2 5
ão
ção OK Eleiç
Elei
Eleição OK
ção
4 6 4 6 4 6
Elei
Ele
o
içã
içã
Ele
o
0 3 0 3 0 3
7 7 7
1 1
2 5 2 5
OK
Coordenador
4 6 4 6
0 3 0 3
7 7
(d) (e)
Figura 3. Funcionamento do algoritmo do valentão para eleição.
Fonte: Adaptada de Tanenbaum e Van Steen (2007).
[5,6,0] 1
Mensagem
0 2 de eleição
[2]
Coordenador
anterior caiu
7 [5,6] 3
[2,3]
Sem
resposta 6 4
[5] 5
Figura 4. Funcionamento do algoritmo de eleição baseada em anel.
Fonte: Adaptada de Tanenbaum e Van Steen (2007).
Diversas abordagens podem ser utilizadas para eleições, por exemplo, em ambientes
sem fio, como descrito por Vasudevan et al. (2004), e para sistemas de grande escala, como
descrito por Lo et al. (2005). Para saber mais sobre essas abordagens leia o Capítulo 6
do livro Sistemas distribuídos: princípios e paradigmas, de Tanenbaum e Van Steen (2007).
10 Coordenação de processos
Controle de falhas
Em um sistema distribuído é possível que um ou mais processos venham a
falhar, devido a alguma circunstância inesperada, independentemente de qual
seja a falha, o sistema deve continuar funcionando. Para identificar quando e
qual processo falhou, existe a implementação de um detector de falha (COU-
LOURIS et al., 2013).
O detector de falha pode ser utilizado por qualquer processo, e seu objetivo é
consultar se um processo específico falhou. É preciso saber que um detector de
falha não possui alta precisão, e a maioria deles não são confiáveis, apontando
apenas uma suspeita de falha ou não falhas. Apesar disso, são importantes para
detectar alguns pontos de falhas. Um processo é indicado como suspeito de
falha quando está a muito tempo sem enviar mensagens, já a situação inversa
pode indicar que ele não é suspeito de falha (COULOURIS et al., 2013).
Um algoritmo simples, mas, contudo, não sensivelmente preciso, pode
ser aplicado para detectar falhas. Seu trabalho consiste em definir um tempo
padrão e, de tempos em tempos, cada processo deve enviar uma mensagem
“estou aqui”, avisando os demais. Caso um dos processos não envie a mensa-
gem, será considerado como um suspeito de falha (COULOURIS et al., 2013).
Consenso e acordo
Uma das principais características dos sistemas distribuídos é a troca de
mensagens e, consequentemente, o compartilhamento de informações.
O sistema deve garantir que o valor dessas informações seja integro, ou seja,
todos os processos devem possuir o mesmo valor da informação transmitida
e deve haver um consenso para o seu valor ou conteúdo em um determinado
instante. Garantir o consenso de informações não é uma tarefa simples, por-
tanto, deve-se pensar se o sistema distribuído que está sendo implementado
necessita do compartilhamento consistente, atômico e ordenado das operações
e eventos realizados. Caso exista essa necessidade, deve-se utilizar algoritmos
de consenso no sistema (COULOURIS et al., 2013).
A maioria dos algoritmos de consenso em sistemas distribuídos faz uso de
um log na sua implementação. Esse log contém informações sobre o estado
atual de variáveis compartilhadas e utilizadas por um conjunto de processos.
Toda vez que o estado de alguma variável muda, esse log precisa ser alterado,
mas antes disso todos os processos devem entrar em acordo e concordar com
essa mudança de estado. Desse modo, o algoritmo de consenso é responsável
Coordenação de processos 11
por manter a consistência do log entre os processos participantes. Uma vez que
todos os processos concordem com a mudança de estado, o log é modificado
e replicado para todo o sistema, e uma mensagem comunica o novo estado
vigente. A coordenação de consenso pode ser feita por meio de um processo
que desempenha a função especial de coordenador, ou ser implementada sem
uso de um coordenador central e utilizar apenas mensagens entre todos os
processos verificando a existência de um consenso (COULOURIS et al., 2013).
coordenador o informa que será inserido na fila de espera. Note que, durante
os tempos anteriores, foi garantido a exclusão mútua distribuída por meio do
algoritmo centralizado.
Leituras recomendadas
LO, V. et al. Scalable supernode selection in peer-to-peer overlay networks. In: INTER-
NATIONAL WORKSHOP ON HOT TOPICS IN PEER-TO-PEER SYSTEMS, 2., 2005, San Diego.
Proceedings [...], San Diego: [s. n.], 2005. p. 18–25.
MOLINA, G. Elections in a distributed computing system. IEEE Transactions on Computers,
[s. l.], v. C-31, n. 1, p. 48–59, 1982.
SEABRA, I. L. Um ambiente para ensino de algoritmos de consenso. 2004. Dissertação
(Mestrado em Computação) – Instituto de Computação, Universidade Estadual de
Campinas, Campinas, 2004. Disponível em: http://repositorio.unicamp.br/jspui/bits-
tream/REPOSIP/276209/1/Seabra_IsanaLuzia_M.pdf. Acesso em: 03 jun. 2020.
VASUDEVAN, S. et al. Desing and analysis of a leader election algorithm for mobile Ad
Hoc network. In: IEEE INTERNATIONAL CONFERENCE AND EXPOSITION, 12., 2003, [s. l.].
Proceedings [...]. [S. l.: s. n.], 2003. p. 261–271.
Os links para sites da web fornecidos neste capítulo foram todos testados, e seu fun-
cionamento foi comprovado no momento da publicação do material. No entanto, a
rede é extremamente dinâmica; suas páginas estão constantemente mudando de
local e conteúdo. Assim, os editores declaram não ter qualquer responsabilidade
sobre qualidade, precisão ou integralidade das informações referidas em tais links.