3. Resultater og vurderinger
3.4 Friksjon (effekt og varighet)
8 Referencial Te´orico
Os algoritmos distribu´ıdos se diferem dos algoritmos paralelos, que executam em um mesmo equipamento com mem´oria compartilhada. Os distribu´ıdos se caracterizam pela troca de mensagens entre os elementos processados.
Algoritmos distribu´ıdos emergem em v´arias aplica¸c˜oes, incluindo telecomunica¸c˜oes, processamento de informa¸c˜ao distribu´ıdo, computa¸c˜ao cient´ıfica e controle de processos em tempo real.
Uma parte importante do trabalho de construir um sistema para aplica¸c˜oes dis- tribu´ıdas ´e o desenho, a implementa¸c˜ao e a an´alise desses algoritmos.
Os diversos algoritmos distribu´ıdos v˜ao diferir em v´arios atributos, entre os principais est˜ao:
• M´etodo comunica¸c˜ao inter-processos (IPC): Algoritmos distribu´ıdos executam em diferentes processadores que precisam se comunicar de alguma forma. M´etodos comuns de comunica¸c˜ao incluem envio de mensagens ponto a ponto ou difus˜ao e execu¸c˜ao de chamadas de procedimento remoto (RPC);
• Modelo de tempo: Os modelos de tempo podem ser divididos em dois extremos. S´ıncronos e ass´ıncronos. Nos modelos s´ıncronos os algoritmos executam passo a passo todos ao mesmo tempo. Nos modelos ass´ıncronos, os passos podem ser exe- cutados em momentos diferentes e em diferentes velocidades. Existem tamb´em os modelos parcialmente s´ıncronos onde os alguma informa¸c˜ao de tempo ´e comparti- lhada. Por exemplo um rel´ogio compartilhado.
• Modelos de falha: Os algoritmos podem ser requisitados a tolerar um conjunto limitado de comportamento err´atico. Alguns exemplos de falhas incluem, falha dos processadores, atraso nas mensagens, ou mesmo, falhas arbitr´arias chamadas bizantinas.
• Tipos de problemas: Os algoritmos tamb´em se diferem nos tipos de problemas aos quais pretendem solucionar. Alguns exemplos s˜ao aloca¸c˜ao de recursos, co- munica¸c˜ao, consenso entre os membros, controle de concorrˆencia detec¸c˜ao de dea-
dlocks, snapshots globais, sincroniza¸c˜ao.
Segundo Lynch (Lynch 1996), a principal divis˜ao que podemos fazer entre os al- goritmos distribu´ıdos se d´a pelos seus modelos de tempo s´ıncrono e ass´ıncrono. Para
Referencial Te´orico 9
explica¸c˜ao dos dois modelos, definiremos o algoritmo distribu´ıdo como um grafo direci- onado G = (N, D), onde n = |N | e m = |D|. Para 1 ≤ i, j ≤ n, ni denota um membro de N , chamado n´o, se j 6= i ent˜ao (ni → nj) denota um membro de D, chamado aresta direcionada. As arestas saindo de ni s˜ao chamadas Outi ⊆ D e as arestas em dire¸c˜ao a ni s˜ao chamadas Ini ⊆ D. N´os ser˜ao chamados vizinhos se (ni → nj) ∈ D ou (nj → ni) ∈ D. O conjunto de vizinhos de ni ser´a chamado N eighidividido em I N eighi e O N eighi respectivamente para os vizinhos de ni onde (ni → nj) ∈ D e (nj → ni) ∈ D. Num contexto de tratamento de mensagens, chamaremos de msgi uma mensagem de ni.
No modelo s´ıncrono ´e assumido que os componentes executam computa¸c˜ao simulta- neamente em resposta a um rel´ogio global. A cada passo, o processo ni ´e invocado, se for um n´o com permiss˜ao de gerar mensagens espontˆaneas ni ∈ N0, envia mensagens para os vizinhos. Se existirem mensagens em msgi, o processo ni processa a entrada, executa computa¸c˜ao referente a essas mensagens e envia uma ou mais mensagens pelos seus canais de sa´ıda Outi, como visto no Algoritmo 2.1. No modelo s´ıncrono, M SGi(s) a mensagem ´e recebida a cada passo s. ´E importante notar que a chamada do pro- cesso ni acontece independente de existirem ou n˜ao mensagens para receber, apesar do processamento poder depender da existˆencia de mensagens.
Algoritmo 2.1:S Template Input: s = 0, M SGi(0) = ∅ 2
2 Action: if ni ∈ N0 then 3 Executa processamento;
4 Envia uma mensagem em cada aresta do conjunto Outi (possivelmente vazio) Input: s > 0, M SGi(1), ..., M SGi(s) sendo que origin(msg) = ck ∈ Ini com 1 ≤
k ≤ |Ini| para msg ∈ Ssr=1M SGi(r) 6
6 Action: begin
7 Executa processamento;
8 Envia uma mensagem em cada aresta do conjunto Outi (possivelmente vazio) As restri¸c˜oes de tempo dos algoritmos s´ıncronos n˜ao ´e encontrada na pr´atica na maioria dos sistemas distribu´ıdos, mas esse modelo ´e ´util para entender os problemas e
10 Referencial Te´orico
Com o uso desse sinal dizemos que as a¸c˜oes executadas por esse algoritmo s˜ao atˆomicas, ou seja, n˜ao podem ser interrompidas pela chegada de uma mensagem. Um modelo gen´erico de algoritmo ass´ıncrono ´e apresentado no Algoritmo 2.2.
Algoritmo 2.2:A Template Input: msgi = nil
2
2 Action: if ni ∈ N0 then 3 Executa processamento;
4 Envia uma mensagem em cada aresta do conjunto Outi (possivelmente vazio) Input: msgi sendo que origin(msg) = ck∈ Ini com 1 ≤ k ≤ |Ini|
6
6 Action: if Bk then
7 begin
8 Executa processamento;
9 Envia uma mensagem em cada aresta do conjunto Outi (possivelmente
vazio)
Algoritmos ass´ıncronos mais port´aveis e podem ser executados em ambientes com modelos de tempo s´ıncrono. Algumas vezes, esses algoritmos n˜ao podem atingir solu¸c˜oes em tempo esperado ou mesmo n˜ao atingir nenhuma solu¸c˜ao
No modelo parcialmente s´ıncrono assume-se que existe rel´ogio s´ıncrono entre os ele- mentos. A maioria dos algoritmos reais s˜ao implementados dessa forma. S˜ao algoritmos em geral eficientes, por´em, relativamente fr´ageis quanto a qualquer viola¸c˜ao dos pressu- postos de tempo.
Lynch (Lynch 1996) divide a pesquisa em sistemas distribu´ıdos em dois campos teoria dinˆamica e teoria est´atica. A teoria est´atica, tem foco em sistemas est´aveis, com redes confi´aveis onde os participantes s˜ao conhecidos. A teoria dinˆamica enfoca as particularidades dos sistemas distribu´ıdos dinˆamicos como:
• n´umero desconhecido de n´os participantes; • n´os podem entrar, sair e retornar;
• mobilidade dos n´os; difus˜ao Local, onde a informa¸c˜ao alcan¸ca v´arios n´os geografi- camente pr´oximos;
• sucesso no envio das mensagens depende de fatores de distˆancia e propaga¸c˜ao de sinal;
Referencial Te´orico 11
• conten¸c˜ao devido a colis˜oes e perda de mensagens.
A maioria dos sistemas distribu´ıdos modernos se encaixa no paradigma dinˆamico como por exemplo, aplica¸c˜oes Cliente Servidor, redes P2P, comunica¸c˜oes sem fio.
As primeiras aplica¸c˜oes ponto a ponto (P2P) se popularizaram atrav´es de servi¸cos de compartilhamento de arquivos para a Internet. A ideia principal deste servi¸co ´e que os arquivos estejam armazenadas e sejam disponibilizados nas m´aquinas dos pr´oprios usu´arios da aplica¸c˜ao. Ele funciona da seguinte maneira: cada usu´ario pode descarregar os arquivos que est˜ao armazenados em computadores de outros usu´arios, em contrapar- tida, ele dever´a disponibilizar arquivos para que outros usu´arios tamb´em possam obtˆe-los de sua m´aquina.