Pré-requisitos:

     Conceitos sobre Sistemas Operacionais e Redes de Computadores.
     Programação C, C++ e Java. Noções de Orientação a Objetos.

Ementa:

     Concorrência e Sincronização.
     Memória Compartilhada, Semáforos e Monitores.
     Problemas e verificação de sistemas concorrentes.
     Troca de Mensagens.
     Modelos de programação distribuída: Cliente-Servidor, Orientado a Objetos, Orientado a Eventos, etc.
     Características de sistemas distribuídos: comunicação de grupo e difusão, relógios lógicos, ordenação de eventos.
     Técnicas de Tolerância a Falhas.
     Modelo de chamadas a procedimentos e métodos remotos (RPC e RMI).
     Desenvolvimento de aplicações concorrentes e distribuídas.


Bibliografia:

  • Sistemas Operacionais - Conceitos e Aplicaçõs,  Silbershatz e Galvin, Ed. Campus (traduzido) - inclui Java
  • Sistemas Operacionais - Conceitos,  Silbershatz e Galvin.  5a edicaoPrentice Hall do Brasil (traduzido)
  • A. Tanembaum, Sistemas Operacionais Modernos, 2a Edição, Pearson / Prentice-Hall, 2002.
  • A. Tanembaum and M. van Steen, Distributed Systems: Principles and Paradigms, Prentice Hall, 2002.
  • D. Lea, Concurrent Programming in Java: Design Principles and Patterns, 2nd Edition, The Java Series, Addison Wesley, 2000.
  • D. E. CommerInternetworkig with TCP/IP, Volume I, Principles, Protocols and Architecture, Englewood Clifs, NJ, Prentice Hall Inc., Third Edition, 1995.
  • E. R. Harold, Java Network Programming, O'Reilly, 2000.
  • E. Clarke, Jr., Orna Grumberg and Doron A. Peled, Model Checking, MIT Press, 1999.
  • M. Ben-Ari, Principles of Concurrent Programming, Englewood Cliffs, NJ, Pretice Hall, 1982.
  • M. Raynal, Distributed Algorithms and Protocols, John Wiley & Sons, 1988.