Upload
internet
View
133
Download
0
Embed Size (px)
Citation preview
Sistemas Distribuídos, Programação Concorrente e Redes
de Computadores
SSC/ICMC/USPSSC/ICMC/USP
Grupo de Sistemas DistribuídosGrupo de Sistemas Distribuídos e e Programação Programação ConcorrenteConcorrente
Paulo Sérgio Lopes de SouzaPaulo Sérgio Lopes de Souza
Marcos José SantanaMarcos José Santana
Conteúdo
Sistemas Distribuídos Sistemas Distribuídos Programação ConcorrenteProgramação Concorrente Redes de ComputadoresRedes de Computadores DisciplinasDisciplinas Grupo de Sistemas Distribuídos e Grupo de Sistemas Distribuídos e
Programação Concorrente Programação Concorrente Comentários FinaisComentários Finais
Conteúdo
Sistemas DistribuídosSistemas Distribuídos Programação ConcorrenteProgramação Concorrente Redes de ComputadoresRedes de Computadores DisciplinasDisciplinas Grupo de Sistemas Distribuídos e Grupo de Sistemas Distribuídos e
Programação Concorrente Programação Concorrente Comentários FinaisComentários Finais
Sistemas Distribuídos
Sistemas Computacionais DistribuídosSistemas Computacionais Distribuídos
Lamport: Lamport:
““É um sistema que impede você de É um sistema que impede você de obter qualquer serviço quando uma obter qualquer serviço quando uma máquina que você nem imagina que máquina que você nem imagina que exista exista falhefalhe!”!”
Sistemas Distribuídos
Sistemas Computacionais DistribuídosSistemas Computacionais Distribuídos
Tanenbaum + van Renesse:Tanenbaum + van Renesse:
““Aparenta ser um sistema centralizado Aparenta ser um sistema centralizado mas na realidade o S.O. executa em mas na realidade o S.O. executa em múltiplos e independentes múltiplos e independentes processadores.”processadores.”
Sistemas Distribuídos
Sistemas Computacionais DistribuídosSistemas Computacionais Distribuídos
Tanenbaum + van Renesse:Tanenbaum + van Renesse:
““Aparenta ser um sistema centralizado mas na Aparenta ser um sistema centralizado mas na realidade o S.O. executa em múltiplos e realidade o S.O. executa em múltiplos e independentes processadores .”independentes processadores .”
Conceito Chave Conceito Chave TransparênciaTransparência o uso de o uso de múltiplos processadores deve ser invisível ao múltiplos processadores deve ser invisível ao usuário.usuário.
Sistemas Distribuídos
Evolução Histórica:Evolução Histórica:
5 Fases: décadas de 50, 60, 70, 80 e 90:5 Fases: décadas de 50, 60, 70, 80 e 90:
5050 uso exclusivo - monousuário - alto custo uso exclusivo - monousuário - alto custo
Sistemas Distribuídos
Evolução Histórica:Evolução Histórica: 5 Fases: décadas de 50, 60, 70, 80 e 90:5 Fases: décadas de 50, 60, 70, 80 e 90:
5050 uso exclusivo - monousuário - alto custo uso exclusivo - monousuário - alto custo
6060 processamento em lote (em batch) processamento em lote (em batch)
Evolução das memórias: espaço suficiente para acomodar o Evolução das memórias: espaço suficiente para acomodar o S.O. e programa de aplicação; S.O. e programa de aplicação;
Máxima utilização da máquinaMáxima utilização da máquina
Sistemas Distribuídos
Evolução Histórica:Evolução Histórica: 5 Fases: décadas de 50, 60, 70, 80 e 90:5 Fases: décadas de 50, 60, 70, 80 e 90:
5050 uso exclusivo - monousuário - alto custo uso exclusivo - monousuário - alto custo 6060 processamento em lote (em batch) processamento em lote (em batch)
7070 multiusuário-compartilhamento da máquina ( multiusuário-compartilhamento da máquina (time sharingtime sharing))
Ciclo de máquina se tornou mais barato (máquinas mais Ciclo de máquina se tornou mais barato (máquinas mais velozes / preço menor por ciclo).velozes / preço menor por ciclo).
Programadores tornaram-se mais produtivosProgramadores tornaram-se mais produtivos..
Sistemas Distribuídos
Evolução Histórica:Evolução Histórica: 5 Fases: décadas de 50, 60, 70, 80 e 90:5 Fases: décadas de 50, 60, 70, 80 e 90:
5050 uso exclusivo - monousuário - alto custo uso exclusivo - monousuário - alto custo 6060 processamento em lote (em batch) processamento em lote (em batch) 7070 multiusuário-compartilhamento da máquina ( multiusuário-compartilhamento da máquina (time sharingtime sharing)) 8080 computação pessoal e S.D. computação pessoal e S.D.
Tecnologia de VLSI e LAN tornaram as E.T. e os S.D. viáveis Tecnologia de VLSI e LAN tornaram as E.T. e os S.D. viáveis superando o T.S.superando o T.S.
Sistemas Distribuídos
Evolução Histórica:Evolução Histórica: 5 Fases: décadas de 50, 60, 70, 80 e 90:5 Fases: décadas de 50, 60, 70, 80 e 90:
5050 uso exclusivo - monousuário - alto custo uso exclusivo - monousuário - alto custo 6060 processamento em lote (em batch) processamento em lote (em batch) 7070 multiusuário-compartilhamento da máquina ( multiusuário-compartilhamento da máquina (time sharingtime sharing)) 8080 computação pessoal e S.D. computação pessoal e S.D.
9090 computação pessoal, S.D. e Internet computação pessoal, S.D. e Internet
sedimentação dos S.D;sedimentação dos S.D; proliferação acelerada da Internet;proliferação acelerada da Internet; computação paralela sobre plataformas distribuídas;computação paralela sobre plataformas distribuídas; integração de ambientes computacionais. integração de ambientes computacionais.
Sistemas Distribuídos
Evolução Histórica:Evolução Histórica: 5 Fases: décadas de 50, 60, 70, 80 e 90:5 Fases: décadas de 50, 60, 70, 80 e 90:
5050 uso exclusivo - monousuário - alto custo uso exclusivo - monousuário - alto custo 6060 processamento em lote (em batch) processamento em lote (em batch) 7070 multiusuário-compartilhamento da máquina ( multiusuário-compartilhamento da máquina (time sharingtime sharing)) 8080 computação pessoal e S.D. computação pessoal e S.D. 90 90 computação pessoal, S.D. e Internet computação pessoal, S.D. e Internet
2000 2000 globalização, computação ubíqua,... globalização, computação ubíqua,...
Sistemas distribuídos globais; Máquinas paralelas virtuais globais; Wireless e distribuição em tempo real do processamento.
Sistemas Distribuídos
Motivação: aplicações especiais: requerem alto grau de interação
com os usuários (aplicações gráficas);
Sistemas Distribuídos
Motivação: aplicações especiais: requerem alto grau de interação
com os usuários (aplicações gráficas); minicomputadores: passam a ser usados como
“máquina pessoal” (monousuário) primeiras E.T.;
Sistemas Distribuídos
Motivação: aplicações especiais: requerem alto grau de interação
com os usuários (aplicações gráficas); minicomputadores: passam a ser usados como
“máquina pessoal” (monousuário) primeiras E.T.; E.T. máquinas isoladas: perda de conectividade;
Sistemas Distribuídos
Motivação: aplicações especiais: requerem alto grau de interação
com os usuários (aplicações gráficas); minicomputadores: passam a ser usados como
“máquina pessoal” (monousuário) primeiras E.T.; E.T. máquinas isoladas: perda de conectividade; redes locais de computadores: retorno da
conectividade;
Sistemas Distribuídos
Motivação: aplicações especiais: requerem alto grau de interação
com os usuários (aplicações gráficas); minicomputadores: passam a ser usados como
“máquina pessoal” (monousuário) primeiras E.T.; E.T. máquinas isoladas: perda de conectividade; redes locais de computadores: retorno da
conectividade; servidores: algumas E.T. foram “transformadas” para
desempenhar tarefa específica;
Sistemas Distribuídos
Motivação: aplicações especiais: requerem alto grau de interação
com os usuários (aplicações gráficas); minicomputadores: passam a ser usados como
“máquina pessoal” (monousuário) primeiras E.T.; E.T. máquinas isoladas: perda de conectividade; redes locais de computadores: retorno da
conectividade; servidores: algumas E.T. foram “transformadas” para
desempenhar tarefa específica; custo: obter desempenho esperado de um único
“recurso” pode ser muito caro com a tecnologia disponível no momento;
Sistemas Distribuídos
Motivação: aplicações especiais: requerem alto grau de interação com os
usuários (aplicações gráficas); minicomputadores: passam a ser usados como “máquina
pessoal” (monousuário) primeiras E.T.; E.T. máquinas isoladas: perda de conectividade; redes locais de computadores: retorno da conectividade; servidores: algumas E.T. foram “transformadas” para
desempenhar tarefa específica; custo: obter desempenho esperado de um único “recurso”
pode ser muito caro com a tecnologia disponível no momento;;
desempenho: vários fatores a mais alteram o desempenho (cuidado!).
Sistemas Distribuídos
Modelos Arquiteturais:
Aspectos físicos Aspectos lógicos
Sistemas Distribuídos
Modelos Arquiteturais: Estações de Trabalho - Servidores
Cliente-servidorUsuário – estação de trabalhoServidores - serviços especializados
Sistemas Distribuídos
Modelos Arquiteturais:
Banco de ProcessadoresCliente-servidorUsuário – terminais Processadores formam um bancoLogin – associa processador a terminalServidores – serviços especiais
Conteúdo
Sistemas DistribuídosSistemas Distribuídos Programação ConcorrenteProgramação Concorrente Redes de ComputadoresRedes de Computadores DisciplinasDisciplinas Grupo de Sistemas Distribuídos e Grupo de Sistemas Distribuídos e
Programação ConcorrenteProgramação Concorrente Comentários FinaisComentários Finais
Conteúdo
Sistemas DistribuídosSistemas Distribuídos Programação ConcorrenteProgramação Concorrente Redes de ComputadoresRedes de Computadores DisciplinasDisciplinas Grupo de Sistemas Distribuídos e Grupo de Sistemas Distribuídos e
Programação ConcorrenteProgramação Concorrente Comentários FinaisComentários Finais
Programação Concorrente
Máquinas “von Neumann”Máquinas “von Neumann” Programação Seqüencial Programação Seqüencial Um processo por vez; Um processo por vez; Gargalo de von Neumann Gargalo de von Neumann Baixo desempenho; Baixo desempenho; Serialização de problemas paralelos.Serialização de problemas paralelos.
Solução: Computação ParalelaSolução: Computação Paralela Arquiteturas Paralelas:Arquiteturas Paralelas:
vários processadores/memórias trabalhando em uma vários processadores/memórias trabalhando em uma mesma aplicação;mesma aplicação;
Programação Concorrente:Programação Concorrente: inciar/finalizar, coordenar e comunicar inciar/finalizar, coordenar e comunicar
Diversas instruções executadas em paralelo para resolver Diversas instruções executadas em paralelo para resolver problemas complexos mais eficientemente;problemas complexos mais eficientemente;
Programação Concorrente
Execução Seqüencial:Execução Seqüencial: Várias instruções sendo executadas uma após a outra.Várias instruções sendo executadas uma após a outra.
Execução Concorrente:Execução Concorrente: Várias instruções sendo executadas concorrentemente;Várias instruções sendo executadas concorrentemente; Único processador: há um pseudo-paralelismo;Único processador: há um pseudo-paralelismo; Em arquiteturas paralelas (vários processadores) têm-se:.Em arquiteturas paralelas (vários processadores) têm-se:.
Execução Paralela:Execução Paralela: na computação paralela há vários processos executando em na computação paralela há vários processos executando em
diferentes processadores e trabalhando juntos em um único diferentes processadores e trabalhando juntos em um único problema;problema;
Programação Concorrente
Arquiteturas ParalelasArquiteturas Paralelas Objetivo principal:Objetivo principal:
Acelerar o processamentoAcelerar o processamento
Há diferentes soluções:Há diferentes soluções: Organizações de propósito geralOrganizações de propósito geral Organizações orientadas a aplicaçõesOrganizações orientadas a aplicações
Programação Concorrente
Classificação de FlynnClassificação de Flynn
Programação Concorrente
SISD – Single Instruction Single DataSISD – Single Instruction Single Data
Programação Concorrente
SIMD– Single Instruction Multiple DataSIMD– Single Instruction Multiple Data
Programação Concorrente
MISD– Multiple Instruction Single DataMISD– Multiple Instruction Single Data
Programação Concorrente
MIMD– Multiple Instruction Multiple DataMIMD– Multiple Instruction Multiple Data
Programação Concorrente
MIMD– Multiple Instruction Multiple DataMIMD– Multiple Instruction Multiple Data
Sistemas Computacionais Distribuídos:Sistemas Computacionais Distribuídos: MIMD – Memória DistribuídaMIMD – Memória Distribuída Arquitetura Paralela VirtualArquitetura Paralela Virtual
Computação Paralela VirtualComputação Paralela Virtual
Programação Concorrente
Arquitetura Paralela VirtualArquitetura Paralela Virtual
Elementos de processamento: estações de Elementos de processamento: estações de trabalho trabalho
Rede de interconexão: rede de computadoresRede de interconexão: rede de computadores Comunicação: troca de mensagensComunicação: troca de mensagens Desempenho: potencialmente inferiorDesempenho: potencialmente inferior
Programação Concorrente
Computação Paralela VirtualComputação Paralela Virtual
Implementada por softwareImplementada por software Uso do hardware instalado nos sistemas Uso do hardware instalado nos sistemas
computacionais distribuídoscomputacionais distribuídos Ambiente transparenteAmbiente transparente Pode ser utilizado sem alterar ambiente originalPode ser utilizado sem alterar ambiente original
Programação Concorrente
Software disponívelSoftware disponível
PVM (amplamente difundido desde os anos 80)PVM (amplamente difundido desde os anos 80) MPI (padrão definido nos anos 90)MPI (padrão definido nos anos 90) OpenMPOpenMP
Programação Concorrente
PVM – Parallel Virtual MachinePVM – Parallel Virtual Machine
Define uma máquina paralela virtualDefine uma máquina paralela virtual Disponível em C e FortranDisponível em C e Fortran Programação normal, sem modificaçõesProgramação normal, sem modificações Inclusão de chamadas a rotinas de comunicaçãoInclusão de chamadas a rotinas de comunicação
Programação Concorrente
PVM – Visão ArquiteturalPVM – Visão Arquitetural
Visão Uniforme Visão Uniforme de uma de uma
máquina virtualmáquina virtualparalelaparalela
hostshosts
Conteúdo
Sistemas DistribuídosSistemas Distribuídos Programação Concorrente Programação Concorrente Redes de ComputadoresRedes de Computadores DisciplinasDisciplinas Grupo de Sistemas Distribuídos e Grupo de Sistemas Distribuídos e
Programação ConcorrenteProgramação Concorrente Comentários FinaisComentários Finais
Conteúdo
Sistemas DistribuídosSistemas Distribuídos Programação Concorrente Programação Concorrente Redes de ComputadoresRedes de Computadores DisciplinasDisciplinas Grupo de Sistemas Distribuídos e Grupo de Sistemas Distribuídos e
Programação ConcorrenteProgramação Concorrente Comentários FinaisComentários Finais
Redes de Computadores
Objetivos:Objetivos: interligação de máquinas em diversas interligação de máquinas em diversas
localidades;localidades; compartilhamento de informações;compartilhamento de informações; correio eletrônico;correio eletrônico; aproveitamento de potência computacional;aproveitamento de potência computacional; etc.etc.
Redes de Computadores
Origem:Origem:
Década de 60: Década de 60: ligar computadores distribuídos ligar computadores distribuídos geograficamente para troca de dados;geograficamente para troca de dados;
conexão de terminais interativos a conexão de terminais interativos a computadores remotos;computadores remotos;
correio eletrônico;correio eletrônico; transmissão de arquivos;transmissão de arquivos; processamento em lote entre computadores.processamento em lote entre computadores.
Redes de Computadores
Tipos de Redes de Computadores:Tipos de Redes de Computadores:
WAN - Wide Area Network (Redes de Longa WAN - Wide Area Network (Redes de Longa Distância)Distância)
MAN - Metropolitan Area Network MAN - Metropolitan Area Network (Redes Intermediárias) (Redes Intermediárias)
LAN - Local Area Network (Redes LAN - Local Area Network (Redes Locais) Locais)
SAN - System Area Network (Redes de SAN - System Area Network (Redes de Sistemas)Sistemas)
Redes de Computadores
Meio Físico de Interconexão:Meio Físico de Interconexão:
Cabo CoaxialCabo Coaxial Par trançadoPar trançado Fibra ÓticaFibra Ótica Transmissão WirelessTransmissão Wireless etc.etc.
Redes de Computadores
Protocolos de ComunicaçãoProtocolos de Comunicação Regras de comunicação Regras de comunicação Viabilizam a comunicaçãoViabilizam a comunicação Uniformizam a troca de mensagensUniformizam a troca de mensagens Permitem criação de serviçosPermitem criação de serviços
Redes de Computadores
Exemplo de protocolo:Exemplo de protocolo: TCP/IPTCP/IP
Padrão amplamente utilizadoPadrão amplamente utilizadoOrigem na ARPANETOrigem na ARPANETProtocolo baseProtocolo base
da Internetda Internet
Redes de Computadores
Redes de Alta VelocidadeRedes de Alta Velocidade
Qualidade de Serviço (QoS)Qualidade de Serviço (QoS) Evolução das redes convencionaisEvolução das redes convencionais Fibras óticasFibras óticas Protocolos especiaisProtocolos especiais
Redes de Computadores
Redes modernasRedes modernas Integração de:Integração de:
DadosDadosVozVozImagensImagens
Redes de Computadores
Segurança:Segurança: InternaInterna
Proteção de dados Proteção de dados Acessos indevidosAcessos indevidos
ExternaExternaHackersHackers
Redes de Computadores
Base para Sistemas DistribuídosBase para Sistemas Distribuídos
Base para Arquiteturas Paralelas VirtuaisBase para Arquiteturas Paralelas Virtuais
Base para TelecomunicaçõesBase para Telecomunicações Sistemas telefônicos interconectados por redes de Sistemas telefônicos interconectados por redes de
computadorescomputadores
Conteúdo
Sistemas DistribuídosSistemas Distribuídos Programação Concorrente Programação Concorrente Redes de Computadores Redes de Computadores DisciplinasDisciplinas Grupo de Sistemas Distribuídos e Grupo de Sistemas Distribuídos e
Programação ConcorrenteProgramação Concorrente Comentários FinaisComentários Finais
Conteúdo
Sistemas DistribuídosSistemas Distribuídos Programação Concorrente Programação Concorrente Redes de Computadores Redes de Computadores DisciplinasDisciplinas Grupo de Sistemas Distribuídos e Grupo de Sistemas Distribuídos e
Programação ConcorrenteProgramação Concorrente Comentários FinaisComentários Finais
Disciplinas
ObrigatóriasObrigatórias SCE612 - Redes de Computadores (5o Per)SCE612 - Redes de Computadores (5o Per) SCE616 - Sistemas Computacionais Distribuídos (6o Per)SCE616 - Sistemas Computacionais Distribuídos (6o Per)
OptativasOptativas SCE704 - Programação Concorrente (7o Per)SCE704 - Programação Concorrente (7o Per) SCE706 - Computação Distribuída (8o Per)SCE706 - Computação Distribuída (8o Per) SCE708 - Sistemas Comp. de Tempo Real (8o Per)SCE708 - Sistemas Comp. de Tempo Real (8o Per) SCE709 - Sistemas Comp. Tolerantes Falhas (10o Per)SCE709 - Sistemas Comp. Tolerantes Falhas (10o Per)
Conteúdo
Sistemas DistribuídosSistemas Distribuídos Programação Concorrente Programação Concorrente Redes de Computadores Redes de Computadores Disciplinas Disciplinas Grupo de Sistemas Distribuídos e Grupo de Sistemas Distribuídos e
Programação ConcorrenteProgramação Concorrente Comentários FinaisComentários Finais
Conteúdo
Sistemas DistribuídosSistemas Distribuídos Programação Concorrente Programação Concorrente Redes de Computadores Redes de Computadores Disciplinas Disciplinas Grupo de Sistemas Distribuídos e Grupo de Sistemas Distribuídos e
Programação ConcorrenteProgramação Concorrente Comentários FinaisComentários Finais
Grupo de Sistemas Distribuídos e Programação Concorrente Integrantes:Integrantes:
Marcos José SantanaMarcos José Santana – – PhD Univ. Southampton PhD Univ. Southampton Regina Helena Carlucci SantanaRegina Helena Carlucci Santana – – PhD Univ. SouthamptonPhD Univ. Southampton Edson dos Santos Moreira – Edson dos Santos Moreira – PhD Univ. ManchesterPhD Univ. Manchester Onofre Trindade Jr. – Dr. IFSC-USP Onofre Trindade Jr. – Dr. IFSC-USP Eduardo Marques – Eduardo Marques – Dr. EPUSPDr. EPUSP Sarita Mazzini Bruschi – Sarita Mazzini Bruschi – Dr. ICMC-USPDr. ICMC-USP Francisco José Mônaco – Francisco José Mônaco – Dr. EESC-USPDr. EESC-USP Jorge Luis e Silva – Dr. EPUSPJorge Luis e Silva – Dr. EPUSP Paulo Sérgio Lopes de Souza – Dr. IFSC-USPPaulo Sérgio Lopes de Souza – Dr. IFSC-USP Denis Fernando Wolf - PhD Univ. CaliforniaDenis Fernando Wolf - PhD Univ. California Kalinka Regina L. J. Castelo BrancoKalinka Regina L. J. Castelo BrancoDr. - ICMC-USPDr. - ICMC-USP
Grupo de Sistemas Distribuídos e Programação Concorrente Áreas de Pesquisas:Áreas de Pesquisas:
Sistemas DistribuídosSistemas Distribuídos Programação ConcorrenteProgramação Concorrente Redes de ComputadoresRedes de Computadores Avaliação de DesempenhoAvaliação de Desempenho Simulação de SistemasSimulação de Sistemas Hardware ReconfigurávelHardware Reconfigurável
Grupo de Sistemas Distribuídos e Programação Concorrente Pesquisas EnvolvendoPesquisas Envolvendo
Iniciação CientíficaIniciação Científica MestradoMestrado DoutoradoDoutorado
Conteúdo
Sistemas DistribuídosSistemas Distribuídos Programação Concorrente Programação Concorrente Redes de Computadores Redes de Computadores Disciplinas Disciplinas Grupo de Sistemas Distribuídos e Grupo de Sistemas Distribuídos e
Programação ConcorrenteProgramação Concorrente Comentários FinaisComentários Finais
Conteúdo
Sistemas DistribuídosSistemas Distribuídos Programação Concorrente Programação Concorrente Redes de Computadores Redes de Computadores Disciplinas Disciplinas Grupo de Sistemas Distribuídos e Grupo de Sistemas Distribuídos e
Programação ConcorrenteProgramação Concorrente Comentários FinaisComentários Finais
Comentários Finais
Sistemas Distribuídos + Programação Sistemas Distribuídos + Programação Concorrente + Redes de ComputadoresConcorrente + Redes de Computadores
Base importante na formação do Engenheiro de Base importante na formação do Engenheiro de ComputaçãoComputação
Aplicação em, basicamente, todas as demais Aplicação em, basicamente, todas as demais disciplinas avançadas;disciplinas avançadas;
Influenciam diretamente a vida do profissional em Influenciam diretamente a vida do profissional em ComputaçãoComputação