Objetivos

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

Programa

  • Introdução à programação concorrente: corridas e exclusão mútua.
  • Programação concorrente com monitores: conceitos e problemas clássicos.
  • Introdução aos sistemas distribuídos: conceitos e arquiteturas.
  • Mecanismos de sistemas distribuídos: comunicação, serialização, nomes.
  • Arquitetura cliente/servidor e invocação remota.
  • 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

Atualizado: