37
Introdução a Sistemas Distribuídos Disciplina: Sistemas Operacionais Prof. Esp. Rodrigo Ronner [email protected]

Introdução à sistemas distribuídos

Embed Size (px)

Citation preview

Page 1: Introdução à sistemas distribuídos

Introdução a

Sistemas Distribuídos

Disciplina: Sistemas Operacionais

Prof. Esp. Rodrigo Ronner

[email protected]

Page 2: Introdução à sistemas distribuídos

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.

Page 3: Introdução à sistemas distribuídos

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]

Page 4: Introdução à sistemas distribuídos

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]

Page 5: Introdução à sistemas distribuídos

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).

Page 6: Introdução à sistemas distribuídos

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.

Page 7: Introdução à sistemas distribuídos

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

Page 8: Introdução à sistemas distribuídos

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

Page 9: Introdução à sistemas distribuídos

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

Page 10: Introdução à sistemas distribuídos

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

Page 11: Introdução à sistemas distribuídos

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

Page 12: Introdução à sistemas distribuídos

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

Page 13: Introdução à sistemas distribuídos

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

Page 14: Introdução à sistemas distribuídos

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

Page 15: Introdução à sistemas distribuídos

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

Page 16: Introdução à sistemas distribuídos

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

Page 17: Introdução à sistemas distribuídos

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

Page 18: Introdução à sistemas distribuídos

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

Page 19: Introdução à sistemas distribuídos

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

Page 20: Introdução à sistemas distribuídos

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

Page 21: Introdução à sistemas distribuídos

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

Page 22: Introdução à sistemas distribuídos

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

Page 23: Introdução à sistemas distribuídos

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

Page 24: Introdução à sistemas distribuídos

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

Page 25: Introdução à sistemas distribuídos

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

Page 26: Introdução à sistemas distribuídos

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

Page 27: Introdução à sistemas distribuídos

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.

Page 28: Introdução à sistemas distribuídos

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

Page 29: Introdução à sistemas distribuídos

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.

Page 30: Introdução à sistemas distribuídos

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

Page 31: Introdução à sistemas distribuídos

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

Page 32: Introdução à sistemas distribuídos

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.

Page 33: Introdução à sistemas distribuídos

RPC: Modelo de Execução

a) O processo cliente fica bloqueado durante a

b) execução do procedimento remoto!

Page 34: Introdução à sistemas distribuídos

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

Page 35: Introdução à sistemas distribuídos

Passos de uma Chamada Remota

de Procedimentos

Page 36: Introdução à sistemas distribuídos

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

Page 37: Introdução à sistemas distribuídos

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