Professional Documents
Culture Documents
Sistemas Distribudos
ROTEIRO
Conceitos
Hardware/Software para Sistemas
Distribudos
Estrutura de Rede
Objetos Distribudos
Sistemas de Arquivos Distribudos
Conceitos
O que um Sistema Distribudo?
Silberschatz: Coleo de processadores
fracamente acoplados e conectados por
uma rede de comunicao
Tanembaum: Um conjunto de
mquinas independentes que fornecem
uma viso de uma nica mquina para
os usurios
Conceitos
Principais Objetivos de um
Sistema Distribudo
Compartilhamento de Recursos
Ganho de desempenho
Confiabilidade
Comunicao
Transparncia
Escalabilidade
Compartilhamento de Recursos
Facilitar aos usurios e aplicaes
acesso aos recursos remotos
Exemplos de recursos
Impressoras, computadores,
armazenamento, dados, pginas Web,
arquivos
Ganho de desempenho
Tarefas distribudas e concorrentes
Exemplo prtico
Distribuio de carga entre servidores
Web
Se um servidor estiver sobrecarregado de
requisies, elas podem ser repassadas para
outros servidores atenderem
Confiabilidade
Garantir que haja o funcionamento
mesmo em casos de falhas parciais
Manuteno de servio
(Disponibilidade)
Se uma mquina pertencente ao sistema
distribudo parar,
As outras devem continuar operando de forma
independente
Redundncia
Replicar Hardware/Dados
Ex: Se um dispositivo falhar, o dispositivo
replicado assume
Comunicao
Sistema distribudo deve se
comunicar por uma rede
Processamento distribudo: troca de
mensagens
Vantagem: grandes distncias
Requisitos
Uma rede com alto desempenho
Transparncia
Um sistema distribudo deve ser
transparente
Ocultar detalhes da distribuio
Capacidade de se apresentar aos
usurios como se fosse um sistema
nico
Transparncia
Tipo
Descrio
Acesso
Localizao
Migrao
Replicao
Concorrncia
Falha
Escalabilidade
Facilidade para estender/aumentar
capacidades de um sistema
distribudo
Tamanho: fcil adicionar mais usurios
e recursos
Geogrfica: usurios e recursos podem
estar longe entre si
Administrativos: facilidade de gerenciar
Robustez
Um sistema distribudo pode sofrer
de vrios tipos de falhas
Para garantir que o sistema
robusto, ele deve fornecer
Deteco de Falhas
Reconfigurao (Recuperao)
Robustez
Deteco de Falhas
Difcil em hardware
Link de uma rede
Abordagem: Voc est online?, X: estou
online
Se no chegar nenhuma mensagem em um
perodo, assume-se que o link foi perdido
Recuperao
Quando o servio restaurado, ele deve
ser comunicado e disponibilizado
novamente para uso
HARDWARE/SOFTWARE
PARA SISTEMAS
DISTRIBUDOS
Hardware
Classificao:
Taxonomia de Flynn: Fluxo de dados
SISD: Single Instruction Single Data
SIMD: Single Instruction Multiple Data
Processamento multimdia
MIMD: MultiProcessadores
Simtricos: SMP
Memria compartilhada
MIMD: MultiComputador
Cada computador possui seus
recursos
CPU, memria, interface de rede
MIMD
Classificao de Tanembaum
Interface de Rede
Arquitetura em camadas
Arquitetura baseada em objetos
Caractersticas
Centralizadas, Descentralizadas ou
Hbridas
Arquitetura em camadas
Middleware
Camada para
ocultar diferenas de
SOs
Mesma
interface de
aplicao
Arquitetura baseada em
objetos
Objetos (componentes) conectados
por chamada de procedimento
remota
Arquiteturas Centralizadas
Arquitetura Cliente-Servidor
Clientes:
Requisitam servios
Servidor:
Fornecem os servios
Arquiteturas Descentralizadas
Arquitetura peer-to-peer (P2P)
Clientes podem fazer requisies e
tambm atuar como servidores
Peer-to-peer e Client-Server
Computadores distribudos
Diferentes plataformas!
Estrutura de Rede
Problema:
N processos comunicantes em
diferentes mquinas
Como se comunicar?
Socket
Nmero de porta
Endereo de rede
Estrutura de Rede
Socket
Estrutura de Rede
Nmeros de porta:
16 bits
Alguns nmeros
so usados por
padro
(http://www.iana.org/as
signments/servicenames-portnumbers/servicenames-portnumbers.xhtml)
Protocolo
Porta
FTP
20 e 21
SSH
22
Telnet
23
SMTP
25
DNS
53
Web
80
Pop3
110
IMAP
143
Protocolos de Transporte
Aplicaes requerem uma forma
padronizada de comunicao
Protocolo de transporte: formato, tipo e
fluxo das mensagens
Protocolos
TCP
Entrega garantida
Vrios servios utilizam esse protocolo
UDP
Java Socket
API Java permite trabalhar com
protocolo TCP ou UDP
Aplicao:
Cdigo da aplicao
Camada de middleware
Protocolo: TCP ou UDP
TCP Servidor
ServerSocket
UDP Servidor
DatagramSocket
Java Socket
API Java permite trabalhar com
protocolo TCP ou UDP
Aplicao:
Cdigo da aplicao
Camada
de middleware
Necessidade
do protocolo
paraTCP
implementao
do
Protocolo:
ou UDP
Sistema Distribudo!
TCP Servidor
ServerSocket
UDP Servidor
DatagramSocket
UDP
Caractersticas
Sem conexo
Mais simplificado
No h garantia de entrega da
mensagem
Experimento prtico:
Montar uma aplicao distribuda
Cliente UDP: Envia uma string
Servidor UDP: processa a string e devolve
ao cliente
Aplicao UDP
Parmetros necessrios:
Escolher um nmero de porta no usado
1 a 1024 reservado para protocolos
conhecidos
Cliente deve se comunicar ao servidor pela
porta especificada
Aplicao UDP
Para testar:
Execute o servidor e o cliente
Digite a mensagem no cliente
Visualize a resposta
Consideraes
O que acontece se executarmos dois
servidores sobre o mesmo nmero de
porta?
E se o cliente enviar para um nmero de
porta que no h nenhum processo
escutando?
Aplicao TCP
Mesma aplicao
Cliente envia uma string
Servidor processa e responde
Parmetros
Nmero de porta
Endereo IP
Caractersticas
H formao de conexo entre
cliente e servidor
Mais complexo
Entrega garantida pelo protocolo
Cliente TCP
Socket diferente
Orientao conexo
Servidor TCP
Exerccios
1. Faa uma aplicao UDP que
considere:
Envio de dois nmeros inteiros pelo cliente
Servidor realiza a soma dos nmeros
Servidor envia a resposta ao cliente
OBJETOS DISTRIBUDOS
Paradigma OO
Orientao a Objetos bastante
comum atualmente
Sistemas Distribudos + OO = Objetos
distribudos
Camada de Middleware
Necessria para tornar o objeto
independente de SO e hardware
Objetos Distribudos
Suporte de Middleware para Objetos
distribudos
Java RMI (Sun)
CORBA (OMG)
DCOM (Microsoft)
Evoluo
RPC
Remote Procedure Call (RPC)
Antes do paradigma OO
Procedimentos executados em
mquinas remotas
Ideia manter a forma das chamadas
iguais forma das chamadas de
procedimentos locais
RPC
Chamadas sncronas (geralmente)
Embora alguns sistemas permitem
chamadas assncronas
Comunicao
Transparente
Cdigo gerado pelo compilador (stub,
proxy...)
SUN/RPC
Rpcgen:
Programa para compilar e gerar stubs
(cliente e servidor) para uma aplicao
Definio da interface
Linguagem parecida com C
Fluxo de Implementao
1. Definio da Interface
2. Gerao dos stubs
RPC
Experimento prtico com linguagem
C
Aplicao que soma dois nmeros
Cliente: envia a mensagem
Servidor: recebe e processa
Interface: adicao.x
Interface: adicao.x
O nmero do programa deve ser
nico
RPCgen especifica intervalo para
uso:
0x20000000 -> 0x3fffffff
RPCgen
Verifique se o rpcbind est instalado
rpcinfo
apt-get install rpcbind
Gerar os stubs:
rpcgen N -a adicao.x
RPC
Arquivos gerados
adicao.h
adicao_client.c
adicao_server.c
Demais arquivos
Gerados pelo rpcgen
Alteraes na interface: nova gerao de
stubs!
Faa o teste:
make f Makefile.adicao
./adicao_server
./adicao_client localhost
RPC - Consideraes
Note a abstrao para os detalhes de
rede
Programador se preocupa mais com
detalhes da aplicao
Mais detalhes
Guia de programao com RPC:
http://docs.freebsd.org/44doc/psd/22.rpcge
n/paper.pdf
Exerccio
1. Faa uma aplicao com RPC onde:
Cliente: envia uma string
Servidor: altera a string para uppercase
e responde ao cliente
Cliente imprime a string alterada.
RMI
Remote Method Invocation (RMI)
Objetos podem invocar mtodos de
outros remotamente
Transparncia:
Chamada remota ao mtodo igual
chamada local
Protocolo de transferncia
implementado sobre o middleware
Java RMI
Multi-plataforma
J2SE (Java 2 Standard Edition) e J2EE
(Java 2 Enterprise Edition) com suporte
ao RMI
Referncia
remota:
Localizao
dos objetos
Fluxo de Implementao
1. Definio de uma interface
Exemplo prtico
Nossa aplicao consiste de
Um cliente: enviando uma string
Um servidor: processando e retornando
ao cliente
Registro
necessrio registrar a execuo do
servidor
Assim o cliente pode procurar o objeto
na rede
Interface RMI
Servidor (1)
Servidor (2)
Object Registry: servidor de nomes
que mapeia objetos para nomes
Invocaes apenas se objetos esto
registrados
Cliente (1)
Java RMI
Mais detalhes:
Tutorial RMI da Oracle
http://docs.oracle.com/javase/tutorial/rmi/
Exerccio
1. Faa uma modificao no cdigo
para seguinte situao:
Se o cliente enviar o comando exit:
SISTEMAS DE ARQUIVOS
DISTRIBUDOS
Sistemas de Arquivos
Distribudos
Aplicao importante e comum de
sistemas distribudos
Distributed File System (DFS)
Exemplos
Open AFS
NFS (Network File System)
Sistemas de Arquivos
Distribudos
Conceitos
Servio:
Entidade de software executando de forma
distribuda e fornecendo um tipo particular de
funcionalidades aos clientes
executado por meio da rede
Servidor:
Uma entre as mquinas que executam o servio
Cliente:
Processo que pode invocar um servio usando
um conjunto de operaes
DFS
Um DFS disperso
Clientes, servidores e dispositivos de
armazenamento
Localizados entre as mquinas de um
sistema distribudo
Vantagem
Autonomia e Multiplicidade dos clientes e
servidores
Requisito
Deve ser transparente ao usurio
Eficincia: tempo gasto para
realizar as operaes
DFS
Interface Cliente
Composta por um conjunto de
primitivas e operaes
Criar, apagar, escrever, ler
Local
Remoto
Independncia de Localizao
Nome do arquivo no necessita ser
modificado se a localizao fsica do arquivo
mudar de dispositivo de armazenamento
Nem todos fornecem esse esquema
Esquemas de Nomes
Absoluto
Montagem
Global
Desvantagens
No h transparncia de localizao
No h independncia de
localizao
Esquema de Nomes:
Montagem
Pontos de Montagem
NFS da Sun usa esse esquema
Meio de ligar diretrios remotos para
diretrios locais
Cada mquina tem nomes locais que
referenciam arquivos remotos
Mapeamento durante a inicializao
Automount
Permite que sejam criados pontos de montagem
por demanda
Tabela guarda informaes dos pontos de
montagem e os nomes
Esquema de Nomes:
Montagem
Consegue obter um nvel de
transparncia
Usurio utiliza o nome local
Sistema realiza o mapeamento pela
tabela
Dificuldades
Caractersticas especficas dos arquivos
Arquivos de dispositivos (Linux), Binrios
compilados para diferentes arquiteturas
Confiabilidade no servidor
Desempenho
Caches so frequentemente usadas
Obter blocos recentemente acessados na
cache
Podero ser acessadas novamente sem novo
acesso ao disco
Servidores Stateless
No guardam informao alguma sobre os
arquivos abertos por clientes
Mais simples
Falha
Em um servidor com estado
Deve recuperar o estado das conexes com
os clientes
Perda das informaes na memria
MQUINAS VIRTUAIS
INTRODUO
Conceitos
Objetivo principal de uma mquina virtual
Fornecer uma abstrao de um hardware para
diferentes ambientes de execuo
Componentes
Host: Sistema que hospeda mquinas virtuais
Virtual Machine Manager (VMM ou
Hypervisor)
Gerencia as mquinas virtuais
Fornece interface similar do host
Guest
Um sistema operacional executado no ambiente
virtualizado
Tipos de VMM
Tipo 0
Solues baseadas em hardware/firmware
Usadas em mainframes e servidores
Tipo 1
Software para fornecer virtualizao
Ex: VMWare ESX, Citrix XenServer
Tipos de VMM
Tipo 2:
VMM como uma aplicao comum
VMWare Workstation, Virtual Box
Executam sobre um SO
Fornecem funes para guests
Benefcios
Habilidade para fornecer diferentes
ambientes de execuo diferentes
Proteo
Execuo isolada
Problemas
Implementao de SO
Benefcios
Otimizao de recursos
Live migration: move um guest de um
host fsico para outro
Maior compartilhamento de recursos
Se um host estiver sobrecarregado, um
guest pode ser movido para outro
Dificuldades
Implementao de mquinas virtuais
complexa
Gerncia de memria
Nested Page Tables
Exemplo: VMWare
Exemplo: VMWare
Classificada como VMM do tipo 2
Executa como uma aplicao do host
Permite a execuo de um ou mais
guests de forma independente
VMM tipo 2
Normalmente possuem desempenho
pior que os de tipo 0 e 1
VMM um processo comum sendo
escalonado pelo host
Mas h vantagens
Versatilidade: pode-se testar um novo
SO sem abrir mo do existente
No necessitam de muitas modificaes
no host
Exemplo: JVM
Java Virtual Machine
Fornece um ambiente de
programao/execuo virtualizado
JVM
JVM
Paravirtualizao
Introduo de camadas para
abstrao de hardware
Pode diminuir desempenho
Conceito de Paravirtualizao
Exige mudana nos SOs
Fornecer acesso do VMM direto ao
hardware subjacente
Kernel do SO guest executa no VMM
Para casa
Bibliografia
1. SILBERSHATZ, A. et al. Operating
systems Concepts. John Wiley & Sons,
New York, 5 edio. 1997.
2. STALLINGS, W. Operating system
concepts. Prentice Hall, New Jersey, 3
edio, 1997.
3. TANENBAUM, A. et al. Operating
systems: design and implementation.
Prentice Hall, New Jersey, 1997.
4. TANENBAUM, A. et. al. Modern
Operating Systems. Prentice Hall,
New Jersey, 1992.