S I S T E M A S     D I S T R I B U Í D O SDisciplina do Mestrado/Doutorado em Informática e Optativa do BCC/IBM
Prof. Elias P. Duarte Jr.
 
 
Departamento de Informática
 
 
UFPR
Caros alunos: conforme combinado a nossa aula de quarta-feira, dia 17 de abril de 2025 será virtual às 20hs, para programação SMPL. Esteja em um computador em que possa compilar e executar um programa C, de preferência Linux. O link para a sala é este: https://bbb.c3sl.ufpr.br/rooms/ipf-mvc-osz-5ad/join Caros alunos: devido à solicitação de liberação dos alunos feita pela Coordenação do BCC para reunião com a CAPES, hoje terça-feira dia 8/abril/2025 justo no horário da nossa disciplina, não haverá aula. Confirmando haverá sim aula quinta-f 27/março/2025, aguardo todos vcs! Atenção pessoal: devido à visita do Prof. Kishor Trivedi não haverá aula no dia 25/03/2025, os alunos estão convidados para palestra do Prof. Trivedi às 16:30hs no Auditório do Departamento de Informática. Caros alunos: bem vindos! Iniciamos já na terça-feira 11 de março de 2025, 15:30hs, sala PC-04 Todos os AVISOS serão postados aqui. Horário: terças e quintas, 15:30 às 17hs Sala: PC-04
Prova 1: 8 de maio de 2025 (quinta-feira, na hora da aula, sala -)
Prova 2: 26 de junho de 2025 (quinta-feira, na hora da aula, na sala de aula) Prova Final: 8 de julho de 2025 (terça-feira, na hora da aula, na sala de aula)
Avaliação: 2 provas de 35 (ou 40) pontos cada; trabalho prático em 1 ou 2
etapas (a definir!) valendo 20 ou 30 pontos no total (respectivamente).
Módulo 1  
Módulo 2  
Módulo 3  
Módulo 4  
Módulo 5 e 6  
Módulo 7  
Módulo 8  
Módulo 9  
Capítulo 1: Introdução aos Sistemas Distribuídos Na seção 7 deste artigo estão definidos os detectores de falhas vRing e vCube, além da força-bruta Vejam também os slides sobre vRing e vCube, além dos cadernos com anotações das aulas!
TRABALHO PRÁTICO: Um Detector de Falhas em Anel Baseado em Heartbeats Estudamos o VRing como um detector de falhas pull, ou seja: os processos executam testes entre si para determinarem seus estados. Este trabalho é um projeto de pesquisa: a dupla vai propor uma versão push do algoritmo, isto é, os processos enviam mensagens de heartbeat periodicamente para informarem que estão corretos. O algoritmo proposto deve ser (0) batizado, (1) descrito em alto nível, defina o modelo de sistema utilizado (2) especificado em pseudo código, (3) avaliado através de simulação com o SMPL. Atenção: a data limite para disponibilizar o trabalho é 23 de maio de 2025 (não serão aceitos trabalhos fora do prazo!) Os alunos devem informar por e-mail a URL do trabalho, usando o subject "TP SISDIS 2025-1"
Os trabalhos devem ser feitos em dupla!
Deve ser feita uma página Web, que contém:
TRABALHO PRÁTICO 0: Roteiro de Aprendizado Prático de Simulação Tarefas para aprender a usar nossa ferramenta de simulação, o SMPL. Tarefa 0: digitar, compilar e executar o programa exemplo, tempo.c Tarefa 1: Fazer cada um dos processos testar o seguinte no anel. Implemente o teste com a função status() do SMPL e imprimir (printf) o resultado de cada teste executado. Por exemplo: “O processo i testou o processo j correto no tempo tal.” Tarefa 2: Cada processo correto executa testes até achar outro processo correto. Lembre-se de tratar o caso em que todos os demais processos estão falhos. Imprimir os testes e resultados. Tarefa 3: Cada processo mantém localmente o vetor State[N]. A entrada do vetor State[j] indica o estado do processo j. O estado de cada processo pode ser: -1 (unknown), 0 (correto) ou 1 (falho). Inicialize (para todos os processos) o State[N] com -1 (indicando estado “unknown”) para todos os demais processos e 0 para o próprio processo. Nesta tarefa ao executar um teste em um processo j, o testador atualiza a entrada correspondente no vetor State[j]. Em cada intervalo de testes, mostre o vetor State[N]. Tarefa 4: Quando um processo correto testa outro processo correto obtém as informações do estado dos demais processos do sistema, processos do sistema exceto aqueles que testou nesta rodada, além do próprio testador. Na página Web do Trabalho Prático, por favor incluam links para as 5 tarefas acima.
Mestrado e Doutorado em Informática: é pré-requisito para a disciplina do Mestrado, Sistemas Distribuídos (CI721), o aluno ter domínio de Programação de Computadores com a linguagem C em ambiente Unix (Linux).
Bacharelado em Ciência da Computação: A disciplina Redes de Computadores II (CI061) é Pré-Requisito obrigatório
para o aluno poder se matricular em Tópicos em Sistemas Distribuídos
(CI088).
Esta é uma disciplina com ênfase em algoritmos distribuídos clássicos & tolerância a falhas. Os tópicos cobertos em cada semestre incluem os seguintes.
Neste período os tópicos serão os seguintes:
Em outros semestres os tópicos já incluiram:
smpl.c
 
 
 
 
smpl.h
 
 
 
 
rand.c
 
 
 
 
tempo.c
 
 
 
 
makefile
Não há um único livro texto para esta disciplina. Alguns dos tópicos
aparecem em livros, outros em artigos. Uma lista de livros sugeridos segue abaixo:
Neste período vamos usar em parte da disciplina o livro "Introduction to Reliable Distributed
Programming" que está disponível em versão digital na Biblioteca da UFPR. Para acessar o pdf faça:
Alguns dos artigos importantes neste semestre são:
|