Sistemas Distribuídos – MAB733

Course IDCourse NameInstructorRoom NumberTime
MAB733Sistemas Distribuídos

A computação distribuída está relacionada com  o projeto, implementação e avaliação de algoritmos que executam em processadores distintos, interconectados por meio de canais de comunicação. Sistemas distribuídos aparecem em vários cenários, incluindo telecomunicações, computação móvel e ubíqua, serviços Web, computação científica e controle de processos de tempo real.  Os sistemas distribuídos devem funcionar de forma correta, mesmo com processadores individuais e canais de comunicação operando em diferentes velocidades, e mesmo na ocorrência de falhas em parte dos componentes do sistema.  O objetivo desta disciplina é apresentar as principais motivações e desafios da área de computação distribuída, e os algoritmos e modelos arquiteturais fundamentais para o desenvolvimento de sistemas distribuídos. Os tópicos de estudo deverão dar ao aluno a fundamentação teórica e prática necessária para: definir e projetar especificações precisas sobre o comportamento desejado de um sistema distribuído, selecionar modelos e ferramentas adequados para a sua implementação, identificar medidas de complexidade e de desempenho e avaliar o sistema de acordo com essas medidas, propor e desenvolver novas soluções para a área de computação distribuída.

Ementa:

  • Introdução à computação distribuída.
  • Conceitos fundamentais de sistemas distribuídos (processos e threads, programação concorrente, comunicação via troca de mensagens, interação síncrona e assíncrona).
  • Arquiteturas de sistemas distribuídos (cliente/servidor, peer-to-peer, principais variações).
  • Comunicação em sistemas distribuídos (interação com o sistema operacional e a rede,  programação com sockets, comunicação em grupo, chamada remota de procedimento, eventos, publish/subscribe).
  • Gerência de processos distribuídos (migração de processos,  controle de concorrência, exclusão mútua distribuída, deadlock distribuído).
  • Sincronização e coordenação em sistemas distribuídos (relógios lógicos e estados globais, eleição de líder, acordo distribuído, transações atômicas e distribuídas).
  • Tolerância a falhas (motivação, serviços de tolerância a falhas, replicação).
  • Conceito de middleware (funcionalidades, suporte do sistema operacional, interface com as aplicações e serviços, modelo de referência).
  • Tecnologias de middleware tradicionais (CORBA, COM+, .NET, J2EE, EJB).
  • Middlewares de nova geração (middleware reflexivo, middleware adaptativo, middleware de provisão de contexto, middleware orientado a apectos, middleware dirigido a modelos) e suas implementações.
  • Tecnologias de serviços Web (visão geral, serviços Web orientados a documento e orientados a RPC, linguagens e protocolos: XML, SOAP, UDDI, WSDL).
  • Segurança em sistemas distribuídos.
  • Opcional: sistemas P2P (conceitos básicos, arquiteturas, aplicações).
  • Opcional: introdução a grades computacionais.

 

Bibliografia:

  • G. Coulouris, J. Dollimore and T. Kindberg, Distributed Systems: Concepts and Design, Addison Wesley, 4th ed., 2005.
  • A. Tanenbaum e M. van Steen, Distributed Systems: Principles and Paradigms. Prentice-Hall, 2nd  ed., 2007.
  • G. Andrews, Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley, 2000.
  • D. Comer and D. Stevens, Internetworking with TCP/IP – Client-server Programming and Applications, vol. III,  2nd ed.,  1996.
  • K. P. Birman, Reliable Distributed Systems: Technologies, Web Services, and Applications, Springer, 2005.
  • A. Puder,  K. Römer and F. Pilhofer, Distributed System Architecture: A Middleware Approach, Elsevier, 2006.
  • W. Stallings, Operating Systems – Internals and Design Principles, Prentice Hall, 6th ed., 2009.
  • J. Kurose and K. Ross, Computer Networking: A Top-Down Approach, Addison-Wesley, 2001
  • Artigos selecionados das principais revistas e conferências da área de computação distribuída.