Trabalho Prático 2 - Sistemas Distribuídos

Relatório

Arquivos Utilizados:

Para este trabalho os arquivos do projeto anterior foram reutilizados, por isso a seguir estão listados os arquivos chave utilizados na última etapa do trabalho

Modificações:

O arquivo handlers.c foi modificado acrecentando mais uma função chave (broadcastHandler) que executa todas as ações necessárias quando um nodo executa um broadcast. Além desta modificação, conforme orientado pelo professor o nodo não mais se utiliza de um vetor global para determinar quais serão seus testes, utilizando agora o seu vetor state.

Funcionamento:

A função broadcastHandler é acionada quando há um broadcast agendado por meio da função schedule e funciona de forma recursiva. Esta função recebe dois parâmetros um é o id do nodo que irá enviar as mensagens e o outro é o número de mensagens que ele irá enviar (variável smax). Para cada cluster de 1 até smax o nodo calcula o seu C(i,s) e manda a mensagem para o primeiro nodo sem-falha deste conjunto, em seguida a função executa uma chamada recursiva para esse nodo como origem em que smax será igual a s - 1, assim fazendo com que ele envie para todos os nodos de cluster 1 até s - 1. Caso o nodo seja folha s - 1 irá valer zero e nenhuma mensagem será enviada a partir dele.

Resultados Obtidos:

A partir dos resultados obtidos em múltiplas execuções com número variado de nodos, múltiplas origens e combinações diferentes de nodos falhos, o algoritmo realiza a difusão da mensagem conforme o proposto na especificação do trabalho