SISTEMAS DISTRIBUÍDOS
VICTOR HAZIN
O QUE É UM SISTEMA
DISTRIBUÍDO ?
"UM SISTEMA DISTRIBUÍDO É AQUELE NO QUAL OS
COMPONENTES DE HARDWARE OU SOFTWARE,
LOCALIZADOS EM COMPUTADORES INTERLIGADOS EM
REDE, COMUNICAM-SE E COORDENAM SUAS AÇÕES
APENAS ENVIANDO MENSAGENS ENTRE SI "
Colouris
"VOCÊ SABE QUE TEM UM SISTEMA DISTRIBUÍDO
QUANDO A FALHA DE UM COMPUTADOR DO QUAL
VOCÊ NUNCA OUVIU FALAR FAZ COM QUE VOCÊ
PARE COMPLETAMENTE DE TRABALHAR."
Leslie Lamport
"UM SISTEMA DISTRIBUÍDO É UMA COLEÇÃO DE
COMPUTADORES INDEPENDENTES QUE APARENTA
AO USUÁRIO SER UM COMPUTADOR ÚNICO."
Tanembaum
PORQUE
CONSTRUIR UM
SISTEMA
DISTRIBUÍDO
PESSOAS SÃO DISTRIBUÍDAS
INFORMAÇÕES SÃO DISTRIBUÍDAS
DESEJO DE COMUNICAR E COMPARTILHAR
INFORMAÇÕES E RECURSOS
RELAÇÃO CUSTO/BENEFÍCIO
MODULARIDADE
DESEJO DE COMUNICAR E COMPARTILHAR
INFORMAÇÕES E RECURSOS
EXPANSIBILIDADE
SISTEMAS DISTRIBUÍDOS SÃO CAPAZES DE
CRESCIMENTO INCREMENTAL
DISPONIBILIDADE
SISTEMAS DISTRIBUÍDOS TEM CAPACIDADE
DE REPLICAÇÃO E REDUNDÂNCIA
AVANÇOS TECNOLÓGICOS
▸ Invenção de redes de
computadores de alta velocidade
(anos 70):
▸ Rede local (Local Area
Network - LAN)
▸ Rede global (Wide Area
Network - WAN)
▸ Desenvolvimento de
microprocessadores potentes
(anos 80).
EXEMPLOS DE SISTEMAS
DISTRIBUÍDOS
UMA REDE DE TELEFONIA CELULAR.
UMA REDE DE COMPUTADORES EM
UMA FÁBRICA
SERVIÇOS DA INTERNET
NETFLIX
SPOTIFY
intranet
ISP
desktop computer:
backbone
satellite link
server:
☎
network link:
☎
☎
☎
SISTEMAS
DISTRIBUÍDOS
SISTEMAS
CENTRALIZADOS
X
MELHOR RELAÇÃO CUSTO/
BENEFÍCIO
AUMENTO DA CAPACIDADE DE
PROCESSAMENTO
MAIOR ATENÇÃO COM AS
APLICAÇÕES
DISPONIBILIDADE
CONFIABILIDADE
CRESCIMENTO GRADATIVO
ELASTICIDADE
SISTEMAS
DISTRIBUÍDOS
PC
X
COMPARTILHAMENTO
COMPARTILHAMENTO
DE DADOS
COMPARTILHAMENTO DE
RECURSOS DE SOFTWARE
COMPARTILHAMENTO DE
RECURSOS DE HARDWARE
FLEXIBILIDADE
MULTITAREFAS
DESVANTAGENS DE USAR SISTEMAS DISTRIBUÍDOS
‣ Falta de software adequado;
‣ Maior complexidade no
desenvolvimento;
‣ Falhas e saturação da rede;
‣ Redes carregadas;
‣ Segurança;
‣ Comprometimento de
dados trafegados;
A rede toda tem aparência de ser um
único sistema timesharing: virtual
uniprocessor, single-system image
SISTEMAS DISTRIBUÍDOS
Mecanismo global para
comunicação entre processos
SISTEMAS DISTRIBUÍDOS
Gerenciamento de processos
homogêneo
SISTEMAS DISTRIBUÍDOS
Sistema de arquivos homogêneo
SISTEMAS DISTRIBUÍDOS
QUAL A DIFERENÇA NA
IMPLEMENTAÇÃO DE
SOFTWARE PARA
SISTEMAS DISTRIBUÍDOS
COMPARTILHAMENTO DE
RECURSOS
COMPARTILHAMENTO DE RECURSOS
▸ Componentes de hardware:
discos, impressoras...
▸ Componentes de software:
arquivos, bancos de
dados...
▸ Modelos básicos:
▸ Modelo cliente-servidor
▸ Modelo baseado em
objetos
EXTENSIBILIDADE
EXTENSIBILIDADE
▸ Extensões de hardware: periféricos, memória, interfaces
de comunicação...
▸ Extensões de software: funções de SO, protocolos de
comunicação...
▸ Interfaces chaves são públicas (system calls)
▸ Mecanismo uniforme de comunicação entre processos
CONCORRÊNCIA
CONCORRÊNCIA
▸ Mais de um processo em
execução a cada instante:
▸ Atividades separadas de
usuários
▸ Independência de recursos
▸ Localização de processos
servidores em computadores
distintos
▸ Acesso concorrente a recursos
compartilhados requer
sincronização
ESCALABILIDADE
ESCALABILIDADE
▸ Quantidade de trabalho envolvido no processamento de
qualquer requisição de acesso a um recurso
compartilhado independe do tamanho da rede
▸ Técnicas: replicação, caching, servidores múltiplos
TOLERANCIA A FALHAS
TOLERÂNCIAAFALHAS
▸ Falhas de hardware e software
(em CPUs e redes): programas
param ou produzem resultados
errados
▸ Abordagens:
▸ Redundância de hardware (Ex:
banco de dados replicado em
diversos servidores)
▸ Recuperação por software:
manter dados permanentes
sempre consistentes
TRANSPARÊNCIA
OPERAÇÕES DE ACESSO A OBJETOS DE
INFORMAÇÃO SÃO IDÊNTICAS PARA OBJETOS
LOCAIS E REMOTOS
Transparência de acesso
ACESSO A UM OBJETO OCORRE SEM QUE SEJA
NECESSÁRIO O CONHECIMENTO DE SUA
LOCALIZAÇÃO
Transparência de localização
PROCESSOS OPERAM CONCORRENTEMENTE
USANDO OBJETOS DE INFORMAÇÃO COMUNS
SEM INTERFERÊNCIA ENTRE ELES.
Transparência de concorrência
VÁRIAS INSTÂNCIAS DE UM OBJETO DE
INFORMAÇÃO SÃO USADAS SEM REQUERER O
CONHECIMENTO DAS RÉPLICAS PELOS USUÁRIOS
E APLICAÇÕES.
Transparência de replicação
MASCARAMENTO DE FALHAS DE HARDWARE E
SOFTWARE.
Transparência de falha
MOVIMENTO DE OBJETOS DE INFORMAÇÃO
DENTRO DO SISTEMA NÃO AFETA A OPERAÇÃO
DE USUÁRIOS E APLICAÇÕES
Transparência de migração
RECONFIGURAÇÃO DO SISTEMA PARA
MELHORAR DESEMPENHO CONFORME A
CARGA.
Transparência de desempenho
O SISTEMA E AS APLICAÇÕES PODEM
EXPANDIR EM ESCALA SEM REQUERER
MODIFICAÇÕES NA ESTRUTURA DO SISTEMA
OU NOS ALGORITMOS DAS APLICAÇÕES.
Transparência de escala
WWW.SOCRATIVE.COM/APPS
ALGUMASCARACTERÍSTICAS
DOSSISTEMASDISTRIBUÍDOS
FLEXIBILIDADE
FLEXIBILIDADE
▸ Modelos de estrutura de SD:
▸ Núcleo monolítico: inclui gerenciamento de arquivos,
diretórios e processos
▸ Micro-núcleo:
▸ mecanismo para comunicação entre processos
▸ gerenciamento básico de memória
▸ gerenciamento de processos a baixo nível
▸ operações de entrada/saído a baixo nível
CONFIABILIDADE
CONFIABILIDADE
▸ Em teoria, como medir?
▸ Aspectos:
▸ disponibilidade: fração do tempo em que o sistema
pode ser usado
▸ exatidão: replicação versus consistência
▸ segurança: Como um servidor pode verificar a origem
de uma mensagem?
▸ tolerância a falhas: replicação versus desempenho
DESEMPENHO
DESEMPENHO
▸ Métodos de medição:
▸ tempo de resposta
▸ número de tarefas por hora
▸ taxa de utilização do sistema
▸ taxa de utilização da rede
▸ Fator crítico em SD: troca de mensagens
ELEMENTOSBÁSICOSDE
UMSISTEMADISTRIBUÍDO
SERVIÇODENOMES
▸ Nomes permitem que recursos
sejam compartilhados
▸ Nomes de recursos devem ser
independendentes de sua
localização
▸ O esquema de nomes deve
escalar bem
▸ Um sistema de interpretação de
nomes deve ser acessível por
programa
COMUNICAÇÃO
▸ O sucesso de um SD depende
muito do desempenho/
confiabilidade das técnicas de
comunicação usadas em sua
implementação
▸ Dilema: otimizar implementação
da comunicação e prover alto
nível do modelo de programação
dessa comunicação
ESTRUTURADESOFTWARE
▸ Extensibilidade requer
componentes de software com
interfaces bem definidas
▸ Um serviço é um gerenciador de
objetos de um certo tipo e sua
interface é um conjunto de
operações
▸ Novos serviços devem interoperar
com serviços existentes e não
duplicar suas funções
ALOCAÇÃODECARGADETRABALHO
▸ Otimização do uso de:
▸ Capacidade de
processamento
▸ Capacidade de comunicação
▸ Recursos da rede em geral
▸ Objetivo: bom desempenho
MANUTENÇÃODECONSISTÊNCIA
▸ Consistência de atualização:
atomicidade como meio de
atualização instantânea de muitos
elementos
▸ Consistência de replicação: cópias
de um mesmo recurso devem ser
“idênticas”
▸ Consistência de cache:
modificações em um cliente
devem ser propagadas ao
gerenciador e aos demais clientes
MANUTENÇÃODECONSISTÊNCIA
▸ Consistência de falha: deve-se
evitar falhas múltiplas (em
cascata); isolamento de falhas
▸ Consistência de relógio: relógios
físicos (sincronização aproximada)
e relógios lógicos (timestampings
em mensagens)
▸ Consistência de interface de
usuário: atrasos devido a
comunicação podem causar visão
inconsistente de aplicações
gráficas
78
REFERÊNCIAS
‣ TANENBAUM, Andrew S. Sistemas Distribuídos: Princípios
e Paradigmas. Prentice Hall, 2007. 
‣ COULOURIS, George; DOLLIMORE, Jean; KINDBERG, Tim.
Distributed systems: concepts and design. 4ª

Edição. Addison-Wesley, 2005.
SISTEMAS DISTRIBUÍDOS
VICTOR HAZIN

Introdução a Sistemas Distribuídos