Programa | 1. Introdução à programação concorrente: corridas e exclusão mútua. 2. Programação concorrente com monitores: conceitos e problemas clássicos. 3. Introdução aos sistemas distribuídos: conceitos e arquiteturas. 4. Mecanismos de sistemas distribuídos: comunicação, serialização, nomes. 5. Arquitetura cliente/servidor e invocação remota. 6. Algoritmos de coordenação em sistemas distribuídos: tempo e relógios, exclusão mútua, difusão fiável.
|
Bibliografia | The Art of Multiprocessor Programming. Maurice Herlihy, Nir Shavit, 2012. Distributed Systems: Principles and Paradigms, 2Ed Andrew S. Tanenbaum, Maarten Van Steen, 2006. Java Concurrency in Practice. Brian Goetz, Tim Peierls, Joshua Bloch, 2006. Distributed Systems: Concepts and Design, 5Ed George Coulouris, Jean Dollimore, Tim Kindberg and Gordon Blair, 2011.
|
Resultados da aprendizagem | - Reconhecer e explicar corridas em programas concorrentes. - Aplicar monitores em programação concorrente com memória partilhada. - Construir, avaliar e justificar sistemas distribuídos organizados segundo o paradigma cliente/servidor. - Descrever arquiteturas e algoritmos de coordenação para sistemas distribuídos e propor a sua aplicação em contextos concretos.
|