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”.
| Campo | Valor |
|---|---|
| Código | CSECBJI.86 |
| Núcleo | Básico |
| Carga Horária | 60 |
| Período | Eletivas (optativas) |
| Pré-requisitos | CSECBJI.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
- Introdução à Computação Paralela e Distribuída
- Histórico
- Paralelismo e Concorrência
- Computação Paralela e Distribuída
- Tendências
- 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
- Modelos, Ferramentas e Ambientes de Computação Paralela e Distribuída
- Modelos de Programação Paralela
- OpenMP, MPI, CUDA e OpenACC
- 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
- COLOURIS, G., DOLLIMORE, J., KINDBERG, T. Sistemas Distribuídos: Conceitos e Projeto. 4ª Edição.
- Porto Alegre: Bookman, 2007.
- STEVENS, W. R., FENNER, B., RUDOFF, A. M. Programação de Rede Unix: API para Soquetes de Rede. Porto Alegre: Booknan, 2005.
- TANENBAUM, A. S., VAN STEEN, M. Sistemas Distribuídos: Princípios e Paradigmas. 2ª Edição. São Paulo: Pearson, 2007.
📗 Bibliografia Complementar
- CORMEN, T. H., LEISERSON, C. E., RIVEST, R. L., STEIN, C. Algoritmos: Teoria e Prática. 3ª Edição. São Paulo: Elsevier, 2012.
- KUROSE, J., ROSS, K. Redes de Computadores e a Internet: Uma Abordagem Top-Down. 6ª Edição.
- Pearson, 2013.
- RHODES, B.
- 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.
- TANENBAUM, A. S. Sistemas Operacionais Modernos. 4ª Edição. Pearson, 2015.
- TANENBAUM, A. S., WOODHULL, A. S. Sistemas Operacionais: Projeto e Implementação. 3ª Edição.
- Porto Alegre: Bookman, 2018.