Introdução à sistemas distribuídos

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