Sistemas Distribuídos


Aqui eu disponibilizo material para capacitar o aluno a identificar os princípios básicos de funcionamento de um sistema distribuído, analisando seus principais requisitos erecursos. Enjoy :-)

Códigos

Um conjunto de programas que demonstram a comunicação entre processos via sockets é composto por:

1. Cliente Servidor: Cliente e Servidor síncronos sem Threads.

2. Cliente Servidor Escalabilidade e Cliente Servidor com Threads: Uso de primitivas síncronas, mas com aumento de escalabilidade.

3. Cliente Servidor com Primitivas Bufferizadas: código que ajuda a compreensão de caixas postais com sockets.

4. Cliente Servidor com TimeOut e Cliente Servidor com Estimativas de Tempo auxiliam no entendimento de primitivas confiáveis.

5. Cliente Servidor com Envio de Arquivos BináriosCliente Servidor com Envio de Arquivos DLL exemplificam o uso de sockets para envio de arquivos entre o Cliente e o Servidor.

6. Primitivas assíncronas podem ser vistas em Cliente Servidor Assíncrono e Cliente Assíncrono.

7. Um exemplo simples de balanceamento de carga pode ser visto em Cliente Servidor Primos e Cliente Servidor Primos 2 (precisa entender e melhorar o código :-)

8. Cliente Servidor Mediador apresenta uma forma de Mediar a comunicação entre Cliente e Servidor, possibilitando a construção de um Proxy.

9. DLL Late Binding mostra como construir uma DLL com ponteiro para função.

10. RPC NP Unicast, RMI Java e Web Services Examples exemplificam o uso de RPC, RMI e Web Services.

11. Sincronização de Relógios é uma exemplo de sincronização lógica de relógios (simulando-os) usando o algoritmo de Lamport.

12. Dinamic Threads e Static Threads apresentam como alocar Threads de forma dinâmica ou estática.

Ambiente

Você encontrará códigos escritos com o Microsoft Visal Studio, Java e em Dev-C/C++. Portar do MVS para o Dev-C/C++ é simples e alguns exemplos mostram isso.

Bibliografia

TANENBAUM, Andrew S. Distributed Operating Systems. Prentice-Hall Inc.

COULOURIS, G. F.; DOLLIMORE, J.; KINDBERG, T. Distributed Systems: Concepts and Design. 2nd Edition Addison-Wesley Publishing.

STEVENS, W. Richard. UNIX Network Programming. 2nd Edition, Vol I, Networking APIs: Sockets and XTI, Prentice-Hall.

BIRMAN, K.P. Building Secure and Reliable Network Applications. Manning Publications Co.

LEVY, E. & SILBERSCHATZ, A. Distributed File System: Concepts and Examples. Computing Surveys.

Slides SO II

Meus slides apresentam uma Introdução aos Sistemas Distribuídos com alguns Conceitos de Hardware e Software e a descrição de Desafios e Requisitos em sua implementação.

Descrevo, ainda, a Comunicação entre Processos e como ela pode ser implementada usando RPC e RMI e como a escalabilidade da comunicação pode ser obtida através de Processos e Threads.

Concluo o material com conceitos de Grupos de Processos, Clock Físico e Lógico, Exclusão Mútua em Sistemas Distribuídos.

Slides SD

Outra concepção do material de SD possui uma Introdução e apresenta Modelos de Sistemas, focando em Comunicação entre processos e descrevendo RMI, Corba e Web Service.