O documento discute sistemas distribuídos, definindo-os como aqueles nos quais componentes de hardware e software em computadores interligados se comunicam através de mensagens. Apresenta exemplos de sistemas distribuídos como redes celulares e a internet. Também discute desafios como compartilhamento de recursos, concorrência, escalabilidade e tolerância a falhas em sistemas distribuídos.
3. "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
4. "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
5. "UM SISTEMA DISTRIBUÍDO É UMA COLEÇÃO DE
COMPUTADORES INDEPENDENTES QUE APARENTA
AO USUÁRIO SER UM COMPUTADOR ÚNICO."
Tanembaum
12. 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).
37. 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;
38. A rede toda tem aparência de ser um
único sistema timesharing: virtual
uniprocessor, single-system image
SISTEMAS DISTRIBUÍDOS
46. 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
48. 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
50. 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
52. 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
57. 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
61. 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
65. 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
67. 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
69. 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
71. 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
72. 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
73. 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
76. 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
77. 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