Você está na página 1de 113

Sistemas Operacionais 2014

Sistemas Distribudos

Alexandre Augusto Giron

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

Ocultar diferenas na representao de dados e


no uso de um recurso

Localizao

Oculta o lugar onde o recurso se encontra

Migrao

Usurio no sabe se um recurso foi movido

Replicao

Oculta o fato de que um recurso replicado

Concorrncia

Oculta o compartilhamento do recurso entre


diversos usurios simultneos

Falha

Oculta ocorrncia e recuperao de falhas pelo


sistema

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

MISD: Multiple Instruction Single Data


MIMD: Multiple Instruction Multiple Data
Mquinas paralelas

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

Software para Sistemas


distribudos
Arquiteturas de software
Como estruturar a aplicao

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

Software para Sistemas


distribudos
Servios disponveis
Necessidade de um protocolo de
comunicao

Computadores distribudos
Diferentes plataformas!

Software para Sistemas


distribudos
Software para internet?
Qual arquitetura de software?
Como processos em diferentes
mquinas se comunicaro?
Protocolo
Define o formato de mensagens, formas de
comunicao
TCP
UDP

Software para Sistemas


distribudos
Software para internet?
Qual arquitetura de software?
Client-Server ou P2P?

Como processos em diferentes


mquinas se comunicaro?
Protocolo
Define o formato de mensagens, formas de
comunicao
TCP
UDP

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 mais usados


TCP
UDP

Diferem na operao e no modelo de


servio fornecido

Protocolos
TCP

Entrega garantida
Vrios servios utilizam esse protocolo

UDP

Mais simples, no garante entrega


Mais usado em aplicaes tolerantes
perda

Uma nova aplicao pode se utilizar de


servios j disponveis
Troca de arquivos via FTP
Emails: SMTP, POP3..

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

Escolher um endereo IP (de rede)


127.0.0.1: endereo local (localhost)

Cliente UDP (1)

Cliente UDP (2) Envio da


mensagem

Cliente UDP (3) - resposta

Servidor UDP (1)

Servidor UDP (2)


Aguardando mensagens
Estado de espera at receber
mensagem

Servidor UDP (3) Processa e


responde ao cliente

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

2. Repita o exerccio usando TCP


3. Faa uma aplicao (TCP ou UDP) que:
Cliente solicita um arquivo pelo nome;
Servidor envia o arquivo para o cliente
Considere tamanho mximo do arquivo
igual a 1024 bytes

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

Objetos serializados para o envio

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

Stub: representao local do objeto


remoto para o cliente

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!

RPC Server (adicao_server.c)

RPC Cliente (adicao_client)


Modifique a funo adicao_1

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

Permite um objeto Java chame


mtodo de outro objeto java

Java RMI: 3 camadas


Stubs e Skeletons interceptam as
chamadas de procedimento
Serializao de objetos

Referncia
remota:
Localizao
dos objetos

Fluxo de Implementao
1. Definio de uma interface

Conjunto de mtodos que podem ser


acessados remotamente
Interface deve estender classe Remote
(java.rmi.Remote)

2. Classes devem ser serializveis

Fluxo de bytes em um formato definido


Tipos predefinidos na linguagem
Permite que os objetos sejam passados como
parmetros

3. Gerao de Stubs e Skeletons

Pelo compilador com base nessa interface


rmic

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 - Consideraes


Note que o cliente um programa
Java simples
Mas deve conhecer a interface

Objetos so registrados para que os


mtodos sejam acessados
Naming.lookup()
Objeto local ou remoto

Java RMI
Mais detalhes:
Tutorial RMI da Oracle
http://docs.oracle.com/javase/tutorial/rmi/

Documentao da API Java

Exerccio
1. Faa uma modificao no cdigo
para seguinte situao:
Se o cliente enviar o comando exit:

Remover o registro no servidor (servidor


off-line)
Cliente deve encerrar a execuo

2. Uma aplicao onde:


Cliente envia dois nmeros
Servidor retorna a soma

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

No deve haver distino entre arquivos


remotos e locais

DFS Mapeamento de Nomes


Mapeamento de nomes

Usurio: nomes de arquivos


Sistema de Arquivos: blocos armazenados
no disco

Local

Endereo do dado no disco

Ex: nmero do cluster lgico -> cluster fsico

Remoto

Endereo inclui a mquina que contem o


arquivo/dado

Possibilidade: um conjunto de mquinas, cada


uma com parte do arquivo
(File Replication)

DFS Mapeamento de Nomes


Diferenas
Transparncia de Localizao
Nome do arquivo no revela localizao
fsica do arquivo
Maioria fornece esse esquema

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

Esquema de Nomes: Absoluto


Mais simples
Nome da mquina (host) + nome do
arquivo
host:local-name
URL da Internet tambm usa esse
mesmo esquema

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

Network File System


Estrutura

Network File System


Montagem remota

Esquema de Nomes:
Montagem
Consegue obter um nvel de
transparncia
Usurio utiliza o nome local
Sistema realiza o mapeamento pela
tabela

Porem necessita configurao prvia


Para as inicializaes

Esquema de Nomes: Global


Estrutura de nomes global
Vantagem: Todos possuem a mesma
estrutura de diretrios
Clientes obtm a estrutura do servidor

Dificuldades
Caractersticas especficas dos arquivos
Arquivos de dispositivos (Linux), Binrios
compilados para diferentes arquiteturas

Confiabilidade no servidor

Acesso aos arquivos


Acesso Remoto aos Arquivos
Como implementar?
RPC, RMI

Desempenho
Caches so frequentemente usadas
Obter blocos recentemente acessados na
cache
Podero ser acessadas novamente sem novo
acesso ao disco

Acesso aos arquivos


Modelos de cache
Escrita direta: write-through
Confiabilidade
Desempenho baixo nas escritas: cada
escrita deve esperar pela atualizao no
servidor

Escrita adiada (write-back)


Atualizao no servidor atrasada: maior
desempenho nas escritas
Confiabilidade menor: dados no
atualizados podem ser perdidos

Acesso aos arquivos


OpenAFS: variao
Write-on-close: parte das seguintes
premissas:
Arquivos abertos por pouco tempo so para
leitura no necessitam ser atualizados no servidor
constantemente
Arquivos abertos por mais tempo tm maior
chance de serem modificados: atualizao apenas
quando o arquivo for fechado

Estado nos servidores


Classificao
Servidores Stateful
Guardam estado de acordo com arquivos
abertos dos clientes
Identificador para os clientes
Ex: servidor pode retirar um arquivo aberto
aps um tempo de inatividade do cliente

Servidores Stateless
No guardam informao alguma sobre os
arquivos abertos por clientes
Mais simples

Estado nos servidores


Recuperao de falhas
Falhas no servidor no so notadas
pelos clientes

Falha
Em um servidor com estado
Deve recuperar o estado das conexes com
os clientes
Perda das informaes na memria

Servidor sem estado


Requisies tendem a ser maiores

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

Sistema Virtualizado vs NoVirtualizado

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

Alguns SOs tambm fornecem essas


funcionalidades
Classificados tambm como tipo 1
Windows Server com HyperV
KVM do Linux RedHat

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

Executar diferentes SOs concorrentemente

Proteo

Execuo isolada

Host protegido de modificaes em Guests

Problemas

Dificulta o compartilhamento de recursos; deve ser


explcito

Implementao de SO

Erros no kernel, complexidade do SO


dificultam o desenvolvimento de um SO
Mquina virtual fornece maior controle

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

Recursos de hardware compartilhados


CPU, memria e E/S fornecido como servio
para clientes

Dificuldades
Implementao de mquinas virtuais
complexa

Comunicao entre modo usurio e kernel


Desempenho

Gerncia de memria
Nested Page Tables

Requer um apoio de hardware

Atualmente processadores j fornecem


instrues especficas para virtualizao
Intel VT-x instructions
Tecnologia AMD-V

Operao em modo dual


Host e Guest

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

Cada Guest possui (virtualmente)


CPU, memria, disco, interfaces de
redes, etc
Ex: Um disco corresponde a um arquivo no
host

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

Tipo especial de virtualizao


Ambiente como um programa executvel no
host
Programas rodam sobre o ambiente:
independente de SO (desde que ele execute a
JVM)

JVM

Implementada em software sobre um host


Como parte de um navegador web
Implementada em hardware especfico
para programas Java

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

Leitura da parte IV (Sistemas


Distribudos)
Lista de exerccios (Sistemas
Distribudos e virtualizao)
Data da entrega (Lista de exerccios):
17/11/2014
Individual ou em dupla
Peso: 10

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.