Você está na página 1de 17

SISTEMAS

DISTRIBUÍDOS

Bruno Santos de Lima


Coordenação de processos
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:

„„ Analisar a coordenação de processos.


„„ Definir os tipos de coordenação de processos.
„„ Identificar exemplos dos tipos de coordenação de processos.

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.

1 Análise da coordenação de processos


Um sistema distribuído é definido como o conjunto de computadores autôno-
mos conectados que atuam juntos para oferecer um ou diversos serviços aos
seus usuários, porém com a percepção de que se trata de um único sistema,
interface ou computador (TANENBAUM; VAN STEEN, 2007). Coulouris
et al. (2013), de modo complementar, enfatizam que os computadores que
compõe um sistema distribuído geralmente estão em localizações distintas,
mas, conectados pela rede, comunicam-se e coordenam suas ações por meio
da troca de mensagens contínua.
2 Coordenação de processos

O principal objetivo dos sistemas distribuídos é oferecer aos usuários acesso


a recursos e processamento remoto, possibilitando o seu compartilhamento
de modo eficiente e controlado. Dentro de um sistema distribuído, pode-se
ter um conjunto de programas em execução ou solicitação de execução por
parte dos usuários ou outros programas externos que também o compõe. Cada
programa ou solicitação de serviço, quando está em execução pelo sistema
distribuído, é chamado de processo (KSHEMKALYANI; SINGHAL, 2008).
Para que o objetivo do sistema distribuído seja atingido, os computadores
que compõe o sistema, bem como os seus processos, necessariamente, trocam
mensagens coordenadas entre si, visando uma melhor organização para uso de
recursos e execuções. Todo esse procedimento necessita ser coordenado para
garantir a eficiência do sistema, o acesso a recursos compartilhados disponíveis
e a prevenção e a recuperação de falhas (COULOURIS et al., 2013).
A coordenação de processos é o termo utilizado para expressar a neces-
sidade de comunicação e coordenação de ações entre os processos presentes
em um sistema distribuído. As ações coordenadas garantem que o sistema
opere com maior eficiência. Em geral, quando citamos coordenação de um
grupo de processos é fundamental que um deles desempenhe uma função
especial no sistema: o coordenador (responsável pela organização das ações dos
processos, é comumente eleito por um algoritmo de eleição) (TANENBAUM;
VAN STEEN, 2007).
A eleição de um coordenador é fundamental para lidar com problemas de
acesso a recursos. Por exemplo, um único recurso compartilhado no sistema
pode gerar vários processos de requisição de acesso a ele. Para garantir que todos
os processos tenham acesso ao recurso, o coordenador desempenhará a função
de distribuir o uso, mantendo sua integridade, ou seja, possibilitar a exclusão
mútua em um sistema distribuído (TANENBAUM; VAN STEEN, 2007).
No exemplo citado, existe apenas um recurso compartilhado no sistema,
entretanto, a eleição é aplicada em sistemas que possuem mais de um recurso
compartilhado. Podemos citar como exemplos de recursos compartilhado o
processador gráfico ou multinúcleos, o satélite, as unidades de armazenamento
de dados e arquivos, as impressoras, entre outros.
A eleição é um ótimo mecanismo de coordenação de processos e pode ser
alinhada com algoritmos específicos para garantir a exclusão mútua distri-
buída, que, uma vez garantida, obrigatoriamente um recurso compartilhado
em um sistema distribuído só poderá ser utilizado por um único processo em
um determinado instante de tempo. Essa condição evita que dois processos
façam uso de um mesmo recurso, o que resultaria em conflitos, inconsistências
e, consequentemente, no mau funcionamento (COULOURIS et al., 2013).
Coordenação de processos 3

O coordenador parece uma ótima solução para gerenciar ações específicas


em um sistema distribuído, contudo, se o processo que desempenha a função
de coordenador falhar, os que se coordenam entre si e utilizam abordagens
de controle de falhas, podem identificar quando um deles entra em colapso e
deixa de responder. Quando um processo falha e não consegue se recuperar,
é excluído do grupo, caso seja o coordenador, será necessária uma nova eleição
para definir um novo coordenador geral do sistema (COULOURIS et al., 2013).
Além disso, em muitos casos, é necessário que todos os processos envol-
vidos em um conjunto de ações concordem com os eventos decorridos delas
e a ordem em que ocorrem. Tanenbaum e Van Steen (2007) exemplificam
essa situação quando vários processos devem concordar com a ordenação de
eventos, por exemplo, se a mensagem m1 do processo P foi enviada antes ou
depois da mensagem m2 do processo Q.
O consenso entre as operações e ações realizadas, seja em variáveis ou
uso de recursos, deve ser geral para o bom funcionamento de um sistema
distribuído, que demanda consistência, atomicidade e ordem nas operações.
Para isso, são aplicados algoritmos de consenso, que funcionam coordenando
o acordo entre processos (COULOURIS et al., 2013).
Coulouris et al. (2013) apresentam como exemplo um sistema de uma nave
espacial para enfatizar os tipos de coordenação de processos presentes em um
sistema distribuído. Em uma nave espacial, é necessário que os computadores
coordenem suas ações em relação aos recursos disponíveis, como sensores e
controladores. Os processos relacionados a cada computador devem possuir
coordenação para não utilizarem um mesmo sensor ao mesmo tempo, garan-
tindo a exclusão mútua distribuída para o sistema da nave.
Além disso, considerando o sistema de uma nave espacial, o consenso
e acordo entre os processos pode ser exemplificado com a necessidade de
estabelecer para o sistema como um todo, se a missão para qual a nave foi
programada deve prosseguir ou ser cancelada. Nessa situação, todos os pro-
cessos envolvidos devem estar cientes e de acordo com a ação a ser realizada
(COULOURIS et al., 2013). Caso algum processo que desempenhe função
única venha a falhar, os outros devem garantir que a falha seja remediada e
a nave continue em funcionamento. Por consequência, um novo processo deve
ser eleito para desempenhar a função que era realizada pelo que apresentou
falha. Desse modo, aplicando diversos tipos de coordenação com diferentes
propósitos, por meio de troca de mensagens, os processos possibilitam o bom
funcionamento do sistema.
4 Coordenação de processos

2 Tipos de coordenação de processos


Nesta seção você verá os diferentes tipos de coordenação de processos,
ou seja, como os processos se organizam para realizar ações que possibilitem
o bom funcionamento do sistema distribuído. Entre os tipos de coordenação
de processos serão citados: a coordenação para garantir exclusão mútua,
os mecanismos para eleger um coordenador de um grupo, a detecção de falhas,
a comunicação em grupo, o consenso e o acordo.

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

nenhum outro processo esteja fazendo uso do recurso solicitado, o coordenador


central permite o seu uso ao que o solicitou. A situação descrita é ilustrada na
Figura 1a, em que são considerados quatro processos, sendo o 3 o coordenador.
Tanenbaum e Van Steen (2007) descrevem mais dois exemplos, ilustrados
nas Figuras 1b e 1c. Considere a situação anterior, em que o processo 1 está
fazendo uso do recurso compartilhado, quando o 2 faz uma solicitação para
também utilizá-lo; o coordenador central, por sua vez, sabe que o recurso
está sendo utilizado e não responde ao 2, colocando-o em uma fila de espera
(Figura 1b). Quando o processo 1 terminar de utilizar o recurso compartilhado,
enviará uma mensagem (liberando o recurso) para o coordenador central, que
verificará a fila de espera e enviará uma mensagem para o primeiro, permitindo
o uso do recurso compartilhado (no caso, o processo 2).

0 1 2 0 1 2 0 1 2

Requisição OK Requisição Liberação


Nenhuma
OK
resposta
3 3 3
Fila está 2
vazia
Coordenador
(a) (b) (c)

Figura 1. Algoritmo centralizado para exclusão mútua. a) O processo 1 solicita ao coorde-


nador permissão para acessar um recurso compartilhado. b) O processo 2 solicita permissão
para acessar o mesmo recurso e o coordenador não responde. c) Quando o processo 1
libera o recurso e informa ao coordenador, ele então responde ao processo 2.
Fonte: Adaptada de Tanenbaum e Van Steen (2007).

O algoritmo centralizado possui como vantagens sua fácil implementação,


devido à sua simplicidade de execução; e ser justo, no sentido de permitir que
os processos requisitantes façam uso dos recursos por ordem de solicitação.
Além disso, não ocorre inanição, ou seja, nenhum processo espera para sempre
(TANENBAUM; VAN STEEN, 2007). Como desvantagens, podemos citar o
acúmulo gerado no sistema, devido à necessidade de duas mensagens (requi-
sição e liberação) (COULOURIS et al., 2013); e a possibilidade de falha do
coordenador central, que pode comprometer o funcionamento de todo o sistema.
6 Coordenação de processos

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).

Figura 2. Conjunto de processos ordenados em um


anel lógico transferindo um token de exclusão mútua.
Fonte: Coulouris et al. (2013, p. 636).

Uma simples organização lógica não é o suficiente para garantir a exclusão


mútua, para isso, ela é aliada a um mecanismo de token, que caracteriza uma
ficha. Coulouris et al. (2013) explicam que o token passa, de processo em
processo, pelo anel, e aquele que possuir o token poderá fazer uso do recurso
compartilhado; os demais deverão esperar a sua vez. Quando o processo
termina de usar o recurso, libera-o e passa o token para o seguinte no anel,
o próximo processo pode utilizá-lo ou não e passar o token adiante. Tanenbaum
e Van Steen (2007) explicam que nesse algoritmo não é permitido usar o
recurso mais de uma vez com o mesmo token, após o uso do recurso por uma
vez, o token deve, obrigatoriamente, ser passado para o processo seguinte.
Coordenação de processos 7

Utilizar o algoritmo de anel tem como desvantagem o token se perder,


o que recorreria a ele ser gerado novamente, resultando em um atraso para
o sistema. Como vantagem, se um dos processos “cair”, é fácil recuperar o
sistema, pois basta manter a formação original do anel e retirar o problemático.
A identificação de um processo que “caiu” é simples e se dá quando um deles
tenta passar o token para o seguinte e não consegue (TANENBAUM; VAN
STEEN, 2007).

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

mensagem de eleição para os 6 e 7; já o 6 envia uma mensagem de eleição para


o 7 (Figura 3c). Automaticamente, os processos de maior número respondem à
mensagem indicando que querem ser eleitos, no caso de apenas o 6 responder
à mensagem (Figura 3d). Em consequência, o 6, que possui maior número de
processos entre os demais, é eleito coordenador e passa a desempenhar uma
função especial no sistema. Note que o processo 7 não responde às mensagens,
pois saiu do sistema (TANENBAUM; VAN STEEN, 2007).

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

Coordenador anterior caiu


(a) (b) (c)

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).

Outra abordagem que pode ser utilizada é o algoritmo de eleição baseado


em anel, no qual os processos devem estar fisica ou logicamente ordenados
em formato de anel (ATTIYA; WELCH 2004). Esse algoritmo funciona da
seguinte maneira: quando um processo nota que o coordenador não faz mais
parte do sistema, envia uma mensagem de eleição para o seu sucessor no anel,
Coordenação de processos 9

a qual possui como conteúdo o seu próprio número de processos. O processo


sucessor realiza a mesma ação, incluindo seu número no conteúdo da mensa-
gem, conforme ilustração da Figura 4. O conteúdo da mensagem acumula os
números de processos (TANENBAUM; VAN STEEN, 2007).
O algoritmo continua e todos os processos colocam seu número na lista da
mensagem. Quando a mensagem volta para o processo que enviou a mensagem
pela primeira vez, ele verifica qual possui o maior número e será o próximo
coordenador. Uma mensagem circula pelo anel de processo informando a todos
o número do eleito (TANENBAUM; 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).

3 Exemplos de tipos de coordenação


de processos
Considere um sistema distribuído que, no momento, possui um grupo formado
por seis processos (p1, p2, p3, p4, p5 e p6). Na situação, o p6 está na função
de coordenador, e o sistema possibilita o uso de um recurso compartilhado.
No exemplo ilustrado na Figura 5, são utilizados três tipos de coordenação
de processos:

„„ exclusão mútua distribuída, possibilitada pela implementação do al-


goritmo centralizado;
„„ eleição de coordenador, possibilitada pela implementação do algoritmo
do valentão;
„„ detecção de falhas, implementada por um simples algoritmo de aviso
coletivo.

Para a implementação da detecção de falhas, consideramos um tempo t,


assim, a cada três intervalos de tempo, todos os processos devem enviar uma
mensagem via broadcast indicando que ainda estão ativos e sem falhas. Dessa
maneira, quando um processo não envia a mensagem, tornar-se um suspeito,
indicando que ele pode ter caído; em uma futura requisição a qual ele não
responder, deixará de ser suspeito e sua falha concretizada.
Observe a ilustração da Figura 5, em que, no t = 1 (inicial), p3 faz uma
solicitação para utilizar o recurso compartilhado; o coordenador central,
representado pelo p6, aceita a requisição e envia uma permissão para p3 uti-
lizar o recurso. No t = 2, p5 também faz uma solicitação para usar o recurso
compartilhado, contudo, o coordenador central sabe que o recurso está em
utilização pelo p3. Então, ele avisa p5 e o insere na fila de espera. Essa mesma
situação ocorre em t = 3, no qual p2 também requisita o uso do recurso, e o
12 Coordenação de processos

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.

Figura 5. Exemplificação de mecanismos de coordenação de processos trabalhando em


um intervalo t de 1 a 10.

Nesse momento, entra em ação o mecanismo de detecção de falhas, que é


acionado a cada três períodos. Seguindo esse mecanismo, no exemplo, todos
os processos, inclusive o que desempenha a função de coordenador central,
enviam uma mensagem via broadcast com o seguinte conteúdo “Estou aqui!”,
ou seja, todos percebem que não existe nenhum suspeito de ter falhado.
Coordenação de processos 13

No instante t = 4, p3, que estava fazendo uso do recurso, termina de utilizá-


-lo e o libera para os outros processos. Ao liberar o recurso, p3 envia uma
mensagem para o coordenador central avisando sobre a liberação. O coorde-
nador central (p6) responde o p3 com uma mensagem “OK”. Em seguida, no
instante t = 5, o coordenador central da permissão de uso para o p5, que era
o primeiro da fila. Note, mais uma vez, a exclusão mútua distribuída sendo
aplicada corretamente.
No instante t = 6, p5 está utilizando do recurso compartilhado, p2 está
como primeiro da fila de espera, e p1 acaba de fazer uma requisição para
utilizar o recurso. Nesse instante, o coordenador central (p6), adiciona p1 na
fila de espera e o avisa.
Após o instante t = 6, já se passou mais três intervalos, logo, o mecanismo
de detecção de falhas é acionado, e todos os processos enviam a mensagem
“Estou aqui!” via broadcast, exceto p6 (coordenador central). Isso indica que
p6 se torna um suspeito, ou seja, ele pode ter apresentado uma falha.
No instante t = 7, p4 faz uma requisição para utilizar o recurso comparti-
lhado, contudo, não recebe uma mensagem de resposta do coordenador central,
o que indica que p6 não é mais um suspeito, ele realmente “caiu”. Então, o p4
convoca uma eleição para definir o novo coordenador (isso ocorre no instante
t = 8). Assim, conforme o algoritmo do valentão, p4 envia a mensagem “Elei-
ção” para os processos que possuem maior número que ele, ou seja, p5 e p6.
No instante t = 9, seguindo o funcionamento do algoritmo de eleição,
p5 responde ao chamado de eleição, já p6 não responde, pois apresentou falha
e se retirou.
Como após t = 9 já se passou mais três intervalos, o mecanismo de coor-
denação para detectar falhas é acionado e todos os processos ativos enviam
a mensagem “Estou aqui!” via broadcast. Em seguida, no instante t = 10,
p5 envia uma mensagem para todos os outros processos avisando que ganhou
a eleição e é o novo coordenador central. Por fim, o sistema segue em funcio-
namento normal no instante t = 11, no qual o novo coordenador central retira
o p2 da fila e envia uma permissão para que utilize o recurso compartilhado.
Você pode observar a coordenação de processos em um sistema distribuído e
notar o funcionamento em conjunto de três tipos de coordenação de processos:
exclusão mútua distribuída, eleição e detecção de falhas.
14 Coordenação de processos

ATTIYA, H.; WELCH, J. Distributed computing fundamentals, simulations, and advanced


topics. 2nd ed. [S. l.]: Wiley, 2004.
COULOURIS, G. et al. Sistemas distribuídos: conceitos e projeto. 5. ed. Porto Alegre:
Bookman, 2013.
KSHEMKALYANI, A. D.; SINGHAL, M. Distributed computing: principles, algorithms, and
systems. Cambridge: Cambridge University, 2008.
LYNCH, N. A. Distributed algorithms. [S. l.]: Morgan Kaufmann, 1996.
TANENBAUM, A. S.; VAN STEEN, M. Sistemas distribuídos: princípios e paradigmas. 2. ed.
São Paulo: Pearson Prentice Hall, 2007.

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.

Você também pode gostar