Sistemas Distribuídos
Thaís Vasconcelos BatistaUFRN – DIMAp
http://www.dimap.ufrn.br/[email protected]
Programa do CursoINTRODUÇÃO
Conceitos Básicos Sistemas em Rede X Sistemas DistribuídosNecessidade de Sistemas DistribuídosAspectos de Projeto de Sistemas Distribuídos
MODELOS DE ORGANIZAÇÃO DE SISTEMAS DISTRIBUÍDOS
Cliente-ServidorParesFiltros
Programa do Curso (cont.)SINCRONIZAÇÃO EM SISTEMAS DISTRIBUÍDOS
Necessidade de SincronizaçãoSemáforosMonitoresProblema Clássico de SincronizaçãoDeadlock e Starvation
========= 1a. Prova ==========
COMUNICAÇÃO ENTRE PROCESSOSTipos de ComunicaçãoSocketChamada Remota de Procedimento (RPC)
Programa do Curso (cont.)THREADS
Threads x ProcessosNecessidade de ThreadsProgramação com Threads
MIDDLEWAREConceitosCORBA
ESTUDO DE CASO
Bibliografia Andrew Tanembaum – Distributed Operating System. Prentice-Hall, 1995.George Couloris et al. – Distributed Systems: Concepts and Design. Addison-Wesley, 1994.Douglas Commer – Internetworking with TCP/IP –Vol. I, II e III. Prentice-Hall, 1998.W. Richard Stevens – Unix Network Programming. Prentice-Hall, 1990.Jon Siegel – CORBA Fundamentals and Programming. John Wiley & Sons, 1996.
Sistema Distribuído
Conjunto de máquinas (CPU + memória) interligadas em rede.
Processador 1Memória 1
Processador 2Memória 2
Processador 3Memória 3
Rede
Sistema DistribuídoSistema operacional distribuído trata este conjunto como um único sistema computacional.
Processador 1Memória 1
rede
Estação 1 Estação 2 Estação 3
Disco Disco Disco
Processador 2Memória 2
Processador 3Memória 3
Aplicações DistribuídasAplicações que “se espalham” por várias máquinas.
aplicações concorrentes onde cada processo que compõe a aplicação pode ser executado em uma máquina arbitrária
Em sistemas distribuídos: qualquer aplicação pode ser executada de forma distribuída.Em sistemas operacionais convencionais: aplicação deve ser programada de forma explicitamente distribuída.
Conceitos BásicosParalelismo:
vários processos executando simultaneamente em vários computadores compartilhando ou não memóriaSó é possível em Sistemas multiprocessadores.
Pseudo-Paralelismo (Paralelismo Abstrato):vários processos compartilhando um mesmo processador ou outros recursos de um computador.Ilusão de que vários programas estão rodando ao mesmo tempo
Sistemas Paralelos
Barramento
Cache
Processo A
Cache
Processo B
Cache
Processo CSistema Operacional
Fila Execução: D, E
A (executando)B (executando)C (executando)
Disco
D (pronto)E (pronto)
Memória
Sistema Distribuído X Sistema Paralelo
Processador 1Memória 1
Processador 2Memória 2
Processador 3Memória 3
Red
Sistema Distribuído:
Sistema Paralelo ou Memória Compartilhada:
Processador 1 Processador 2 Processador 3
Memória
Sistema todo age como um sistema clássico de processador único
Paralelização de ProblemasDiminuição do tempo necessário para obter o resultado de uma computação;Um programa paralelo poderia igualmente ser executado em um sistema distribuído ou em uma máquina paralela;Execução em sistema distribuído permite que o recurso de processamento tenha várias funções;Viabilidade depende da quantidade de comunicação necessária.
Sistemas Operacionais de RedeConjunto de máquinas interligadas em rede.
Sistema operacional inclui funções para comunicação remota
Processador 1Memória 1
Disco Disco Disco
Processador 2Memória 2
Processador 3Memória 3
Executar processo X na estação 2
Estação 3Estação 1 Estação 2
rede
SO de Rede X SO DistribuídoSistema Distribuído
Conjunto de Computadores que age como uma única máquina (Sistema Coeso)Requisito Fundamental: Transparência
Sistema em RedeColeção de computadores independentes
ConcorrênciaPrograma Concorrente:
Concorrência = várias tarefas em progresso ao mesmo tempoprogramas executados em paralelismo ou pseudo-paralelismo
Tipicamente, em pseudo-paralelismo o processo não tem controle sobre o instante em que perderá o controle da CPU
Exemplos de Concorrência
Sistema Operacional
gerenciamento de arquivos
gerenciamento de memória
suporte a comunicação
aplicação: acesso a base de dados
administrador consultando log
programa batch atualizando dados
usuário interativo consultando base
Conceitos Básicos
Processador 1Memória 1
Processador 2Memória 2
Processador 3Memória 3
Sistema Distribuído:
Sistema Paralelo ou Memória Compartilhada:
Processador 1 Processador 2 Processador 3
Memória
Sistemas DistribuídosFinalidade
Compartilhamento de Dados
Compartilhamento de Recursos (Periféricos, CPU)
Comunicação entre Pessoas
Flexibilidade
Sistemas DistribuídosCaracterísticas
Mecanismo de Comunicação entre Processos
Kernels idênticos em cada máquina do Sistema
Mesmo Gerenciamento de Processos em todas as máquinas
Mesmo Sistema de Arquivos
Sistemas DistribuídosProblemas
Pouco Software
Dependência da Rede
Saturação e Falhas na rede afetam o sistema
Segurança
O fácil acesso aos dados também se aplica aos dados secretos
Sistemas DistribuídosRequisitos de Software
Transparência
Flexibilidade
Confiabilidade
Desempenho
Escalabilidade
Transparência de Localização
Usuário não precisa saber onde se encontra o recurso
Nome do Recurso não incorpora a sua localização
arq1.carq1.c arq1.c
oxum oxalá obaluaê logum-ede
Transparência de Migração
Liberdade de MigraçãoSem mudança de nomeSem conhecimento do usuário
arq1.carq1.c arq1.c
oxum oxalá obaluaê logum-ede
Transparência de Replicação
Usuário não precisa saber da replicação
arq1.c
oxalá
arq1.c
obaluaê
arq1.c
oxum logum-ede
arq1.c
Flexibilidade
Usuário
Microkernel
Servidor de Processos
Microkernel
Servidor de Diretório
Microkernel
Servidor de Arquivos
Microkernel
Rede
Kernel Monolítico
Micro Kernel
Usuário
kernelMonolítico
Inclui Arquivos,Diretórios e Gerenciamento de Processos
Kernel Monolítico x Microkernel
Vantagens do MicroKernelInterface modular para cada serviçosimplicidade no adicionamento ou mudança de um serviço Flexibilidade
Vantagem do Kernel MonolíticoDesempenho
Classes de Aplicações Distribuídas
Aplicações Inerentemente Distribuídas
Aumento de Desempenho
Aplicações Tolerantes a Falha
Aplicações usando especialização funcional
Aplicações de Natureza Distribuída
sistemas para comunicação: correio eletrônico, teleconferência, www, etc;programas para manutenção da própria rede: algoritmos de roteamento, gerenciamento da rede, etc;sistemas operacionais distribuídos;ambientes de trabalho em grupo: desenvolvimento de software e de documentos;jogos...
Distribuição FuncionalDeterminadas máquinas podem ter configurações de hardware ou software mais apropriadas para execução de dadas tarefas:
sistemas de arquivos
processamento numérico
capacidade de memória
Requisitos para Suporte a Programação Distribuída
controle do uso de múltiplos processadores
cooperação entre os processadores (comunicação e sincronização)
potencial para detectar e recuperar uma falha parcial do Sistema
ProcessoPrograma em execuçãoConceito central de Sistemas OperacionaisPossui todas as informações necessárias para executar um programa:
um programa executávelseus dados seu contador de programasua pilha de execuçãoregistradoresetc.
ProcessoEm um Sistema de Tempo Comparilhado (Timesharing) periodimente o SO pára de executar um processo e começa a executar outro processo (realiza preempção)Todas as informações sobre cada processo são armazenadas na Tabela de Processos
ABCD
Tempo
Processos