View
1.525
Download
0
Category
Preview:
Citation preview
Introdução a
Sistemas Distribuídos
Disciplina: Sistemas Operacionais
Prof. Esp. Rodrigo Ronner
rodrigoronner@gmail.com
Referência Básica
• Sistemas Distribuídos: Conceitos e Projetos 4ª edição. G.
Coulouris, J. Dollimore, T. Kindberg. Addison-Wesley, Editora
Bookman. 2007.
• Sistemas Distribuídos: Princípios e Paradigmas - 2ª edição, A.
S. Tanenbaum. Prentice-Hall, 2007.
Definição de SD
a) "Um sistema distribuído é uma coleção de
computadores autônomos conectados por uma
rede e equipados com um sistema de software
distribuído." [C]
b) "Um sistema distribuído é uma coleção de
computadores independentes que aparenta ao
usuário ser um computador único." [T]
Outra definição de SD
a) "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]
Avanços tecnológicos
a) Invenção de redes de computadores de alta velocidade
(anos 70):
– Rede local (Local Area Network - LAN)
– Rede global (Wide Area Network - WAN)
b) Desenvolvimento de microprocessadores potentes (anos 80).
Estado da arte
a) É relativamente fácil agrupar um grande número de CPUs,
conectando-as por uma rede de alta velocidade (Relativo)
b) O software para sistemas distribuídos é completamente
diferente do software para sistemas centralizados e está
apenas começando a se desenvolver.
Exemplos de SD
a) Uma rede de estações de trabalho em uma universidade ou
companhia
b) Uma rede de computadores em uma fábrica
c) Um grande banco com muitas agências, cada qual com um
computadores e caixas automáticas
Exemplos de SD (continuação)
a) Sistema de reserva de passagens aéreas
b) Sistema de controle de estoque, vendas e entregas numa
cadeia de lojas
c) Serviços da Internet: Netnews, WWW
d) Sistemas de acesso a recursos de multimídia e de
conferência
Vantagens de SD sobre SC
a) Melhor relação custo/benefício
b) Capacidade de processamento além dos limites práticos de
SC (velocidade da luz, aquecimento)
c) Maior domínio de aplicações
d) Maior confiabilidade e disponibilidade
e) Crescimento gradativo da capacidade de processamento
Vantagens de SD sobre PCs
independentes
a) Compartilhamento de dados comuns entre usuários
b) Compartilhamento de recursos de hardware e software
c) Comunicação entre pessoas
d) Flexibilidade na distribuição de tarefas de acordo com as
aplicações
Desvantagens de SD
a) Falta de software adequado
b) Falhas e saturação da rede de comunicação podem eliminar
as vantagens de SD
c) Segurança pode ser comprometida: fácil acesso a dados e
recursos reservados
Hardware em SD
F r a c a m e n teA c o p la d o
F o r te m e n teA c o p la d o
S e q u e n t ,E n c o re
B a r ra m e n to
U l t r a c o m p u t e r ,R P 3
C h a v e a m e n to
M u l t ip ro c e s s a d o r e s( m e m ó r ia c o m p a r t i lh a d a )
E s t a ç õ e se m u m a L A N
B a r ra m e n to
H y p e rc u b e ,T r a n s p u t e r
C h a v e a m e n to
M u l t ic o m p u t a d o r e s( m e m ó r ia s s e p a ra d a s )
C o m p u t a d o r e s
d is t r ib u í d o s e p a r a le lo s
Software básico em SD
Acoplamentode hardware
Acoplamentode software
Sistemas operacionais de
rede
Fraco Fraco
Sistemas distribuídos
«autênticos»
Fraco Forte
Sistemas timesharing
para multiprocessadores
Forte Forte
Sistemas operacionais de rede
a) Estações de trabalho conectadas por uma LAN
b) Cada estação tem seu próprio sistema operacional
c) Ferramentas para login remoto e cópia de arquivos entre
estações
d) Servidores de arquivos e ferramentas para causar aparência
de arquivo local
Sistemas distribuídos autênticos
a) A rede toda tem aparência de ser um único sistema
timesharing: virtual uniprocessor, single-system image
b) Mecanismo global para comunicação entre processos
c) Gerenciamento de processos homogêneo
d) Sistema de arquivos homogêneo: NFS
Sistemas timesharing para
multiprocessadores
a) Fila única de processos prontos para execução: melhor
distribuição de carga
b) CPUs especializadas em: executar processos, controlar
periféricos, executar sistema operacional (gerenciar a
memória global)
c) Sistema de arquivos comporta-se de maneira semelhante a
um SC
Comparação de SW para SD
SO de rede SO
distribuído
SO para
multiproc.
Parece um SC Não Sim Sim
Mesmo SO Não Sim Sim
Cópias de SO N N 1
Comunicação Arquivoscompartilhados
Mensagens Memóriacompartilhada
Protocolos
comuns
Sim Sim Não
Fila única de
execução
Não Não Sim
Características básicas de SD
a) Compartilhamento de recursos
b) Extensibilidade (openness)
c) Concorrência
d) Escalabilidade (crescimento gradativo suave)
e) Tolerância a falhas
f) Transparência
Compartilhamento de recursos
a) Componentes de hardware: discos, impressoras, ...
b) Componentes de software: arquivos, bancos de dados, ...
c) Modelos básicos:
– Modelo cliente-servidor
– Modelo baseado em objetos
Extensibilidade
a) Extensões de hardware: periféricos, memória, interfaces de
comunicação, ...
b) Extensões de software: funções de SO, protocolos de
comunicação, ...
c) Interfaces chaves são públicas (system calls)
d) Mecanismo uniforme de comunicação entre processos
Concorrência
a) 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
b) Acesso concorrente a recursos compartilhados requer
sincronização
Escalabilidade
a) Quantidade de trabalho envolvido no processamento de
qualquer requisição de acesso a um recurso compartilhado
independe do tamanho da rede
b) Técnicas: replicação, caching, servidores múltiplos
Tolerância a falhas
a) Falhas de hardware e software (em CPUs e redes):
programas param ou produzem resultados errados
b) Abordagens:
– Redundância de hardware (Ex: banco de dados replicado em diversos
servidores)
– Recuperação por software: manter dados permanentes sempre consistentes
Transparência
a) Esconder do usuário e do programador de aplicações a
separação de componenentes em um sistema distribuído, tal
que este seja visto como um sistema centralizado
b) Formas de transparência: acesso, localização, concorrência,
replicação, falha, migração, desempenho e escala
Transparência de acesso
Operações de acesso a objetos de
informação são idênticas para objetos
locais e remotos
Exemplo:
Operação de envio de uma mensagem
eletrônica especificando o destinatário
através de seu endereço Internet
Transparência de localização
Acesso a um objeto ocorre sem que seja
necessário o conhecimento de sua
localização
Exemplo:
Operação de envio de uma mensagem
eletrônica especificando o destinatário
através de seu endereço Internet
Outras formas de transparência
a) Concorrência: processos operam concorrentemente usando objetos de
informação comuns sem interferência entre eles.
b) Replicação: 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.
c) Falha: mascaramento de falhas de hardware e software.
d) Migração: movimento de objetos de informação dentro do sistema não
afeta a operação de usuários e aplicações.
e) Desempenho: reconfiguração do sistema para melhorar desempenho
conforme a carga varia.
f) Escala: o sistema e as aplicações podem expandir em escala sem
requerer modificações na estrutura do sistema ou nos algoritmos das
aplicações.
Chamada de Procedimento Remoto
a) Decorrente da necessidade de obter transparência
de acesso em sistemas distribuídos (o que não
ocorre com o uso dos procedimentos send e
receive);
– Criação do RPC (Chamada de Procedimento Remoto) para que
um processo da máquina A chame um procedimento da máquina
B, sendo então o processo de A suspenso e o procedimento
executado em B, sendo que nenhum aspecto da troca de
mensagens é visível para o programador!
Objetivo: Tornar mais fácil a implementação de Aplicações Distribuídas
•
Chamada de Procedimento Remoto
a) Principais problemas:
– Chamador e procedimento executam em máquinas diferentes, executando em
espaços de endereço diferentes;
– Necessário passar parâmetros e resultados;
– Em caso de falhas, cada uma das possíveis falhas causa problemas diferentes.
Chamada de Procedimento Remoto
Chamada Remota de Procedimento (RPC) ou Chamada de
Função ou Chamada de Subrotina
• Método de transferência de controle de parte de um
processo para outra parte
• Procedimentos => permite a divisão do programas em
vários pedaços
O Conceito de Procedimentos
- Um programa convencional consiste de um ou mais procedimentos, geralmente organizados em uma hierarquia de chamadas.
- Uma seta de um procedimento n para um procedimento m significa uma chamada de n para m
RPC: Programa Distribuído
- A divisão ocorre entre o programa principal e o procedimento 4.
- Um protocolo de comunicação é necessário para implementar a chamada remota.
RPC: Modelo de Execução
a) O processo cliente fica bloqueado durante a
b) execução do procedimento remoto!
RPC
a) Objetivo: Tornar mais fácil a implementação de Aplicações Distribuídas
• Esconde o código de chamadas a rede em procedimentos chamados stubs
– Stubs -> procedimentos que contêm o código de chamadas a rede.
– Com stubs o RPC protege os programas de aplicação (cliente e
a) servidor) de preocupações com detalhes como sockets.
– O RPC inclui uma especificação para formato padrão dos dados (visando
interoperabilidade), e nos stubs acontece a conversão dos dados
• No RPC da Sun o padrão para a representação dos dados é o XDR (eXternal Data
Representation Standard)
– Os stubs são gerados automaticamente por algum compilador.
Exemplo: O RPCGen da Sun
Passos de uma Chamada Remota
de Procedimentos
Java RMI
• RMI consiste em chamada remota de procedimentos em
Java (onde as operações são representadas por métodos)
• Chamada Remota de Procedimento (RPC) ou Invocação
Remota de Método (RMI) ou Chamada Remota de Função
• Método de transferência de controle de parte de um processo
para outra parte
• Modelo de RPC é derivado da Chamada de Procedimentos
Convencionais
• Nome da API em Java para chamar métodos remotamente..
então RMI é o nome de uma API que faz RPC
• RMI é uma forma de fazer RPC
Java RMI
• Java Remote Method Invocation (RMI) é um protocolo
Java para comunicação entre processos
• Permite objetos Java invocar transparentemente métodos
de outros objetos (que podem estar em máquinas
diferentes – objetos remotos)
• Java RMI libera o programador de tratar de detalhes
como endereçamento e codificação/ decodificação de
mensagens
Recommended