Sistemas Distribuídos e Paralelos
Prof. Adriano Teixeira de Souza
Poder de processamento das máquinas vem crescendo rapidamente
Grande parte das máquinas interligada por redes de computadores
Sistemas e aplicações estão cada vez mais complexos ◦ Funcionalidade, Interfaceamento gráfico,
Comunicação, ... ◦ Maior carga, Maior número de usuários, ... ◦ Exigências de otimizar tempo de resposta,
incrementar a confiabilidade ...
Prof. Adriano Teixeira de Souza
?
Consiste em executar simultaneamente várias partes de uma mesma aplicação
Tornou-se possível a partir do desenvolvimento de sistemas operacionais multi-tarefa, multi-thread e paralelos
Aplicações são executadas paralelamente: ◦ Em um mesmo processador ◦ Em uma máquina multiprocessada ◦ Em um grupo de máquinas interligadas que se ◦ comporta como uma só máquina
Prof. Adriano Teixeira de Souza
O que é?
◦ Consiste em executar aplicações cooperantes
em máquinas diferentes
◦ Tornou-se possível a partir da popularização
das redes de computadores
Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza
A Computação Distribuída fornece toda a infra-estrutura necessária para a construção e operação efetiva de aplicações distribuídas
Engloba todos os produtos necessários para permitir que essas aplicações sejam construídas e possam ser executadas em um ambiente de rede heterogêneo, ou em um ambiente centralizado
Prof. Adriano Teixeira de Souza
Acoplamento ◦ Sistemas paralelos são fortemente acoplados:
compartilham hardware ou se comunicam através de um barramento de alta velocidade
◦ Sistemas distribuídos são fracamente acoplados
Previsibilidade ◦ O comportamento de sistemas paralelos é mais
previsível
◦ sistemas distribuídos são mais imprevisíveis devido ao uso da rede e a falhas
Prof. Adriano Teixeira de Souza
Influência do Tempo ◦ Sistemas distribuídos são bastante influenciados
pelo tempo de comunicação pela rede ◦ não há uma referência de tempo global geral ◦ Em sistemas paralelos o tempo de troca de
mensagens pode ser desconsiderado
Controle ◦ em sistemas paralelos se tem o controle de todos
os recursos computacionais ◦ os sistemas distribuídos tendem a empregar
também recursos de terceiros
Prof. Adriano Teixeira de Souza
Um SD deve prover: ◦ sincronização de processos
◦ gerenciamento da comunicação interprocessos
◦ tratamento de deadlocks
◦ tratamento de outras situações não encontradas em
sistemas centralizados
Prof. Adriano Teixeira de Souza
Usam melhor o poder de processamento
Apresentam um melhor desempenho
Permitem compartilhar dados e recursos
Podem apresentar maior confiabilidade
Permitem reutilizar serviços já disponíveis
Atendem um maior número de usuários
Balanceamento de carga
Escalabilidade
Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza
Desenvolver, gerenciar e manter o sistema.
Controlar o acesso concorrente a dados e a
recursos compartilhados.
Evitar que falhas de máquinas ou da rede
comprometam o funcionamento do sistema.
Garantir a segurança do sistema e o sigilo
dos dados trocados entre máquinas
Lidar com a heterogeneidade do ambiente
...
Prof. Adriano Teixeira de Souza
SO de Rede ◦ Provê ambiente no qual os usuários estão cientes
da multiplicidade das máquinas, acessando-as
remotamente
◦ Login remoto
SSH
◦ Transferência remota de arquivos
FTP
◦ Obriga que usuário mude de paradigma
Conjunto de comandos específico no FTP
Conjunto de comandos adequado do comando remoto no
SSH
Prof. Adriano Teixeira de Souza
SO Distribuído
◦ Provê ambiente transparente, gerenciado pelo SO
◦ Migração de Dados
Duas abordagens
„FTP automático, com processamento local de uma cópia
completa
Andrew File System
Distribuir, manipulando pequenas porções
NFS da Sun
SMB da Microsoft
Prof. Adriano Teixeira de Souza
SO Distribuído ◦ Migração de Computação
RPC
Troca de Mensagens
◦ Migração de Processos
Balanceamento de Carga
Aumento na velocidade de execução -> minimizar turnaround time
Preferência de hardware
Preferência de software
Acesso a dados
Prof. Adriano Teixeira de Souza
Aplicações que são funcionalmente separadas em processos distintos rodando em computadores diferentes sobre uma rede
Os processos interoperam para resolver um problema computacional comum
Consistem de interface de usuário, dados do usuário e os processos em diferentes computadores
Prof. Adriano Teixeira de Souza
Hardware Hardware
Sistema Operacional Sistema Operacional
Aplicação
Middleware para Programação Distribuída
Aplicação
Serviço Aplicação
Máquina 1 Máquina N
Apliacação Serviço
Prof. Adriano Teixeira de Souza
Middleware é um software que permite elementos de aplicações interoperarem através de redes
Mesmo com as diferenças nos protocolos de comunicação, arquiteturas de sistemas, sistemas operacionais, bases de dados e outro serviços de aplicação
Prof. Adriano Teixeira de Souza
provê um modo para obter dados de um lugar (..) para outro lugar (..)
deve mascarar as diferenças existentes entre SOs, plataformas de Hardware e protocolos de rede
deve ocultar a complexidade do processo de transporte da rede, do desenvolvedor da aplicação
Prof. Adriano Teixeira de Souza
Fornecedores estão oferecendo serviços de sistemas distribuídos que têm interfaces de programação padronizadas e protocolos
tais serviços são chamados serviços de middleware, porque se situam “no meio”, num nível acima ao SO e ao software de rede e abaixo das aplicações específicas
Prof. Adriano Teixeira de Souza
Estratégias diferentes que permitem a
comunicação entre aplicações distribuídas
◦ Sockets
◦ RPC - Remote Procedure Call
◦ RMI (Remote Method Invocation)
◦ CORBA (Commom Object Request Broker Architecture)
◦ Web Services
Prof. Adriano Teixeira de Souza
Client-Server Model ◦ Modelo tradicional e dominante a partir dos
anos 80
◦ Enfoque na LAN
Web-Based Distributed Computing Model ◦ Enfoque na Internet
◦ Processos
◦ Threads
◦ Objetos Distribuídos
◦ Agentes
Prof. Adriano Teixeira de Souza
Web-based Client-Server Computing ◦ proxy computing
Dados e programa são mandados do cliente para o servidor processar
◦ code shipping O cliente faz uma requisição ao servidor que envia o
programa para ser executado com dados locais do cliente
Ex: Applets rodando no browser
◦ remote computing O cliente envia os dados para serem processados no
servidor
◦ agent-based computing three-tier model
Prof. Adriano Teixeira de Souza
Um SO multitarefa permite simular o paralelismo em um único processador, alternando a execução de processos
Um processador com núcleo múltiplo permite paralelismo real entre processos, executando múltiplas instruções por ciclo
Prof. Adriano Teixeira de Souza
Uma Placa-Mãe Multiprocessador permite que cada processador execute um processo
Prof. Adriano Teixeira de Souza
Tyan S2696
Prof. Adriano Teixeira de Souza
Cluster é o nome dado a um sistema montado com mais de um computador, cujo objetivo é fazer com que todo o processamento da aplicação seja distribuído aos computadores, mas de forma que pareça com que eles sejam um computador só.
Com isso, é possível realizar processamentos que até então somente computadores de alta performance seriam capazes de fazer.
Prof. Adriano Teixeira de Souza
Um Cluster é uma solução de baixo custo para processamento de alto desempenho
Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza
COULOURIS, George; DOLLIMORE, Jean, KINDBERG, Tim. “Distributed Systems:
Concepts and Design”. 3 ed. Addison
Wesley, 2001.
JIA, Weijia; ZHOU, Wanlei. “Distributed
Network Systems – from concepts to
implementations”. Boston: Springer, 2005.
SILBERSCHATZ, Abraham; GALVIN, Peter; GAGNE, Greg. “Sistemas Operacionais:
Conceitos e Aplicações”. Rio de Janeiro:
Campus, 2000.
Prof. Adriano Teixeira de Souza