Disciplina do Mestrado/Doutorado em Informática e Optativa do Bacharelado em Ciência da Computação

Prof. Elias P. Duarte Jr.     Departamento de Informática     UFPR

  Disciplina CI721 (Mestrado/Doutorado) e CI088 (Optativa Bacharelado em Ciência da Computação)
  Segundo Semestre de 2017: neste semestre o Prof. Elias não está ministrando esta disciplina

Todos os AVISOS serão postados aqui.

Horário: Segundas & Quartas, 13:30 -> 15:00hs Salas: (segundas) e (quartas)

Prova 1: de abril de 2018 (quarta-feira, na hora da aula, na sala de aula)

Prova 2: de junho de 2018 (quarta-feira, na hora da aula, na sala de aula)

Prova Final: de julho de 2018 (segunda-feira, na hora da aula, na sala de aula)

Avaliação: 2 provas de 35 pontos cada; trabalho prático em fases valendo no total 30 pontos.

O atendimento a dúvidas é feito ao término da aula, o professor conta com a compreensão dos alunos para evitarem consultas por e-mail. Sempre há tempo depois de cada aula! Se detectarmos então a necessidade, podemos também agendar um horário para atendê-lo na minha sala.

  O Trabalho Prático

O trabalho deve ser feito individualmente (alunos pós-graduação) ou em dupla (alunos graduação).
Atenção: Data para disponibilizar o trabalho: de abril de 2018 (segunda-feira) O prazo para fazer o trabalho é de quase 3 semanas, este prazo não será prorrogado!

Os alunos devem informar por e-mail a URL do trabalho, usando o subject "TP* SISDIS 2018-1"

Deve ser feita uma página Web, que contém:

  1. Relatório HTML explicando como o trabalho foi feito (use desenhos, palavras, o que você quiser): o objetivo é detalhar as suas decisões para implementar seu trabalho.

  2. Código fonte dos programas, comentados. ATENÇÃO: acrescente a todo programa a terminação ".txt" para que possa ser diretamente aberto em um browser. Exemplos: cliente.py.txt ou servidor.c.txt

  3. Log dos testes executados: mostre explicitamente diversos casos testados, lembre-se é a partir desta listagem de testes que o professor vai medir até que ponto o trabalho está funcionando.
    Veja este programa exemplo para ilustrar a criação de um bom log.
  Informações sobre a Disciplina Sistemas Distribuídos
  Pré-Requisitos

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).

  Programa

Esta é uma disciplina com ênfase em algoritmos distribuídos clássicos & tolerância a falhas. Os tópicos cobertos em cada semestre incluem:

  1. Introdução aos Sistemas Distribuídos

  2. Modelos: Sistemas Síncronos, Assíncronos e Parcialmente Síncronos

  3. Tolerância a Falhas

  4. Diagnóstico em Nível de Sistema

  5. Ordenação de Eventos e Relógios Lógicos

  6. Exclusão Mútua Distribuída

  7. O Problema dos Generais Bizantinos

  8. Detectores de Falhas

  9. Difusão Confiável, FIFO, Causal e Atômica

  10. Algoritmos de Consenso

  11. Transações Atômicas Distribuídas

  12. Replicação

  13. Comunicação em Grupo (Group Communication)

  14. Sincronização de Relógios

  15. CheckPointing & Rollback

  16. Particionamento & Recuperação de Redes de Topologia Arbitrária

  17. Simulação de Sistemas Distribuídos

  18. Comunicação de Processos sobre TCP/IP

  19. Segurança

  Biblioteca SMPL
  Simulation Programming Language - Biblioteca C, C++ para Simulação baseada em Eventos Discretos

smpl.c         smpl.h         rand.c         makefile


hipercubo.c         cisj.c

  Referências

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:

  • A. D. Kshemkalyani, M. Singhal, Distributed Computing: Principles, Algorithms, and Systems, Cambridge U. Press, 2008.
  • C. Cachin, R. Guerraoui, L. Rodrigues, Introduction to Reliable and Secure Distributed Programming, Springer, 2011.
  • S. Mullender (Editor), Distributed Systems, 2nd Edition, ACM Press, 1993.
  • P. Jalote, Fault Tolerance in Distributed Systems, Prentice-Hall, 1994.
  • D. K. Pradhan (Editor), Fault-Tolerant Computer System Design, Prentice-Hall, 1996.
  • B. Charron-Bost, F. Pedone, A. Schipper (Editors) Replication: Theory and Practice, Springer, 2010.

Alguns dos artigos importantes neste semestre são:

  • Algirdas Avizienis, Jean-Claude Laprie, Brian Randell, Carl E. Landwehr, "Basic Concepts and Taxonomy of Dependable and Secure Computing," IEEE Transations on Dependable and Secure Computing, pp. 11-33, Vol. 1, No. 1, 2004.
  • Ronald P. Bianchini Jr., Richard W. Buskens, "Implementation of On-Line Distributed System-Level Diagnosis Theory," IEEE Transactions on Computers, pp. 616-626, Vol. 41, No. 5, 1992.
  • Fred B. Schneider, "Implementing Fault-Tolerant Services Using the State Machine Approach: A Tutorial," ACM Computing Surveys, pp. 299-319, Vol. 22, No. 4, 1990.


UFPR   Departamento de Informática   Prof. Elias P. Duarte Jr.