/Algoritmos-Sistemas-Distribuidos

Esse projeto, realizado para a disciplina de Sistemas Distribuídos da UNICAMP, visa implementar alguns algortimos com o uso de máquinas na AWS.

Primary LanguageC++

Segunda Avaliação MC714 - Sistemas Distribuídos

Resumo

Esse projeto, realizado para a disciplina de Sistemas Distribuídos da UNICAMP, visa implementar alguns algortimos com o uso de máquinas na AWS.

Os algoritmos a implementados foram:

  • Relógio Lógico de Lamport.
  • Exclusão Mútua.
  • Algoritmo de Bully para Eleição de Líder.

Os algoritmos foram implementados utilizando mensagens MPI com o Open MPI.

Para entender o uso do Open MPI, utilizamos este turorial, junto da documentação do Open MPI.

Requisitos

Para executar o projeto é necessária a criação de ao menos três máquinas com Ubuntu (no caso, foram criadas três instâncias no AWS EC2).

Depois, é necessária a instalação do Open MPI em todas as máquinas, e configuras as chaves públicas SSH para acesso delas.

Para a configuração do SSH e do Open MPI nas máquinas AWS, foi utilizado este vídeo.

Compilando e Executando

Uma vez configuradas as máquinas, já é possível a compilação e execução do programa.

Reforçando que, para o makefile funcionar, é necessária a nomeação das duas slaves como slave1 e slave2 em /etc/hosts/.

Primeiramente é preciso criar uma pasta chamada Trabalho-02 na home de cada uma das máquinas.

Agora, a pasta do projeto deve ser copiada para a maquina master com o comando:

scp -r <Caminho_Para_o_Projeto>/Trabalho-02 <user-name>@<ip-da-máquina>:~

Por fim, deve-se acessar a máquina master por SSH, navegar até a pasta do projeto e executar o comando:

make run

que compila o programa com:

mpiCC src/*.cpp -o exec

depois envia às outras máquinas com:

scp exec ubuntu@slave1:~/Trabalho-02/

e por fim, executa o programa com:

mpirun -host localhost,slave1,slave2 ./exec

Quando executando o programa, é necessário que coloque algum caracter qualquer no entrada padrão entre a execução de cada um dos algoritmos para que o próximo comece.

Referências

https://www.open-mpi.org/doc/v4.1/ (Documentação Open MPI)

https://www.codingame.com/playgrounds/349/introduction-to-mpi/introduction-to-distributed-computing (Turorial Open MPI)

https://www.youtube.com/watch?v=Nh_MKvur-QA&ab_channel=MatheusGois (Configuração MPI e SSH no AWS)

https://cvw.cac.cornell.edu/mpip2p/waittestfree (Usado e adaptado trecho de código referente ao MPI_Test())

https://pt.wikipedia.org/wiki/Elei%C3%A7%C3%A3o_de_l%C3%ADder (Algoritmo de Bully)