Sobre esta disciplina

Período: Eletivas (optativas) · Núcleo: Básico · Carga Horária: 60h Tópicos: Sistemas de troca de mensagens. Processadores de comunicação. Roteamento e controle de fluxo. Programas reativos. Alocação de “buffers”.

CampoValor
CódigoCSECBJI.86
NúcleoBásico
Carga Horária60
PeríodoEletivas (optativas)
Pré-requisitosCSECBJI.55 - Redes de Computadores I, CSECBJI.56 - Sistemas Operacionais I

🔒 Trancas

  • CSECBJI.87

📋 Ementa

Sistemas de troca de mensagens. Processadores de comunicação. Roteamento e controle de fluxo. Programas reativos. Alocação de “buffers”. Alocação de processadores. Modelos síncrono e assíncrono de computação. Computações em sistemas anônimos; limitações intrínsecas. Noções de conhecimento em sistemas distribuídos. Eventos, ordens e estados globais. A complexidade de computações distribuídas. Algoritmos para propagação de informação. Algoritmos simples sobre grafos: teste de conectividade e distâncias mais curtas. Eleição de um líder. Técnicas para registrar estados globais. Sincronizadores. Introdução à auto-estabilização. Detecção de terminação. Detecção de “deadlocks”. Outros algoritmos sobre grafos: árvores geradoras mínimas e fluxos em redes. Algoritmos para exclusão mútua. “Dining philosophers” e “drinking philosophers”. Reexecução determinística de programas. Detecção de “breakpoints”. Introdução à simulação distribuída.

🎯 Objetivos

  • Familiarizar o discente com os conceitos, termos e técnicas básicas de algoritmos distribuídos.

📖 Conteúdo Programático

  1. Introdução à Computação Paralela e Distribuída
  • Histórico
  • Paralelismo e Concorrência
  • Computação Paralela e Distribuída
  • Tendências
  1. Arquiteturas Paralelas
  • Taxonomia de Flynn
  • Níveis de Paralelismo
  • Hierarquia de Memória e Caching
  • Corretude de Programas Concorrentes
  • Propriedades
  • Interferência entre processos concorrentes
  • Não Determinismo
  1. Modelos, Ferramentas e Ambientes de Computação Paralela e Distribuída
  • Modelos de Programação Paralela
  • OpenMP, MPI, CUDA e OpenACC
  1. Tópicos Emergentes em Computação Paralela e Distribuída
  • Projeto de Paralelização
  • Padrões de Projeto para Programação Paralela
  • Técnicas Básicas de Otimização
  • Algoritmos Paralelos para Problemas de Busca, Ordenação e Grafos

📕 Bibliografia Básica

  1. COLOURIS, G., DOLLIMORE, J., KINDBERG, T. Sistemas Distribuídos: Conceitos e Projeto. 4ª Edição.
  2. Porto Alegre: Bookman, 2007.
  3. STEVENS, W. R., FENNER, B., RUDOFF, A. M. Programação de Rede Unix: API para Soquetes de Rede. Porto Alegre: Booknan, 2005.
  4. TANENBAUM, A. S., VAN STEEN, M. Sistemas Distribuídos: Princípios e Paradigmas. 2ª Edição. São Paulo: Pearson, 2007.

📗 Bibliografia Complementar

  1. CORMEN, T. H., LEISERSON, C. E., RIVEST, R. L., STEIN, C. Algoritmos: Teoria e Prática. 3ª Edição. São Paulo: Elsevier, 2012.
  2. KUROSE, J., ROSS, K. Redes de Computadores e a Internet: Uma Abordagem Top-Down. 6ª Edição.
  3. Pearson, 2013.
  4. RHODES, B.
  5. GOERZEN, J. Programação de Redes com Python: Guia Abrangente de Programação e Gerenciamento de Redes com Python 3. São Paulo: Novatec, 2015.
  6. TANENBAUM, A. S. Sistemas Operacionais Modernos. 4ª Edição. Pearson, 2015.
  7. TANENBAUM, A. S., WOODHULL, A. S. Sistemas Operacionais: Projeto e Implementação. 3ª Edição.
  8. Porto Alegre: Bookman, 2018.