Comunicação em grupo e sincronismo virtual: aspectos da plataforma BCG


Raimundo Macêdo
Laboratório de Sistemas Distribuídos(LaSiD) - CPD/UFBA



Um Sistema Distribuído pode ser definido como a computação concorrente é coordenada de processos com vistas a um objetivo comum. Em geral, esses processos residem em máquinas distintas espalhadas numa região geógrafica, e comunicam-se através de troca de mensagens. Uma forma natural de se desenvolver tais sistemas é através do agrupamento de processos afins, formando um conjunto de grupos. A comunicação nesse contexto passa então a ser feita através de uma unica operação (multicast) endereçada a determinado grupo. Cabe ao sistema de comunicação em grupo fornecer primitivas de comunicação e gerenciamento que possibilitem aos seus utilizadores (programas distribuídos) a abstração dos aspectos internos de gerenciamento dos grupos. Essas primitivas são implementadas através de protocolos de entrega de mensagens (causal, total, delta-causal), membership e controle de fluxo. Em geral o que se deseja é que participantes de um grupo perceba eventos (ex. entrega de mensagem, modificação do grupo, falhas, etc.) numa ordem consistente (essa propriedade é em geral chamada de sincronismo virtual). A ausência de estado global e possibilidade de falha parcial são elementos complicadores para se garantir tais propriedades. Complicações adicionais aparecem quando grupos que se sobrepõem (têm processos em comum) são levados em conta. Nesta palestra, apresentaremos as características de semântica das operaçõs de comunicação em grupo disponiveís na plataforma BCG (Base Confiável de Comunicação em Grupo) em desenvolvimento no Laboratório de Sistemas Distribuídos da UFBA. O projeto LOCUS, busca, entre outras coisas, a formalização mais adequada para essas operações de forma a facilitar a prova de programas escritos sobre a BCG.