You are on page 1of 71

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Prof. Maringela Loureiro Silva

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

CONTEUDO PROGRAMATICO
I - Introduo a Sistema Distribudo (S.D)
I.1 - Objetivos;
I.2 - Evoluo;
I.3 - Conceitos de hardware;
I.4 - Conceitos de software;
I.5 Ambiente de computao distribuda
II - Sistemas Distribudos
II.1 Modelos distribudos;
II.2 Comunicao em S.D.;
II.3 Sincronizao e processos em S.D.;
III - Sistemas de arquivos distribudos
III.1 Projeto de sistemas de arquivos distribudos (S.A.D);
III.2 Implementao de S.A.D.;
III.3 Gerenciamento de dados distribudos;
Livros textos:
1 Sistemas Operacionais Modernos Tanenbaum
2 Client / Server Architecture Alex Berson Editora Mac Graw Hill
3 Operating System Concepts Silberschatz Galvin Addison Weslez

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

INTRODUO
Sistema Operacional. Serve como intermedirio entre o hardware e aplicativos.
Exemplos de aplicativos compiladores, editores de texto, banco de dados.
Um Sistema Operacional Pode ser visto como:
a) Alocador de recursos Tais como CPU, memria, disco, E/S.Gerncia estes
recursos e os aloca para os programas.
b) Programa de controle Controla a execuo dos programas.
1 - Sistema Operacional de 1a gerao:
-

programador operava o computador atravs do console (chaves, botes, luzes, etc.).


Mais tarde apareceram dispositivos de E/S tais como: leitoras de cartes, impressoras,
fitas magnticas e softwares tais como: assemblers, loaders, linkers.

2 - Sistema Operacional em Batch:


- CPU ficava ociosa enquanto programador operava console. Para resolver tal problema
foram usados:
a) Computador operado por profissionais ;
b) programa monitor residente que executava o sequenciamento de tarefas;
c) melhorar a velocidade dos dispositivos de sada;
d) troca dos dispositivos de E/S sequenciais pelo disco cujo acesso randmico.
Processamento spooling utiliza o disco como buffer para ler de dispositivos de
entrada e para guardar arquivos de sada at que os dispositivos de sada
estejam prontos .

3 - Sistema Operacional em Batch multiprogramado:


-

a estrutura em disco pool de tarefas, permite que o sistema operacional selecione qual
tarefa vai ser a proxima a ser executada mais importante caracterstica o
escalonamento de tarefas aumento da utilizao da CPU.
Caractersticas:
a)
Escalonamento de tarefas para decidir e escolher entre vrias tarefas do
disco, qual ser trazida p/ memria.
b)
Gerenciamento de memria necessrio porque existem vrios programas
na memria ao mesmo tempo.
c)
Escalonamento de C.P.U. para decidir e escolher entre vrias tarefas
prontas que esto na memria qual tarefa ocupar a C.P.U.

Sistemas Operacionais Sistemas Distribudos

Entrada

Memria

CPU

Programa 1

Programa 1

Programa n

S.O.

Memria

Prof. Maringela Loureiro Silva

Prog

Monoprogramao

C.P.U 1

Programa 1
................
Programa n

Multiprogramao

S.O .

Memria

C.P.U 1

Programa 1
Programa 2

..................

C.P.U 2

Programa n

Multiprocessamento
a multiprogramao
em vrias C.P.U.s

S.O.

4 - Sistemas Time-sharing ou Multitarefas


-

extenso lgica de multiprogramao


chaveamento freqente entre tarefas, de tal forma que o usurio no perceba
cada tarefa recebe uma pequena poro do tempo da C.P.U.
permite que vrios usurios compartilhem o computador simultneamente.
O usurio tem impresso que o computador executa seu aplicativo exclusivamente.
Caractersticas:
a)
b)

Gerenciamento de memria e proteo porque vrias tarefas podem estar


na memria simultneamente.
Memria Virtual porque uma tarefa pode no estar completamente na
memria e sim no disco.

Sistemas Operacionais Sistemas Distribudos


c)
d)
e)
f)

Prof. Maringela Loureiro Silva

Gerenciamento de disco
Escalonamento de C.P.U. - execuo concorrente
Sincronizao e comunicao de tarefas para garantir a execuo
ordenada das tarefas.
Preveno de diadlock

5 - Computadores Pessoais :
S.O. no multiusurio e nem multitarefa
Ex.: MS-DOS e Apple Macintosh
OS/2 S.O. multitarefa da IBM
Windows 3.11 no S.O. um sistema de janelas do MS-DOS
Windows 95 S.O. da Microsoft que multitarefa
Windows NT S.O. da Microsoft que permite multiprocessamento

6 - Sistemas Paralelo :
- Possuem mais de um processador
- Processadores se comunicam intensamente, dividem o bus, relgio, memria e
dispositivos
- Fortemente acoplados

a) Vantagens:
- Aumento processadores menor tempo de execuo
- Aumento de segurana funes podem ser distribudas pelos processadores
falha de um processador no para o sistema, s degenera.
b) Desvantagens:
- Algoritmos paralelos so complicados
- Software para implementar sistemas paralelos so primitivos
- Hardware caro

7 - Sistemas Distribudos
-

Mais de um processador
No dividem memria, nem relgio
Processadores se comunicam via linhas de comunicaes tais como: buses de alta
velocidade ou linha telefnica.

Sistemas Operacionais Sistemas Distribudos


-

Prof. Maringela Loureiro Silva

Processadores variados so referenciados como: ns sites, computadores.

a) Vantagens:
- Compartilhamento de recursos
- Aumento da velocidade de computao atravs da distribuio de tarefas.
- Segurana se um computador falha o resto do sistema opera normalmente. Se
existe redundncia o sistema continua a operar mesmo com falha de um dos
componentes
- Comunicao usurios se comunicam entre si e podem dividir arquivos, trocar
mensagens, etc.

8 - Sistemas de Tempo Real


- Quando existem requisitos de tempo rgidos na operao de um processador ou do
fluxo de dados.
- Pode ser distribudo ou centralizado
- Exemplos so: controle industrial, controle de armas, controle de sensores, etc.
- Processamento deve executar dentro de limites de tempo bem definidos seno o
sistema falha.
- S funciona corretamente se retorna resultado dentro do limite do tempo estabelecido

9 - Vantagens dos Sistemas Distribudos em relao aos Sistemas Centralizados


- Economia
- Velocidade poder computacional
- Distribuio inerente
- Confiabilidade
- Crescimento incremental
10 - Vantagens dos Sistemas Distribudos em relao aos PCs independentes
- Compartilhamento de dados.
- Compartilhamento de dispositivos.
- Comunicao
- Flexibilidade aplicaes podem ser executadas em outras mquinas.

11 - Desvantagens dos Sistemas Distribudos em relao aos Sistemas Centralizados


-

Software complexos
Rede de comunicao pode saturar ou falhar
Segurana facilidade de acesso a dados secretos

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

EVOLUO DO PROCESSAMENTO
1) PROCESSAMENTO BASEADO EM HOST
um tipo de processamento totalmente no distribudo, onde a aplicao executada
num host que est ligado a terminais burros.

host
CPU

dados

Host centralizado

2) PROCESSAMENTO MESTRE ESCRAVO


um tipo de processamento distribudo, onde existem computadores escravos
ligados a um computador mestre. Todo o processamento distribudo mas
unidirecional e controlado pelo mestre. Os computadores escravos executam
processamento local limitado, tal como: validao de campo na tela, edio.
Um exemplo de um ambiente mestre-escravo um mainframe usando terminais
inteligentes.
O Processamento da aplicao fica no mestre e as aplicaes de E/s so feitas pelos
escravos e os resultados enviados ao mestre que controla o trmino da aplicao como
um todo.

Slave
CPU

HOST
CPU

dados

Slave
CPU

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

3) PROCESSAMENTO DE COMPARTILHAMENTO DE RECURSOS


PCs so ligados ao sistema atravs de uma LAN para permitir compartilhamento de
recursos comuns tais como: arquivos em disco, impressora, scanner, etc. Estes
recursos compartilhados so denominados SERVIDORES.
Estes servidores podem ser dos seguintes tipos:
Servidor de arquivos permite compartilhamento de arquivos
Servidor de impresso permite compartilhamento de impresso
O Processamento da aplicao executado nos clientes e somente funes de E/S
so distribudas.
Exemplos de LANs que so dedicadas a este tipo de processamento: Novells
Netware e Microsofts LAN Manager.
Cliente

Cliente

Aplicao

LAN

Aplicao

dados
Servidor

3) PROCESSAMENTO CLIENTE SERVIDOR


Extenso do processamento de compartilhamento de arquivos. Com o aumento do
nmero de workstations suportados e da capacidade e poder destas mquinas, o
processamento foi dividido entre cliente e servidor, mas no no modo mestreescravo.
Exemplos de ambientes deste tipo de processamento: servidor de banco de dados
como Sybase ou Microsoft SQL Server.

cliente
Aplicao

cliente
LAN

dado
s
Servidor de recursos
8

Aplicao

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Uma vantagem do enfoque cliente/servidor pode ser ilustrado pela comparao de um


servidor de arquivos e um servidor de banco de dados.

CLIENTE

SERVIDOR DE ARQUIVO
Pede 1 arquivo

Procura
Registros
Desejados

Busca o arquivo
pedido

Envia 1 arquivo inteiro


Obs.: cliente perde tempo processando o
arquivo inteiro. Comunicao desnecessria
por estar enviando mais informaes que
desejadas

CLIENTE

Obs.: servidor perde


tempo processando o
envio do arquivo
inteiro

SERVIDOR DE BANCO

DE DADOS
Pede registro

Envia registro

3.1)

REQUERIMENTOS DO PROCESSAMENTO CLIENTE SERVIDOR


a)
b)
c)
d)

3.2)

Processa o arquivo
localmente

Comunicaes robustas e confiveis entre cliente e servidor


Distribuio do processamento da aplicao entre um cliente e seu servidor
Controle do servidor sobre que servios ou dados os clientes podem requisitar
Arbitragem, baseada no servidor, dos pedidos conflitantes dos clientes
VANTAGENS DO PROCESSAMENTO CLIENTE SERVIDOR

a) Permite uso de workstation que so mais baratas do que mainframe


b) Permite que o processamento resida perto da fonte de dados sendo processados.
Cliente/ servidor uma forma especial de processamento cooperativo-distribudo.
Trfego na rede pode ser grandemente reduzido
c) Facilita o uso de interface homem maquina mais elaborados

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

d) Permite o uso de plataformas de hardware e software diferentes entre clientes e


servidores liberando os usurios de arquiteturas proprietrias.
DESVANTAGENS DO PROCESSAMENTO CLIENTE SERVIDOR

3.3)
a)

Poro significante da lgica da aplicao movida para um servidor, que pode


se tornar um gargalo do sistema do mesmo jeito que um mainframe o gargalo
numa arquitetura mestre-escravo;
b) Desenvolvimento de aplicaes distribudas complexo
c) Depurao e manuteno de aplicaes distribudas so complexas
3.4) EXEMPLOS DE PROCESSAMENTO CLIENTE SERVIDOR
cliente

cliente

aplicao

aplicao

Servidor Novell
aplicao
IPX/SPX

SO

SO

SO Novell
Novell

IPX/SPX - protocolo Novell

Sistema operacional. do servidor Novell, e o Sistema Operacional do cliente pode ser


qualquer um
cliente

cliente

cliente

cliente

aplicao

aplicao

aplicao

aplicao

SO

SO

SO

SO

Microsoft LAN manager

10

Sistemas Operacionais Sistemas Distribudos


-

Prof. Maringela Loureiro Silva

Windows workgroup e windows 95 : no h servidor, so mono-usurios e


multitarefas sem segurana

Aplicao

Aplicao

Windows NT

S.O.

Windows NT Server

CPU 1.

CPU n.

TCP/IP ou Microsoft com protocolo NETBEUI


Windows NT
multi-usurio , multitarefa
Windows NT Server
multiprocessamento, tem vrias CPUs internas, projetado
p/executar banco de dados cliente-servidor tais como SQL Server, Sybase, Informix,
Oracle.
3.5) EXEMPLO DE BANCO DE DADOS CLIENTE SERVIDOR
Cliente solicita dados comandos
Servidor

cliente

dados
Servidor processa dados respostas
comandos

3.6) EXEMPLO DE SERVIDOR DE ARQUIVOS


cliente

cliente

cliente

L arquivos
Grava arquivos

Banco dados

Todo processamento feito no cliente que executa lock p/acessar arquivo e um unlock
p/liber-lo.
Ex.: Access em rede ou Q&A no so servidores de banco de dados

11

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

4) PROCESSAMENTO PEER TO - PEER


-

Todos os participantes do sistema so iguais e podem requisitar e fornecer servios


entre si
Processamento distribudo de fato porque o processamento executado onde os
recursos computacionais esto disponveis, incluindo CPU e memria.
Possibilita o uso de banco de dados em rede, onde os usurios DBMS estaro aptos
para movimentar-se entre mltiplos bancos de dados heterogneos, assim este seria
um sistema distribudo real.

dados

dados

aplicao

aplicao

aplicao

dados

aplicao

dados

12

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Conceitos de Hardware
Taxonomia de Flynn`s para Sistemas distribudos com vrias CPU`S
a) SISD nica instruo e nico dado 1 CPU dos PCs aos mainframes.
b) SIMD nica instruo e mltiplos dados array de processadores, onde todos
executam a mesma instruo mas cada um tem seu dado particular.
c) MISD mltiplas instrues com um nico dado no existem computadores para
este modelo
d) MIMD mltiplas instrues com mltiplos dados grupo de computadores
independentes.
Os computadores MIMD podem ser divididos em dois grupos:
Multiprocessadores com memria compartilhada
Multicomputadores sem memria compartilhada
Conforme a arquitetura da rede de interconexo podemos dividir os computadores em
duas categorias:
Bus rede nica, bus, cabo ou outro meio que conecta todas as mquinas. TV
a cabo usa um esquema como este;
chaveado no existe um simples backbone, em vez disto existem vrios cabos
entre mquinas com vrios padres. Mensagens movem entre os fios
com uma deciso de chaveamento explcito.
O sistema de telefonia organizado desta forma.

MIMD
Memria
compartilhada

Memria
privada

Multiprocessadores

bus
Sequent
Encore

Multicomputadores

chaveado

bus
Workstations
em bus

RP3

13

chaveado
Hipercubo /
Transputer

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

A figura abaixo exemplifica um Multicomputador em bus

bus
A figura abaixo exemplifica um Multicomputador chaveado

chaveamento
chaveamento

1) Multiprocessadores baseados em bus


Consiste de vrias CPU`S todas conectadas a um bus comum com uma nica
memria.
Uma configurao simples tem um backplane ou placa me de alta velocidade onde
CPU e memria podem ser inseridos.
Um bus tpico tem: 32 linhas de endereo, 32 linhas de dados e 20 a 30 endereos de
controle todas operando em paralelo.
LAN com alta velocidade 300 Mbps

CPU

Memria

CPU

bus
Memria cache

14

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Exemplo de leitura:
a) CPU coloca endereo da palavra da memria na linha de endereo
b) CPU coloca um sinal de leitura na linha de controle
c) Memria responde colocando o valor da palavra nas linhas de dados para a CPU
solicitante
Como s existe 1 memria, se a CPU A escreve uma palavra na memria e a CPU B l a
palavra microsegundos mais tarde, B ir obter o valor escrito por ltimo. Uma memria
que tem esta propriedade dita coerente.
Quando o sistema composto de mais de 4 CPUs o bus fica sobrecarregado e o
desempenho cai drasticamente. Para resolver este problema, foi colocada uma memria
de alta velocidade denominada memria cache entre a CPU e o bus.
A cache guarda as palavras mais recentemente acessadas e todos os pedidos de memria
fluem via a cache.
Se a palavra requisitada est na cache, ela responde CPU e nenhum pedido ao bus
realizado.
Se a cache grande o suficiente a probabilidade de sucesso ir ser alto e a quantidade do
trafego no bus por CPU ir diminuir drasticamente, permitindo muito mais CPUs no
sistema.
Tamanhos de cache variam de 64K a 1M, que oferecem uma taxa de velocidade de 90%.
Memria coerente quando garantido a leitura do ultimo valor atualizado
Memria cache memria de alta velocidade para melhorar o desempenho tamanho
64K a 1M, taxa de velocidade 90%.

2) Multiprocessadores chaveados
Memrias

C
CPUs
C

15

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Quando uma CPU quer acessar uma memria, o barramento conecta-os


instantaneamente. Vrias CPU`S podem acessar memrias ao mesmo tempo, embora se 2
CPU`S tentarem acessar a mesma memria ao mesmo tempo, uma delas ter que esperar.
Com este tipo de arquitetura com n CPUs e n memrias , so necessrios n x n pontos
de chaveamento. Para grandes nmeros de n rodarem esse clculo se torna quase que
proibitivo. Para resolver este problema temos uma arquitetura chaveada como mostrada
abaixo, que requer poucos pontos de chaveamento. Exemplo de rede omega.
M

CPUs

Esta rede contem 4 chaves 2 x 2, onde cada chave tem 2 entradas e 2 sadas. No caso
geral com n CPU`S e n memrias a rede omega requer log2n estgios de chaveamento,
cada estgio contendo n/2 chaves para um total de n log2 n/2 chaves.
3) Multicomputadores baseados em bus
Cada CPU tem uma comunicao direta com sua prpria memria. Como a comunicao
somente entre CPU`S o volume de trafego muitssimo menor do que quando a rede de
interconexo tambm usada para o trafego entre CPU memria.
Sua topologia similar ao multiprocessador baseado em bus com muito menor trafego.
Pode ter uma LAN com baixa velocidade de 10 100 Mbps.
workstation

workstation

workstation

Memria
Local

Memria
Local

Memria
Local

CPU

CPU

CPU
rede

exemplo de um multicomputador com vrias workstation numa LAN

16

Memrias

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

4) Multicomputadores chaveados
a) Exemplo : grids tem sua prpria memria bem ajustada para problemas que tem uma
natureza bidimensional , tal como a troca de grafos ou viso (ex. olhos de um rob)
Memria
Local

Memria
Local

Memria
Local

CPU

CPU

CPU

Memria
Local

Memria
Local

Memria
Local

CPU

CPU

CPU

a) Um hipercubo um cubo n dimensional. Para um hipercubo n dimensional, cada


CPU tem n conexes para outras CPUs. Assim a complexidade da fiao aumenta
somente logaritmamente com o tamanho. Como somente vizinhos esto conectados
muitas mensagens tem que executar vrios hops para chegar a seu destino.
Hipercubos com 1024 CPU`S tem sido comercializados por vrios anos e atualmente
chegam a 16.384 CPU`S. Cada vrtice uma CPU e cada arco conecta 2 CPUs.

17

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Conceitos de Software
Existem 2 tipos de Sistemas Operacionais para sistemas com mltiplas \ CPU s
fortemente acoplados ou fracamente acoplados.
Software fracamente acoplados permite que maquinas e usurios de um Sistema
distribudo sejam independentes um do outro, mas interajam quando necessrio .
Exemplo:
Grupo de PCs com sua prpria CPU, memria, disco e sistema operacional, mas
compartilhando recursos tais como impressora numa LAN.
1) Sistemas Operacionais de Rede - NOS ( Network Operational System
Sistemas de Arquivos em Rede NFS ( Network File Service)
Para fornecer um sistema de arquivos global e compartilhado entre vrios clientes temos
1 ou mais maquinas chamadas servidores de arquivos, que l e escrevem arquivos a
pedido dos clientes.
Servidores de arquivo mantm sistemas de arquivos hierrquicos, cada um com um
diretrio raiz, contendo subdiretorios e arquivos. Workstations podem importar ou
montar estes sistemas de arquivos aumentando seus sistemas de arquivos locais com
aqueles nos servidores. Exemplo de diretrios de 2 clientes usando 2 servidores.

Cliente 1

Cliente 2

Servidor 2
Prog

Servidor 1
Jogos
Jogo1
Jogo2

Cliente 2

Cliente 1

Jogos

Jogos
Prog

Jogo1
Jogo2

Programa1
Programa2

Jogo1
Jogo2

Programa1
Programa2

Prog

/Prog/Programa1

Programa1
Programa2

/Jogos/Prog/Programa1

18

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

1 NFS
O NFS um sistema operacional de rede da SUN que visualiza um conjunto de
workstations interconectadas como um conjunto de mquinas independentes. O
objetivo permitir algum grau de compartilhamento entre estes sistemas de arquivos
de uma forma transparente. O compartilhamento permitido entre qualquer par de
mquinas, independentemente de serem mquinas servidoras dedicadas.
Para que um diretrio remoto possa ser acessado de forma transparente a partir de
uma mquina, o cliente desta mquina deve executar uma operao de mount
primeiro. A semntica desta operao funciona da seguinte forma:
diretrio remoto montado sobre um diretrio do sistema de arquivos local;
diretrio montado parece como uma sub-rvore do sistema de arquivos
local;
especificao do diretrio remoto como um argumento para a operao de
mount no feita de uma maneira transparente, a localizao do diretrio
remoto deve ser fornecido, mas aps montado os usurios acessam o
diretrio remoto de maneira transparente.
Para ilustrar a montagem de arquivos, ser apresentado o seguinte exemplo:
A figura 1.1 mostra 3 sistemas de arquivos independentes de mquinas distintas
onde os tringulos representam sub-arvores de diretrios.
Aps a montagem, apresentada na figura 1.2, qualquer um deles pode acessar qualquer
arquivo dentro do diretrio dir1, usando o prefixo /usr/local/dir1, na mquina U.

19

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Um dos principais objetivos do NFS operar num ambiente heterogneo de


hardware, sistemas operacionais e arquiteturas de rede. A especificao NFS
independente destes meios e assim encoraja outras implementaes.
Esta independncia obtida atravs do uso de primitivas RPC construdas
utilizando um protocolo XDR (representao de dados externa).
A especificao NFS, distingue entre os servios fornecidos pelo mecanismo de
montagem e os reais servios de acesso a arquivos remotos.
Dois protocolos so especificados para estes servios:

um protocolo de montagem;
um protocolo para acessar arquivos remotos chamado protocolo NFS
1.1 - Protocolo de Montagem usado para estabelecer a conexo lgica inicial
entre um servidor e um cliente. Uma operao de montagem inclui o nome do
diretrio remoto a ser montado e o nome da mquina servidora.
Um pedido de montagem mapeado numa chamada RPC que executada na
mquina servidora especificada.
O servidor mantm uma listada de exportao que especifica arquivos que ele
exporta para montagem com os nomes das mquinas que tem permisso para
mont-los.
Quando o servidor recebe um pedido de montagem de um arquivo, ele verifica
se a mquina solicitante tem permisso para montar o diretrio, se tiver, ele
retorna ao cliente um handle do arquivo que serve como uma chave para
futuros acessos a ele.
O handle de um arquivo contm todas as informaes necessrias para o
servidor distinguir o arquivo.
O servidor tambm mantm uma lista de mquinas cliente e os correspondentes
diretrios montados.
1.2 - Protocolo NFS o protocolo NFS fornece um conjunto de RPCs para
operaes sobre arquivos remotos. As seguintes operaes so possveis:.
Procurar um arquivo dentro de um diretrio;
Ler entradas de diretrios;
Manipular links e diretrios;
Acessar atributos de arquivos;
Leitura e escrita em arquivos.
Estes procedimentos s podem ser utilizados aps a obteno do handle para o
diretrio montado remotamente.
Os servidores NFS so stateless. Servidores que no mantm informaes
sobre seus clientes entre um acesso e outro.
No existem tabelas paralelas de arquivos abertos ou estruturas de arquivos no
servidor. Assim sendo, cada pedido tem que fornecer um conjunto completo de
argumentos, incluindo um identificador nico e um endereo dentro do arquivo
para a execuo da operao solicitada.

20

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

O protocolo NFS no fornece mecanismos de controle de concorrncia. Os


usurios devem providenciar o acesso coordenado dos arquivos
compartilhados, fora do escopo do NFS.
2 Arquitetura NFS
CLIENTE

SERVIDOR

Interface para as
Chamadas do Sistema

Interface
para
o
Sistema de Arquivos
Virtuais
Outros
tipos de
sistema
s
de
arquivos

Sistema
s
de
arquivos
Unix 4.2

disco

Interface
para
o
Sistema de Arquivos
Virtuais

CLIENTE
NFS

SERVIDO
R NFS

RPC/
XDR

RPC/
XDR

Sistema
s
de
arquivos
Unix 4.2

disco

REDE

A arquitetura NFS consiste de 3 camadas principais:


a) A primeira camada a Interface para as chamadas ao sistema de
arquivos, baseada nas chamadas open, read, write e close e
descritores de arquivos.
b) A segunda camada denominada de Interface de Sistemas de Arquivos
Virtuais, que tem duas importantes funes:
Separa as operaes genricas de sistemas de arquivos, de suas
implementaes, atravs da interface SAV que permite o acesso
transparente a diferentes tipos de sistemas de arquivos montados
localmente.

21

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

O SAV baseado numa estrutura de representao de arquivos


chamada vnode que contm um identificador numrico nico na
rede para o arquivo.
Tabela na camada SAV
V nodes
R node
I - node

Arquivos
Arq. 1
Arq. 2

Cliente
NFS

S.O.
Local

O SAV distingue arquivos locais de arquivos remotos. Os arquivos


locais so identificados de acordo com seus tipos.

Um exemplo do funcionamento da arquitetura em arquivo remoto j aberto, o


seguinte:
O cliente inicia a operao atravs de uma chamada ao sistema;
O sistema mapea esta chamada para uma operao no SAV;
A camada SAV identifica o arquivo como remoto e invoca o
procedimento NFS;
Na camada NFS, uma chamada RPC feita ao servidor remoto;
No servidor remoto a camada SAV acionada para encontrar o arquivo
e invocar a operao do sistema de arquivos apropriada;
O resultado retornado de forma similar.
A vantagem da arquitetura NFS que o cliente e o servidor so idnticos,
assim uma mquina pode ser um cliente ou um servidor ou ambos.
Funcionamento do Programa Mount
Diretrio
local
Programa
Mount

Administrador
Diretrio
remoto
Constri
1 v-nodo
p/
arquivo

Pede handle
do arquivo

handle do
arquivo
handle

Servidor

Se existe
e pode ser
remoto

Kernel
Criar um r node com o handle do arquivo
Cliente
NFS

Camada
SAV
22

Sistemas Operacionais Sistemas Distribudos

23

Prof. Maringela Loureiro Silva

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

A camada System Call manuseia as chamadas como, OPEN, READ e CLOSE.


Aps a realizao da chamada e verificao dos parmetros ele invoca a Segunda camada
, Sistema de Arquivos Virtuais.
A camada de sistema de arquivos virtuais (SAV) tem como tarefa manter uma tabela com
uma entrada para cada arquivo aberto anlogo a tabela de i-nodes para arquivos abertos
em UNIX .
No UNIX um i-nodo indicado pelo par (dispositivo, numero i-node). Na camada SAV
tem uma entrada chamada de v-nodo para cada arquivo aberto. Os v-nodos so usados
para dizer se o arquivo local ou remoto.
Exemplo:
Para montar um sistema de arquivos remoto, o administrador chama o programa mount
especificando o diretrio remoto e o diretrio local no qual ele ser montado.
O programa mount obtm o nome do diretrio remoto a ser montado e descobre o nome
da maquina na qual o diretrio remoto est localizado. Ele ento contacta aquela maquina
pedindo o handle do arquivo para o diretrio remoto. Se o diretrio existe e est
disponvel para montagem remota, o servidor retorna o handle. Finalmente ele faz uma
chamada mount passando o handle do arquivo para o Kernel.
O Kernel constroe um v-node para o diretrio remoto e pede ao cliente para criar um rnode (remote i-node) na sua tabela interna para guardar o handle do arquivo. Cada v-node
na camada SAV comtem um ponteiro para um r-node no cliente NFS ou um ponteiro
para um i-node no S.O. local.

24

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Sistemas Abertos Distribudos

Um ambiente de computao distribuda aberta oferecida pela Open Software


Foundation (OSF) chamada DCE um ambiente integrado consistindo dos seguintes
componentes;
a)
b)
c)
d)
e)

Sistema de Arquivos Distribudos


Servio de diretrio
RPC
Servios de Theads
Servios de Tempo

Principais
Servios

APLICAES
S

Servios
Distribudos

Integrao
PC

Servios
Distribudos
G

E
Servios Arquivos Distribudos

G
U

Servio
Nome

Servio
Tempo

Servios
Futuros

R
E

R
A

Chamadas a Procedimentos Remotos

N
C

Servios de Apresentao
I

Servios de Theads

A
Servios de Sistema Operacional
Servios de Rede

Arquitetura DCE

25

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

1) Sistema de Arquivos Distribudos


Permite um usurio num sistema que conectado a uma rede para acessar e modificar
dados armazenados em arquivos em outro sistema. Do ponto de vista da arquitetura
cliente / servidor o sistema onde o usurio est trabalhando o cliente enquanto o sistema
onde est o dado guardado no arquivo servidor.
Quando o dado acessado uma copia daquele dado guardado ou cached no sistema
cliente de tal maneira que o cliente possa le-lo ou modifica-lo.
Um problema existe quando mltiplos clientes querem acessar e modificar o mesmo
dado. Uma soluo forar o servidor de arquivos a guardar a trilha dos clientes e seus
dados cached. O SAD do DCE usam um conjunto de tokens para manter a trilha da
informao cached.
Quando um cliente solicita um token de escrita a um servidor, este avisa aos outros
clientes que tem este dado que ele est desatualizado.

1) Caractersticas do SAD do DCE


a) Segurana de acesso e proteo s permite acesso a arquivos de clientes
autorizados.
b) Confiabilidade de Dados para impedir pontos de falha o SAD suporta
replicao para todos os seus servios de rede. Se um dos servidores torna-se
indisponvel um cliente automaticamente chaveado para outro servidor.
c) Disponibilidade de dados permite ao administrador do sistema executar rotinas
de manuteno sem afetar a execuo da rede.
d) Desempenho SAD um sistema eficiente e extensvel. Guarda informaes
sobre status do arquivo e dados no sistema do cliente, reduzindo o numero de
pedidos de dados dos clientes, reduzindo a sobrecarga do servidor e da rede.
e) Gerenciabilidade SAD usa banco de dados distribudos para guardar a trilha
da localizao dos arquivos, autenticao de listas de controle de acesso usado
pelos clientes e servidores.

2) Servio de Diretrio
No DCE qualquer coisa que pode ser nomeada chamada de objeto. Cada objeto tem
uma entrada correspondente no servio de diretrio. Cada entrada contem atributos que
descrevem o objeto. Entradas de nomes so colecionados em listas chamadas diretrios.
Este servio fornece a localizao dos arquivos dado um nome.

3) RPC
Permite que cdigo real do procedimento chamado seja executado no processador remoto
de uma maneira transparente para a aplicao. RPCs so fceis para serem usados e
projetados para serem transparentes para varias arquiteturas de rede.

26

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

4) Servios de thread
Responsvel pela implementao dos servios de threads, sincronizao tal como
semforos.

5) Servios de Tempo
Sincroniza os relgios de todos os ns da rede com o relgio que controla toda a rede.

I)

O modulo cliente servidor DCE

Aplicaes Distribudas

Aplicao Distribuda

Servios
Fundamentais
DCE

Executivo

S.O e Interfaces
Da rede

Servios
Compartilhamento
de dados
DCE

Sistema Operacional
Interface de Redes
Rede
Exemplo de implementao DCE
Unix System V relase 4 SVR 4

27

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

II.1) - Modelos Distribudos


O desenvolvimento de uma arquitetura de computao distribuda tem sido afetado por
duas foras opostas:
- Uma fora considera como prioritrios os usurios finais com autonomia local e
aumento da produtividade do usurio com o uso de GUIs .
- A Segunda fora oposta tem suas raiz na necessidade do usurio acessar dados
corporativos. Esta necessidade afeta os requisitos de integrao de sistemas e resulta
na centralizao de aplicaes em grande e poderosos mainframes. Esta Segunda
fora aumenta a necessidade de nveis de integridade mais altas, desempenho e
disponibilidade. Para resolver estes requisitos utiliza-se o enfoque multitiered ou
Multicamada, um das mais populares configuraes de ambiente de computao
distribuda.
Necessidade de
Integridade de alto
nvel

Preo / desempenho
Funcionalidade
Autonomia local

Mainframe Host
Camada1 ou Tier1

Servidor

Lan
Camada2 ou Tier2
Lan
Camada3 ou Tier3

28

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

1) Ambiente Multitiered ou Multicamada


Muitas empresas tem adotado arquitetura 3 camadas. A raiz desta arquitetura a
tradicional arquitetura mestre escravo.
Exemplo: IBMs , System / 370
Esta arquitetura tem acrescentado capacidade de processamento distribudo e cooperativo
ao modelo computacional hierrquico. Na implementao mais simples deste tipo de
arquitetura os recursos so distribudos verticalmente.
A camada do topo ocupada pelo sistema mais poderoso e a fonte dos dados
corporativos o mainframe.
A Segunda camada contem poderosos servidores em rede que tem duas propriedade:
atuam como camada topo dos clientes que enviam pedidos ao mainframe. Ao mesmo
tempo funcionam como servidores para os workstations e PCs que esto na 3
camada.
Um exemplo de tal arquitetura vertical de 3 camadas uma organizao que estende seu
host central, constroe Lans em seus departamentos e conecta os servidores das Lans
correspondentes ao host.
host

Tier1 ou
Camada1

Servidor

Servidor

Tier2 ou
Camada2

Tier3 ou
Camada3

29

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

1) Processamento Cooperativo Cliente / Servidor


A caracterstica mais importante de uma aplicao com processamento cooperativo o
alto grau de interao entre vrios componentes da aplicao. Numa arquitetura cliente
/ servidor, estas interaes so as interaes entre os pedidos dos clientes e as reaes
dos servidores a este pedidos..
Uma aplicao tpica consiste dos seguintes componentes:
a) Lgica do processamento de apresentao
Parte da aplicao que interage com um dispositivo tal qual o terminal de usurio ou
workstation.
Executa as seguintes tarefas:
- Formao de tela, leitura e escuta da informao na tela.
- Gerncia de janela, teclado e mouse.
Exemplos:
- Para ambiente centralizado mainframe :
IBMs, CICS, IMS/DC e ISSO
- Para GUI em ambiente PC DOS.
OS/2 Presentation Manager, Microsoft Windows
- Para GUI em ambiente UNIX
X Windows, OSFs Motif, SUNs Open Look
b) Lgica de processamento do negocio:
Parte da aplicao que usa os dados de entrada para executar as tarefas do negocio. Este
cdigo escrito numa linguagem de programao.

c) Lgica de processamento do banco de dados:


Parte da aplicao que manipula dados dentro da aplicao. O dado gerenciado por um
sistema de gerncia de Banco de Dados (SGBD).
A manipulao de dados em SGBD relacionados feito usando algum dialeto de
Structure Query Language (SQL).
d) Processamento de Banco de Dados:
o real processamento dos dados do Banco de Dados que executado pelo SGBD.
Idealmente o processamento SGBD transparente lgica de negcios da aplicao.

30

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

2 - Componentes tpicos de uma aplicao

Tela

Aplicao
Lgica
Apresentao
Lgica Negocio
Lgica Banco de
Dados

SQL

SGBD

Quando somente dados so distribudos entre varias localizaes, vrios benefcios como
( dados processando prximos fonte, alta disponibilidade etc.) so obtidos desta
distribuio. Porm pode-se criar um gargalo, um fator limitante na busca de mais altos
desempenhos, portabilidade e escalabilidade.
Se alm dos dados parte da aplicao for tambm distribuda, os recursos sero melhor
utilizados.
A arquitetura cliente / servidor emprega processamento cooperativo distribudo para:
a)

Distribuir componentes de processamento da aplicao entre cliente


(apresentao e parte da lgica do negcio) e servidores (parte da lgica de
negcio, lgica do BD e SGBD).
b)
Suportar interaes entre cliente e servidores de uma forma cooperativa.
Se uma aplicao requer leitura e escuta freqentes a um grande BD corporativo, o BD e
sua lgica de processamento colocado na camada de topo.
Se o acesso infreqente ou mais s de leitura, pode ser importante colocar cpias do
dado na 2 camada do servidor.
Na Segunda camada, coloca-se o servidor, lgica do processamento de dados, e partes
comuns da lgica do negcio. Neste caso todas as camadas contem seu prprio BD.

31

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

3 - Exemplo: Processamento cliente / servidor, distribudo e cooperativo.


Cliente 1

Lgica
Apresentao

Processamento
Distribudo

Servidor 1

Lgica Negocio
SGBD
Lgica Banco de
Dados
Processamento Cooperativo

SGBD
Dado distribudo e
processamento de
BD

Sistema 1
BD

Servidor 2

Cliente 2

Lgica
Apresentao
SGBD

Lgica Negocio
Lgica Banco de
Dados
SGBD
BD
Sistema 2

BD

32

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

4 - Exemplo: Processamento cliente / servidor com dado somente no servidor.


Servidor
Lgica
Apresentao
SGBD

Lgica Negocio

Lgica Banco de
Dados

Lgica Banco de
Dados

BD

Cliente

5 - Exemplo : Processamento cliente / servidor com BD remoto e local

Lgica Banco de
Dados

Lgica
Apresentao

SGBD

Lgica Negocio
Lgica Banco de
Dados
S G B D local

Cliente

BD
local

33

BD

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

6 - Exemplo : Arquitetura de 3 camadas com acesso a dados heterogneos


Host

IBM 3090

SGBD DB2
relacional

DB 2

Conector SNA

Camada 1

Servidor SUN
UNIX
O/S

SGBD Sybase

Sybase
BD

Camada 2
Cliente
Windows 3.0
Aplicao
Dbase III
BD

PS/2

Dbase III

Cliente

Camada 3

34

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

7 - Tcnicas de processamento Cooperativo


Para que todos os componentes da arquitetura multicamada coopere, certas tcnicas de
comunicao entre componentes deve ser empregado. Existem 3 tcnicas bascas:
Pipes
Remote Procedure Calls
Interaes SQL cliente / servidor
a) Pipes
Mecanismo orientado a conexo que passa dado de um processo para outro. Muito usado
em sistemas UNIX. Exemplo de mecanismo pipes: IBMs SNA e Suns NFS.
b) Remote Procedure Call (RPC)
um mecanismo pelo qual um processo pode executar outro processo que reside num
sistema diferente e remoto executando um diferente S.O. O mecanismo de transporte
ocultado do usurio RPC. Exemplos: OSFs RPC, Suns Netwise, IBMs OS/2 Remote,
Program Link (RPL) e Sybases RPC.
c) Interao Cliente / Servidor SQL
um mecanismo para passar os pedidos SQL e dados associados de um processo
(geralmente cliente) para outro processo (servidor) SQL cliente / servidor um caso
especial de interaes aplicvel a aplicaes BD relacional distribudo.

35

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

1 - PROCESSAMENTO DISTRIBUIDO

A essncia da aplicao est na lgica de negcios e lgica de banco de dados.


No ambiente cliente / servidor, a lgica da apresentao colocada no sistema do
cliente.
A questo critica no projeto do sistema decidir onde colocar a lgica de negcios e
o BD que juntos so referidos como processamento da aplicao. Existem 3
possibilidades:
a) Lgica do processamento da aplicao toda no sistema do cliente.
b) Lgica do processamento da aplicao toda no servidor.
c) Lgica do processamento da aplicao fragmentada e distribuda entre o cliente
e o servidor.

1.1 - Processamento da aplicao reside no cliente:


a) Vantagens:
Preo / desempenho : devido ao uso de workstations que so mais baratas e com
maior desempenho que os tradicionais mainframes.
Como parte da aplicao trata com I/O executado pela lgica de apresentao, faz
sentido que eles estejam o mais prximo possvel.
Se toda a lgica da aplicao est no cliente, o trafego na rede entre apresentao e
aplicao pode ser significantemente reduzido.
No existe necessidade para sincronizao entre fragmentos da aplicao, que
necessrio se os fragmentos so distribudos entre clientes e servidores.
b) Desvantagens:
Necessidade de vrias copias da mesma lgica de negcios em cada cliente o que
representa um problema srio de manuteno do sistema.
Os benefcios de um cdigo modular compartilhado no podem ser usufrudos.
Necessidade simultnea de atualizao nos hardwares das workstations. Todas
ficam sobrecarregadas ao mesmo tempo, j que executam a mesma coisa.
1.2 - Processamento da Aplicao reside totalmente no servidor:
a) Vantagens:
Lgica do negocio centralizado elimina redundncia de cdigo, simplifica a
manuteno .
Colocar a lgica do negocio no servidor de BD reduz o trafego na rede entre uma
aplicao e o BD.
No existe sincronizao entre fragmentos da aplicao j que eles no so
distribuidores.

36

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

b) Desvantagens:
Colocar toda a aplicao no servidor pode acarretar uma sobrecarga nos recursos do
servidor, principalmente quando muitas aplicaes diferentes tem que compartilhar
o mesmo servidor.
Interaes entre a lgica de negcios e a apresentao podem aumentar
significantemente o trfego na rede e o tempo de resposta para aplicaes de tempo
real.
O poder computacional das workstations pode ser subtilizado, reduzindo o retorno
do investimento.
1.3 - Processamento da Aplicao Distribuda entre os Sistemas Cliente e Servidor
Este enfoque combina as vantagens dos dois primeiros casos enquanto reduz as suas
desvantagens.
a) Vantagens:
Fragmentos comuns da aplicao podem ser colocados no servidor prximo ao BD.
Fragmentos relacionados com a apresentao podem ser colocados no sistema do
cliente.
Redundncias podem ser eliminadas, trafego da rede minimizado e o poder
computacional das workstations e servidores otimizados.
Fragmentos da aplicao distribudos entre clientes e servidor podem ser
executados em paralelo, reduzindo o tempo computacional.
b) Desvantagens:
A fragmentao apropriada da aplicao entre aplicao residente no cliente e
aplicao residente no servidor.
Sincronizao entre os fragmentos da aplicao cliente servidor, normalmente
eles se comunicam atravs de mensagens sncronas.
Manuteno do protocolo de comunicao cliente servidor atualizado para
garantir a integridade das transformaes. Exemplos de implementaes deste
protocolo : IBMs CICS DTP que usa a lgica IBM lgical Unit Type 6.2 (LUG.2)
tambm conhecido como Advanced Program-to-Program Comunications (APPC).
2 - DADOS DISTRIBUDOS
Todos os componentes de uma aplicao tratam dados. Lgica de BD acessa o dado de
um DBMS, lgica de negocio processam o dado e a lgica de apresentao apresentam o
dado para o usurio final.
O problema maior onde localizar o dado no cliente ou servidor ?
Conexes diretas e indiretas

37

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

A arquitetura cliente / servidor envolve processamento de compartilhamento de


dispositivo um dos seus principais objetivos foi permitir que uma aplicao baseada no
cliente acesse dado remoto eficientemente. O acesso fornecido por um servidor de BD.
Um servidor de BD contem o software SGBD e o dado propriamente dito.
SGBD um software compartilhado.
No ambiente cliente / servidor todos os pedidos do cliente so para o servidor.
Num ambiente de grupo, a maioria dos dados a serem processados necessitam ser
compartilhados entre clientes.
Colocar dados e o SGBD juntos num servidor de BD facilita a implementao da
facilidade que fornece integridade de dados e disponibilidade.
Com tudo isto, a deciso apropriada colocar o software SGBD e todos os dados
compartilhados num servidor de banco de dados.
Existem dois modos que uma aplicao poderia ser conectada a um servidor executando
um SGBD.
a) Uma conexo direta aplicao SGBD
Onde a aplicao do cliente usa protocolos de comunicao e alguma espcie de
processamento de transao remota para pedir a um servidor que possui SGBD acesso ao
dado.

Apresentao
Lgica Negocio
SGBD
Lgica BD

Cliente
Conexo direta

SGBD

38

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

b) Conexo indireta aplicao - SGBD


O cliente requisita dados remotos atravs de um SGBD local (residente no cliente). O
benefcio de tal conexo indireta que o cliente pode acessar ambos os dados locais e
remotos, com a mesma linguagem de manipulao de dados.
Um problema que o dado distribudo entre o cliente e o servidor e a integridade dos
dados deve ser garantida atravs de gerenciamento de transaes distribudas.
Outro problema ocorre quando os SGBD cliente e servidor so produtos diferentes
acesso a SGBD heterogneos. Diferentes linguagens de manipulao de dados pode
necessitar de desenvolvimento de um gateway entre SGBD SGBD.

Lgica
Apresentao

Servidor

Lgica Negocio
Lgica Banco de
Dados
S G B D local

SGBD

Cliente

Servidor
BD

BD
local

Comunicao em Sistemas Distribudos


A maior diferena entre um sistema distribudo e um sistema uniprocessador a
comunicao entre processos. Num sistema uniprocessador esta comunicao assume a
existncia de uma memria compartilhada. Num SD no existe memria compartilhada e
devemos Ter outros meios para comunicao de processos remotos.

39

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Toda comunicao em sistemas distribudos baseada em mensagens. Quando um


processo A quer se comunicar com o processo B, ele primeiro constri uma mensagem e
seu prprio espao de endereamento, executa uma chamada ao S.O. que a envia pela
rede para B.
Para tratar com vrios nveis de comunicao a ISO desenvolveu um modelo de
referncia chamado OSI. O modelo OSI distingui dois tipos de protocolos.
a) Protocolos orientados a conexo
Antes da troca de dados o receptor e o emissor estabelecem explicitamente uma conexo.
Quando eles terminam devem terminar a conexo. Exemplo sistema telefnico.
b) Protocolos sem conexo
O emissor transmite a primeira mensagem quando estiver pronto. Colocar uma carta na
caixa do correio um exemplo de protocolo sem conexo.
No modelo OSI comunicao dividida em 7 camadas. Cada camada trata com um
aspecto especfico de comunicao e fornece uma interface para a camada acima.
A interface consiste de um conjunto de operaes que definem o servio que a camada
oferece.
No modelo OSI, quando o processo A na mquina 1 quer se comunicar com o processo B
na mquina 2, ele constri uma mensagem e passa a mensagem para a camada de
aplicao. Esta camada adiciona um header na frente da mensagem e passa a
mensagem restante atravs da interface 6/7 para a camada de apresentao. Esta nova
camada adiciona seu prprio header e passa a mensagem restante para a camada
sesso e assim por diante. Quando chega ao final na camada fsica a mensagem tem o
formato da mensagem abaixo
1

Mensagem

Bits que realmente aparecem na rede


1)
2)
3)
4)
5)
6)
7)

header da camada Data Link


header da camada de rede
header da camada de transporte
header da camada de sesso
header da camada de apresentao
header da camada da aplicao
tailer da camada Data Link

Quando a mensagem chega na maquina 2, o processo realizado ao contrario, retirando


os headers nas camadas correspondentes.

40

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

As camadas do modelo OSI apresentado na figura abaixo :

Maquina 1

Maquina 2

Processo
A

Processo
B
Protocolo de Aplicao

Aplicao

Apresentao

Aplicao
Protocolo de Aplicao
Apresentao
Protocolo de Sesso

Sesso

Transporte

Sesso
Protocolo de Transporte
Transporte
Protocolo de Rede

Rede

Data Link ou
Enlace dados

Rede
Protocolo Data Link ou
Enlace dados

Data Link ou
Enlace dados

Protocolo de Fsico
1

Fsica

Fsica

REDE

41

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

1) A camada Fsica
Responsvel pela transmisso dos os e 1s que compe a mensagem, quantos bits por
segundo podem ser enviados e se a transmisso pode ser feita em ambas as direes
simultaneamente.
Esta camada trata da padronizao das interfaces eltrica, mecnica e sinalizao. Muitas
camadas fsicas tem considerado o padro RS-232-C para a comunicao serial.
2) A camada Data Link ou Enlace de Dados
Responsvel por agrupar os bits em frames e verificar se cada frame corretamente
recebido. Esta camada coloca um padro de bits especial denominada checksum no
incio e no fim de cada frame. Quando o frame chega no receptor este recalcula o
checksum do dado e o compara com o checksum que segue o frame. Se eles no
coincidem o receptor pede ao emissor para retransmiti-lo. Caso contrrio o receptor
aceita a mensagem. No header so atribudos nmeros seqenciais aos frames para
saber em relao a qual frame a mensagem de erro corresponde.
3) A camada de Rede
Numa LAN no existe necessidade do emissor localizar o receptor, basta colocar a
mensagem na rede e o receptor o consome. Mas numa rede WAN com um grande
nmero de maquinas esta camada responsvel por encontrar o melhor caminho. Este
procedimento conhecido por roteamento e a principal desta camada. Dois protocolos
de rede so muito usados, um orientado a conexo chamado X.25 e o outro sem conexo
chamado IP ( Internet Protocol).
O usurio do X.25 envia um Call Request para o destino que pode aceitar ou rejeitar a
conexo. Se a conexo aceita o chamador recebe um identificador para usar nos pedidos
subsequentes. Um pacote IP pode ser enviado sem qualquer inicializao, ele roteado
para os seus destinos independente de todos os outros.
4) A camada de Transporte
Fornece o servio de manter conexes confiveis. Aps receber uma mensagem da
camada de sesso, esta camada quebra em pequenos pedaos e atribui a cada um 1
nmero seqencial e os envia. No receptor a camada de transporte controla a chegada dos
pacotes e os ordena seqencialmente.
O protocolo de transporte DOD chamado TCP a combinao TCP/IP muito usada em
protocolo sem conexo. O protocolo de transporte DOD sem conexo chamado UDP.
5) A camada de Sesso
Fornece controle de dialogo para guardar a trilha de que parte est ativa e fornece
facilidades de sincronizao.
6) A camada de Apresentao
Fornece um formato mensagem tal como definir recordes contendo campos atravs do
qual o emissor notifica ao receptor que a mensagem contem um registro particular num

42

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

certo formato, possibilitando a comunicao entre maquinas com representaes internas


diferentes.
7) A camada da Aplicao
Coleo de protocolos para atividades comuns tal como: mail eletrnico, transferencia
de arquivos e conexo de terminais remotos para computadores da rede
Remote procedure Call RPC
um mtodo que permite que programas chamem procedures, localizadas em outras
maquinas.
Quando um processo na maquina A, chama uma procedure na maquina B, o processo
que chamou em A suspenso e a execuo da procedure chamada em B se inicia. As
informaes so passadas do chamador atravs dos parmetros e pode retornar valores no
resultado da procedure .
Ocorrem os seguintes passos no RPC :
a) A procedure cliente chama o cliente stub de uma maneira normal;
b) O cliente stub constri uma mensagem e interrompe o ncleo;
c) O ncleo envia a mensagem para o ncleo remoto;
d) O ncleo remoto entrega a mensagem ao servidor stub;
e) O servidor stub , desempacota os parmetros e chama o servidor;
f) O servidor executa o servio e retorna o resultado para o stub;
g) O servidor stub empacota o resultado numa mensagem e interrompe o ncleo;
h) O ncleo remoto envia a mensagem para o ncleo do cliente;
i) O ncleo do cliente entrega a mensagem ao cliente stub;
j) O stub desempacota o resultado e retorna ao cliente.

43

Sistemas Operacionais Sistemas Distribudos

Cliente stub

Prof. Maringela Loureiro Silva

Servidor stub

Maquina Cliente
Servidor

call

Maquina

Desempacota
Parmetros

Empacota
Parmetros

call
Ser

Cliente
return

vidor

Empacota
Resultados

Desempacota
Resultados

Ncleo

return

Ncleo

Mensagens transportadas sobre a rede

Empacotar parmetros numa mensagem chamado parameter marshalling


1 Exemplo do uso de RPC com a chamada ao procedimento: sum ( i , j )

stubs

mensagem
N = sum
(4,7)

mensagem

sum

sum

Ncleo

Ncleo

44

Sum ( i , j)
Int i, j
{return
(i+j)}

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

O cliente envia na mensagem, o nome ou cdigo da procedure com seus parmetros


O servidor examina a mensagem para ver qual procedure necessria e ento
executa a chamada apropriada
Ponteiros e referencias devem ser evitados como parmetros neste tipo de
comunicao

2 - Ligao Dinmica
Ligao dinmica utilizada para ligar cliente a servidores. O ponto inicial para a ligao
dinmica a especificao formal de servidores.
Esta especificao formal informa:
nome do servidor;
numero da viso;
lista de procedure s oferecidas;
Para cada procedure , so dados os tipos de parmetros, que podem ser :
in parmetro enviado do cliente para o servidor;
out parmetro enviado do servidor para o cliente;
in out parmetro enviado do cliente para o servidor, que modificado e
devolvido para o cliente.
O principal uso da especificao formal servir de entrada para o gerador de stub que
produz os dois stubs, cliente e servidor. Ambos so colocados em bibliotecas apropriadas.
3 - Procedimento de registro do servidor
No inicio o servidor exporta sua interface. Isto significa enviar uma mensagem para um
programa chamado binder , responsvel pelo registro.
Para o correto registro, o servidor envia ao binder, seu nome, seu numero de verso e um
identificador nico e um handler usado para localiza-lo.
4 - Interface do binder
Chamada
Registro
Cancelar
Registro
Procura

Entrada
Nome, verso, handler, ident.
Nome, verso, ident.

Sada

Nome, verso

handler, ident.

45

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

5 - Procedimento do cliente localizar servidor


Cliente pede um servio atravs de um call, que direcionado para o cliente stub.
O cliente stub verifica se existe uma ligao com o servidor. Se no existe, envia
uma mensagem para o binder perguntando pelo servidor que implemente a interface
pedida.
O binder devolve ao cliente stub o handle e o identificador do servidor .
O cliente stub usa o handle como endereo para enviar a mensagem desejada.
6 - Semntica RPC na presena de falhas
6.1 - Cliente no pode localizar o servidor
Servidor no pode ser localizado ou porque falhou ou porque o cliente stub contem uma
verso de interface desatualizada.
O retorno de uma procedure com tal erro, devolve um valor de 1 para indicar o erro.
O chamador deve providenciar o procedimento para se recuperar do erro.
6.2 - Mensagens de pedido perdidas
Kernel inicia um timer quando envia o pedido. Se o timer expira antes que um reply ou
ack retorne, o kernel envia a mensagem novamente.
6.3 - Mensagens de resposta perdidas
Uma forma de detetar respostas perdidas utilizar o timer como no caso anterior, e
retransmitir a mensagem.
Alguns tipos de mensagens so idempotent isto podem ser retransmitidas vrias
vezes sem problemas. Outras como transferncia de dinheiro no podem ser
retransmitidas sem a certeza de que o servidor no recebeu a anterior. Para este tipo de
mensagens temos:
O ncleo do cliente atribui a cada pedido um numero seqencial, desta forma o
ncleo do servidor pode distinguir um pedido chegando duas vezes e descartar o
ultimo.
No cabealho da mensagem 1 bit usado para distinguir entre o pedido inicial de
suas retransmisses.
6.4 - Falha do servidor
Quando o servidor falha, tanto ele pode ter executado o pedido antes de falhar ou falha
antes de executa-la, de qualquer modo muito difcil detetar em qual situao o servidor
estava. A falha do servidor levar o cliente a falhar tambm.
6.5 - Falha do cliente
O que pode acontecer se um cliente falha logo aps enviar um pedido para o servidor ?

46

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Uma computao est ativa e nenhum pai est esperando pelo resultado, a isto
chamado, um rfo.
O que pode ser feito com os rfos ? Existem 4 alternativas : propostas:
-

6.5.1 - Exterminao antes de enviar uma mensagem RPC o cliente stub guarda
em disco um log informando o que ele ir fazer. Aps a falha, quando ele
restaurado, ele examina o log e explicitamente mata os rfos. Esta alternativa ruim
por despender um enorme tempo gravando em disco para cada RPC.

6.5.2 - Reencarnao O tempo dividido em pocas numeradas seqencialmente.


Quando um cliente restaurado, ele envia uma mensagem para todas as maquinas
avisando o inicio de uma nova poca. Quando recebem estas mensagens, todos
matam as computaes remotas. Se a rede est particionada, alguns rfos podem
sobreviver, mas quando eles retornam, suas respostas iro conter uma poca obsoleta
e assim fcil detet-los.

6.5.3 - Reencarnao Gentil Quando a mensagem de poca chega, cada maquina


verifica se tem computao remota, se tiver, tenta localizar seu proprietrio. Somente
se o proprietrio no puder ser encontrado que a computao morta.

6.5.4 - Expirao A cada RPC dado uma quantidade de tempo T para executar o
servio. Se o tempo no suficiente, ele deve explicitamente pedir outro quantum.
Aps um cash, o servidor espera um tempo T antes de recarregar. O tempo seria
suficiente para todos os rfos executarem. O maior problema desta alternativa
determinar o tempo T.

7 Implementao
7.1 - Protocolos RPC
A primeira deciso a ser feita se o protocolo ser orientado a conexo ou no
conectado.
Com o protocolo orientado a conexo, para se comunicar o cliente estabelece uma
conexo com o servidor e todo o trafego em ambas as direes usa esta conexo. A
vantagem deste tipo de comunicao ser mais fcil, porque todo o controle de envio e
recepo de mensagem feito pela camada mais bsica que suporta a conexo. A
desvantagem especialmente sobre um LAN a perda de performance. Por isto para
sistemas distribudos que so para ser utilizados em um edifcio ou um campus o
protocolo escolhido o sem conexo.
A Segunda deciso se usa um protocolo de uso geral padro ou um especialmente
projetado para RPC.
Como no existe um protocolo padro para RPC necessrio a escolha de seu prprio
protocolo. Alguns sistemas distribudos usam IP ( ou UDP ) como protocolo base. Esta
escolha tem varias vantagens porque:
a) O protocolo j est projetado ;
b) Muitas implementaes esto disponveis ;

47

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

c) Estes pacotes podem ser enviados e recebidos por todos os sistemas UNIX ;
d) IP e UDP podem ser enviados diretamente sobre muitas redes existentes ;
IP Protocolo Internet ; UDP - Uniform Datagrama Protocol
7.2 - Acknowledgements
Protocolos utilizados quando grandes RPC`s so quebrados em pequenos pacotes :
a) protocolo stop and wait : a cada pacote enviado o cliente espera por um ack do
servidor. Quando o ack chega, o cliente envia o prximo .
b) protocolo blast : o cliente envia todos os pacotes, o mais rpido possvel e no final o
servidor envia o ack.
Com o protocolo stop and wait mais simples detetar perdas de mensagens, j que ele
espera o ack da mensagem enviada antes de enviar o outro. Mas o protocolo blast mais
eficiente porque no tem vrios acks para uma mensagem.

48

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

SOCKETS
sockets so componentes bsicos de comunicao entre processos. A interface socket
fornece acesso aos protocolos de transporte.
Um socket tem um tipo e processos associados.
Um domnio de socket, fornece uma estrutura de endereamento e um conjunto de
protocolos.
sockets trocam dados dados somente com sockets no mesmo domnio. A comunicao no
domnio Internet usa TCP/IP.
1 - TIPOS DE SOCKET
Um socket stream fornece fluxo de dados bidirecional, confivel e sequenciado.
Comunicao stream semelhante a uma conversao telefnica. Na Internet, o tipo de
socket SOCK-STREAM que usa TCP.
Um socket datagrama suporta fluxo de mensagens bidirecional. Um processo no socket
datagrama pode receber mensagens na ordem diferente da sequncia enviada e pode
receber mensagens duplicadas. Comunicao datagrama semelhante ao envio de uma
carta. Na Internet, o tipo de socket SOCKET-DGRAM que usa User Datagrama
Protocol (UDP), que fornece comunicao sem conexo , no confivel.
Um socket raw fornece acesso protocolos de comunicao de mais baixo nvel ou
interfaces de hardware.
Estes sockets so normalmente orientados a datagrama.
Eles so usados para desenvolver novos protocolos de comunicao. Por exemplo,
sockets raw no domnio Internet podem ser usados para implementar um novo protocolo
IP, e o socket s ir receber pacotes do protocolo especificado. Geralmente utilizado por
desenvolvedores de software de rede. disponvel apenas para super usurios.
2 - METODOLOGIA BSICA DE USAR sockets
2.1 - Criao de sockets
executada pela rotina socket ( );
S = socket (domnio, tipo, protocolo);
O retorno da rotina um descritor cujos componentes tem os seguintes significados:
domnio especificado por uma das constantes definidas em <sys/socket.h>.
Para o domnio UNIX a constante AF_UNIX.
Para o domnio Internet a constante AF_INET.

Os tipos dos sockets so definidos em <sys/socket.h>.


Os tipos SOCK-STREAM, SOCK-DGRAM ou SOCK-RAW so suportados por
AF_INET e AF_UNIX.

49

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Exemplos:
S = socket (AF_INET,SOCK_STREAM, ); cria um socket stream no domnio Internet
com protocolo TCP
S = socket (AF_UNIX, SOCKT_DGRAM, ) ; cria um socket datagrama no domnio
UNIX com protocolo datagrama

2.2 - Ligao a Nomes locais


Um socket criado sem nome. Ele no pode ser referenciado at que um endereo seja
associado a ele. A comunicao entre processos feita atravs da conexo de endereos.
No domnio Internet a conexo composta de <protocolo, endereo local, porta local,
endereo remoto, porta remota>.
No domnio UNIX, uma conexo composta de <pathname local, pathname remoto>.
Sintaxe da rotina bind:
Bind (S, nome, tam_nome) onde:
S
handle (descritor) do socket;
Nome
string que interpretado pelo protocolo. Nomes no domnio Internet
contem : endereo Internet e numero porta, nomes no domnio UNIX
contem um path name e uma famlia .
Tam_nome: tamanho do string que especifica o parmetro nome
2.2.1 - Exemplo: Bind o nome tmp/foo a um socket domnio UNIX
# include <sys/un.h>
struct sockaddr_un addr;
strcpy (addr.sun_path, tmp/foo);
addr.sun_family = AF_UNIX;
bind (S, (struct sockaddr*) & addr, strlen (addr.sun_path) + sizeof (addr.sun_foo)
O nome de arquivo referenciado no addr.sun_path deve ser criado como um socket no
sistema de arquivos e o chamador deve ter permisso de escrita no diretrio em que ele
ser criado. O arquivo dever ser deletado pelo chamador quando no mais necessrio.
2.2.2 - Exemplo: bind um nome a um socket no domnio Interne;
# include <sys/types.h>
# include <netinet/in.h>
...
struct sockaddr_in sin;
bind (S, (struct sockaddr*) & sin, sizeof sin);

50

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

2.3 - Estabelecimento de Conexo


Estabelecimento assimtrica um processo como cliente e outro como servidor.
O servidor une um socket a um endereo bem conhecido associado com o servio, e se
bloqueia neste socket esperando um pedido de conexo.
No lado do cliente a chamada connect ( ) inicializa uma conexo
2.3.1 - Exemplos: No domnio UNIX
Struct sockaddr_un server;
Server.sun.family = AF_UNIX;
...
connect (S, (struct sockaddr *) & server,
strlen (server.sun_path) + sizeof (server.sun_family)
2.3.2 - Exemplos: No domnio Internet
Struct sockaddr_in server;
connect (S, (struct sockaddr *) & server, sizeof (server)
2.3.3 - Para receber uma conexo do cliente, um servidor deve executar 2 passos
aps o binding.
1) Indicar quantas conexes podem ser enfileiradas.
2) Aceitar a conexo
Exemplo:
Struct sockaddr_in from;
...
listen (S,5) ; /* permite enfileiras 5 conexes */
fromlen = sizeof (from);
newsock = accept (S, struct sockaddr*) & from ,& fromlen);
onde:
S endereo para o qual o pedido de conexo enviado.
Listen especifica o nmero mximo de conexes que podem ser enfileiradas.
From estrutura que preenchida com endereos dos clientes.
Fromlen tamanho da estrutura
Accept normalmente bloqueia, ele retorna um novo descritor de socket que
conectado ao cliente. O valor de from mudado para o real tamanho do
endereo.

51

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

2.3.4 - A figura abaixo mostra uma transferencia orientada a conexo


Protocolo Com Conexo
SERVIDOR

CLIENTE

socket ( )
bind ( )
listen ( )
socket ( )
accept ( )
Fica bloqueado at a
conexo com o cliente
Estabelecimento de conexo
read ( )

connect ( )

Dados ( pedidos)
write ( )

Pedido de processo
Dados (reply)

read ( )

write ( )

52

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

2.3.5 - A figura abaixo mostra uma transferencia de dados sem estabelecimento de


conexo:
Protocolo Sem Conexo
CLIENTE

SERVIDOR
socket ( )

socket ( )

bind ( )

bind ( )

recvfrom ()
Fica bloqueado at que dados sejam
recebidos de algum cliente
Dados ( pedidos)
sendto ( )
Pedido de processo
Dados (reply)
recvfrom (
)

sendto( )

2.4 - Transferencia de Dados via socket


2.4.1 - Enviando dados atravs de um socket
Aps o estabelecimento do socket, temos 3 chamadas do sistema para a transmisso de
dados:
a ) - Write s usado para sockets conectados e tem o seguinte formato:
Write (descritor, buffer, tamanho) onde:
Descritor descritor do socket
Buffer ponteiro para o buffer de dados a serem enviados
Tamanho
tamanho dos dados
b ) - Send tem o seguinte formato : Send (descritor, buffer, tamanho, flags) onde :
Descritor descritor do socket
Buffer
ponteiro para seqncia de bytes a serem enviados
Tamanho nmero de bytes a serem enviados
Flags
controla a transmisso de dados. Elas so:
msgoob envia / recebe dados out-of-band
msgpeek olha os dados
msg-dontroute envia dados sem roteamento de pacotes.

53

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

c ) - Sendto permite que o chamador envie uma mensagem atravs de um socket no


conectado, obrigando o chamador a especificar um destino. Seu formato :
Sendto (descritor, buffer, tamanho, flags, destaddr, addrlen) onde:
Os 4 primeiros argumentos so os mesmos usados no send. Os dois ltimos
especificam o endereo destino e o tamanho desse endereo.

2.4.2 - Recebendo Dados atravs de um socket


a) - Read - tem o seguinte formato: Read ( descritor, buffer, tamanho) onde:
Descritor descritor de socket
Buffer
ponteiro para o endereo onde os dados sero armazenados.
Tamanho nmero mximo de bytes a serem lidos.
b) - Recv Recebem dados de um socket conectado. Seu formato :
Recv (descritor, buffer, tamanho, flags) onde :
Descritor
descritor do socket
Buffer
ponteiro para o endereo na memria no qual a mensagem ser
colocada
Tamanho tamanho da rea de armazenagem
Flags
permitem o controle da recepo
c) - Recv From permite recebimento atravs de um socket no conectado. Seu formato :
Recvfrom (descritor, buffer, tamanho, flags, from addr, from tamanho) onde:
Os quatros primeiros argumentos so os mesmos do Recv, os dois ultimos so
ponteiros, para um endereo e um inteiro.
From addr
From tamanho

contem o endereo do transmissor


o tamanho deste endereo

54

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Sincronizao e Deadlock em Sistemas Distribudos


1 - Sincronizao de relgios
Sincronizao em S.D. mais complicado do que em sistemas centralizados, devido a
necessidade de usar algoritmos distribudos, em geral estes algoritmos tem as seguintes
propriedades:
As informaes relevantes esto distribudas em vrias mquinas;
Processos tomam decises baseados somente em informaes locais;
Um simples ponto de falha deve ser evitado;
No existe nenhum relgio geral ou outro tempo global
1.1 - Relgio Lgico
Sincronizao de relgio no necessita ser absoluto, se 2 processos no interagem, no
existe a necessidade que seus relgios estejam sincronizados. Para muitos propsitos
suficiente que todas as mquinas concordem com o mesmo tempo. No essencial que o
tempo coincida com o tempo real, por isto podemos definir este relgio como relgio
lgico e relgios fsicos so relgios que acompanham o tempo real.
Lamport apresentou o seguinte algoritmo para sincronizar os relgios lgicos;
Exemplo de trs processos que enviam mensagem entre si, cada um com seu prprio
relgio
Mensagens C e D enviam para outros processos que tem relgio com tempos
inferiores ao processo de origem. Esta situao deve ser evitada.

6
12
18
24
30
36
42
48
54
60

8
16
24
32
40
48
56
64
72
80

10
20
30
40
50
60
70
80
90
100

O algoritmo de Lamport sincroniza estes relgios resolvendo o problema atravs da


alterao do relgio destino com o valor do relgio origem mais tempo gasto para enviar
a mensagem.

55

Sistemas Operacionais Sistemas Distribudos

6
12
18
24
30
36
42
48
70
76

8
16
24
32
40
48
61
69
77
85

Prof. Maringela Loureiro Silva

10
20
30
40
50
60
70
80
90
100

Os relgios lgicos foram sincronizados pelo algoritmo do Lamport atravs da alterao


dos relgios destinos com o valor dos processos origem mais tempo para envio da
mensagem.
1.2 - Excluso Mutua
1.2.1 - Algoritmo Centralizado
A excluso mutua em um sistema distribudo pode ser simulado como feito num
sistema uniprocessador.
Um processo escolhido como coordenador, ele responsvel por controlar a entrada de
processos em regies criticas. Quando um processo deseja acessar uma regio critica ele
envia uma mensagem para o coordenador que verifica se a regio est desocupada e pode
ser acessada. Se a regio critica est ocupada com outro processo o coordenador no
responde ao pedido.

2
OK

pedido

pedido
C

FILA
VAZIA

2
OK

liberao
C

coordenador

Processo 1 pede ao coordenador


acesso regio critica e este
autoriza o acesso

FILA
VAZIA

No responde

Processo 2 pede ao coordenador


acesso a regio critica, como o
processo 1 j est ocupando esta
regio, o coordenador no
responde e guarda o processo 2 na
fila

56

Processo 1 avisa ao coordenador


que liberou a regio critica, este
ento retira o processo 2 da fila
retornando uma mensagem de
permisso de acesso a regio
critica

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

1.2.2 - Algoritmo Distribudo


Para evitar o gargalo de um coordenador temos um algoritmo distribudo para a excluso
mutua que funciona da seguinte maneira:
Quando um processo quer entrar numa regio critica ele constri uma mensagem
contendo o nome da regio critica que ele quer acessar, seu nmero de processo e o
tempo corrente. Ele envia esta mensagem para todos os outros processos. Quando esta
mensagem chega ao processo destino ele pode tomar uma das seguintes decises:
Se o receptor no est na regio critica e no quer acessa-la ele devolve uma
mensagem OK para o emissor;
Se o receptor j est na regio critica ele no responde e enfileira o pedido;
Se o receptor que acessar a regio critica, mas ainda no o fez, ele compara o tempo
da mensagem recebida com o tempo da mensagem por ele enviada aos outros
processos. O tempo menor ganha. Se a mensagem recebida tem tempo menor, o
receptor retorna OK. Se a mensagem do receptor tem o menor tempo ele no
retorna nenhuma mensagem e guarda o pedido numa fila.

Entra na regio critica

Entra na regio critica


0

0
12

0
OK

OK

OK

8
1
1

OK

12
12

Os processos e 2 querem entrar na


mesma regio critica no mesmo
momento

Processo tem o menor tempo e Quando o processo termina, ele


ganha o acesso regio critica envia uma mensagem OK para
permitir ao processo 2 o acesso
regio critica

57

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

1.2.3 - Algoritmo Token Ring


Para resolver o problema da excluso mutua utilizamos este algoritmo que funciona da
seguinte maneira:
Atravs de software um anel lgico construdo onde a cada processo atribudo
um nmero no anel, onde cada processo conhece que o processo sucessor.
Quando a rede inicializada, o processo recebe um token (ficha). Este token
circula a rede, ele passado de um processo para outro em mensagens ponto a ponto.
Quando um processo recebe um token ele verifica se est querendo acessar alguma
regio critica. Se ele necessita, ele acessa a regio e depois libera o token para o
processo vizinho.
Um processo que detm o token s pode entrar em uma regio critica de cada vez, ele
deve liberar o token aps acessar uma regio critica e s na prxima rodada este
processo acessar a outra regio critica.
Se um processo recebe um token mas ele no deseja acessar nenhuma regio critica,
ele o libera imediatamente para o processo vizinho.
2 - Dealdlock em Sistemas Distribudos
So difceis de impedir, prevenir ou mesmo detectar porque as informaes esto
distribudas em varias mquinas. Em alguns sistemas como sistema de banco de dados
distribudo, eles podem ser extremamente srios.
Dois tipos de deadlock em sistemas distribudos podem existir:
deadlock de comunicao ocorre por exemplo quando um processo A est
tentando uma mensagem para o processo B que est tentando uma mensagem para
o processo C que est tentando uma mensagem para o processo .;
deadlock de recursos ocorre quando processos esto lutando para uso exclusivo de
dispositivos de I/O, arquivos ou outros recursos
2.1 - Deteco de Deadlock Centralizado
Como primeira tentativa ns podemos usar um algoritmo centralizado e tentar imitar o
algoritmo no distribudo.
Cada mquina mantm o grafo de recursos dos seus processos e recursos e um
coordenador central mantm o grafo de recursos para todo o sistema ( a unio de todos
os grafos individuais).
Quando o coordenador detecta um ciclo, ele mata um processo para quebrar o deadlock.
Diferentemente do caso centralizado onde todas as informaes esto automaticamente
disponveis, no caso distribudo quando um arco do grafo local adicionado ou
cancelado do grafo de recursos, uma mensagem pode ser enviada para o coordenador
providenciar a atualizao.
Ou periodicamente todo processo pode enviar uma lista de arcos adicionados ou
cancelados desde a ultima atualizao.

58

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Exemplo: A , B e C so processos e T , R e S usurios.


Maquina
Coordenador
A

Maquina 1

segura

Viso do

espera
C

espera
R
segura

B
T

segura

Quando o processo B terminar e libera R que acessado por A que quando terminar
libera S para o processo C.
2.2 - Deteco de Deadlock Distribudo
Um algoritmo tpico que executa esta funo, funciona da seguinte maneira.
Neste algoritmo processos podem requisitar mltiplos recursos ao mesmo tempo, ao
invs de um por vez. Um processo pode esperar em 2 ou mais recursos simultaneamente.
(0,8,0)
Mquina 0

Mquina 1

Mquina 2
(0,4,6)
6

4
0

2
1

(0,2,3)

(0,5,7)
Como visto na figura acima temos:
Processo 1 espera por um recurso local
Processo 2 espera por recursos que esto localizados em outra maquina.
O algoritmo acionado quando um processo tem que esperar por algum recurso, por
exemplo; o processo bloqueado no ,processo 1. Neste ponto uma mensagem especial
gerada para enviar ao processo que mantm os recursos. Esta mensagem contem 3
nmeros:
nmero do processo bloqueado ;
nmero do processo que est enviando a mensagem ;
nmero do processo destino;
A primeira mensagem de para 1 contm (0,0,1). Quando a mensagem chega no destino.

59

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Sistemas de Arquivos Distribudos


Num sistema Distribudo importante distinguir entre os conceitos de servio de arquivo
e servidor de arquivo.
O servio de arquivo a especificao do que o sistema de arquivos oferece aos seus
clientes. Ele descreve as primitivas disponveis, os seus parmetros e as aes que eles
executam. Ele especifica a interface do sistema de arquivos para os clientes.
Um servidor de arquivos um processo que executa em alguma maquina o servio de
arquivos.
Um sistema de arquivos pode ter 1 ou vrios servidores mais os clientes no devem saber
como estes so implementados, no devem conhecer quantos eles so e onde eles se
localizam.
Um servidor de arquivo normalmente um processo de usurio executando em alguma
mquina.
Uum sistema pode conter mltiplos servidores de arquivo, cada um oferecendo um
servio de arquivo diferente. Por exemplo 2 servidores oferecendo servio de arquivo
UNIX e um servio de arquivo MS-DOS.
1 - Projeto de sistemas de Arquivos Distribudos
Um sistema de arquivos distribudos tem 2 componentes distintos:
Servio de arquivo - responsvel pelas operaes nos arquivos individuais, tais
como : leitura, escrita.
Servio de diretrio responsvel pela criao e gerenciamento de diretrios,
adicionando e deletando arquivos dos diretrios.
1.1 - Interface do Servio de Arquivo
A questo fundamental para um servio de arquivo saber o que um arquivo ? Em
sistemas como UNIX e MS-DOS um arquivo uma seqncia de bytes no interpretada.
Em mainframe arquivo pode ser estruturado como uma seqncia de registros.
A maior parte dos servidores de arquivos consideram um arquivo uma seqncia de
bytes.
Um arquivo pode Ter atributos que so informaes sobre ele mas no so parte dele
propriamente dito.Ex. atributos so: proprietrio, tamanho, data criao e permisso de
acesso.
Um importante aspecto do modelo de arquivo se o arquivo pode ser modificado
aps criado. Arquivos que no podem ser modificados so chamados imutveis.
Proteo em sistemas de arquivos distribudos usam as tcnicas: capacidade e listas de
controle de acesso.
a) capacidade especifica que tipos de acessos so permitidos ao usurio operar
sobre o arquivo.

60

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

b) Listas de controle de acesso associa a cada arquivo uma lista de usurios que
podem acessa-lo e que tipos de acesso so permitidos a cada um.
Os servios de arquivos podem ser divididos em 2 tipos de acordo com o modelo upload
/ download ou modelo de acesso remoto.
a) No modelo upload / download as operaes de escrita ou leitura de um arquivo so
realizadas transferindo o arquivo desejado do servidor para o cliente solicitante que
executa a operao desejada e retorna para o servidor:
Cliente

Servidor

Arquivo antigo
Arquivo novo

arquivo retornado ao servidor quando o cliente


termina

Acessos so realizados no cliente

vantagem : modelo conceitualmente simples


desvantagem : cliente deve ter disponvel memria para armazenar os arquivos
desejados.

b) No modelo de acesso remoto - o servio de arquivo oferece vrios servios como:


abrir e fechar arquivos, leitura, escrita, mudana de atributos, etc. Neste modelo o
sistema de arquivo executa no servidor e no no cliente. Tem a vantagem de no
ocupar espao nos clientes.
Cliente

Servidor

Pedidos do cliente para acessar


arquivo remoto

arquivo fica no servidor

1.2 - Interface do Servidor de Diretrio


O servio de diretrios fornece as seguintes operaes :
criar e deletar diretrios

61

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

nomear e renomear arquivos


mover arquivos de 1 diretrio para outro
Ele define algum alfabeto e sintaxe para compor nome de arquivo
Geralmente nomes de arquivos podem ter de 1 a um mximo de letras, nmeros e alguns
caracteres especiais. Nomes so formados por 2 partes separadas por um ponto, a
segunda parte chamada de extenso do arquivo e identifica o tipo do arquivo. Ex.:
prog.C , relatorio.doc, relatorio.txt
Todos os sistemas permitem que diretrios contenham subdiretrios para permitir ao
usurio grupar arquivos relacionados
Um Sistema de Arquivo Hierrquico aquele que possui uma rvore de diretrios, com
subdiretrios dentro de subdiretrios.
Ex.:
A

Em alguns sistemas possvel criar links ou ponteiros para um diretrio arbitrrio


possibilitando a criao de grafos de diretrios arbitrrios que so muito mais
poderosos do que diretrios em arvore. Ex.:
A

Quantidade de diretrios que


apontam para este diretrio

Mquina 01
2

Mquina 02

62

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Problema que pode ocorrer :


quando o link de A para B removido o contador de B passa para 1 e os diretrios B, D e
E passam a ser inacessveis via raiz do sistema. (diretrios rfos).
Soluo : parar toda a atividade do sistema de arquivos e atravessar o grafo comeando
da raiz marcando todos os diretrios acessveis e no final encontrando os
inacessveis.
1.2.1 - Transparncia de Nomeao
O principal problema com a forma de nomear que ela no totalmente tranparente.
Existem 2 formas de transparncia que so relevantes para a nomeao:
a) Transparncia de Localizao
Significa que o nome do caminho no d nenhuma dica de onde o arquivo esta
localizado.
Ex. um caminho como / servidor 1 / dir 1/ x indica que x est localizado no servidor 1
mas no diz onde o servidor 1 est localizado.
b) Independncia de Localizao
Caracterstica de um sistema de arquivos no qual arquivos podem ser movidos sem seus
nomes mudarem. No caso do item a o exemplo no independente de localizao
porque se o arquivo x for mudado de servidor. O seu caminho muda. Um sistema de
arquivos distribudo que coloca em seus nomes de caminho, a identificao das mquinas
ou nomes de servidores no independente de localizao.
- Existem 3 maneiras para nomear arquivos e diretrios num sistema distribudo que
so :
a) Maquina + nome do caminho, tal como: mquina / caminho ou mquina :
caminho.
b) Montagem de sistemas de arquivo remoto na hierarquia de arquivos locais.
c) Um nome que parece o mesmo em todas as mquinas.
Os 2 primeiros casos so fceis de implementar como um modo para conectar sistemas j
existentes que no foram projetados para uso distribudo. O ultimo caso difcil e requer
projeto cuidado.
1.2.2 - Nomeao em 2 nveis
Muitos sistemas distribudos usam alguma forma de nomeao de 2 nveis :
a) Nomes simblicos que so usados pelos usurios.
b) Nomes binrios representao interna utilizada pelo sistema
Os diretrios fornecem o mapeamento entre os dois nveis de nomeao,
Um esquema de nomeao mais geral ter um nome binrio que indica o servidor e o
arquivo especificado.

63

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Um link simblico uma entrada do diretrio que mapea em uma string um ( servidor,
nome arquivo ). Ele um nome de caminho.
1.3 - Semntica de compartilhamento de arquivo
Utilizado quando 2 ou mais usurios compartilham o mesmo arquivo para definir a
semntica de leitura e escrita para evitar problemas.
a) - Semntica Unix.
Muito usado em sistemas monoprocessadores, quando uma operao de read segue uma
operao de write o valor lido o valor que acabou de ser escrito. Quando 2 writes
ocorrem antes de 1 read o valor lido o valor alterado pelo ultimo write.
Em sistemas distribudos, esta semntica pode ser facilmente obtida quando existe
somente 1 servidor e clientes sem caching de arquivos. Todas as operaes de read e
write vo para o servidor de arquivo que os processa seqencialmente.
Para sistema distribudo este esquema sem caching muito ruim e ineficiente, por isto
necessitamos usar caching de arquivos para obter desempenho melhor e neste caso esta
semntica no funciona.
b) - Semntica de sesso
Para obter eficincia os clientes mantm copias locais de arquivos muito usados em suas
memrias cache. O ideal seria a cada alterao local de um arquivo imediatamente o
servidor tomaria conhecimento mas isto ineficiente, por isto uma regra muito usada
conhecida como semntica de sesso considera que mudanas num arquivo aberto s so
visveis pelo processo que o mudou.
Somente quando o arquivo fechado que ele se torna visvel para outros processos ou
mquinas. Isto significa que o servidor ficar com uma copia do arquivo desatualizada
temporariamente at que o cliente feche o arquivo e atualize o servidor.
No caso de 2 clientes modificarem o mesmo arquivo ao mesmo tempo, uma soluo
manter como resultado final o arquivo que fechou por ultimo.
c) - Arquivos Imutveis
Uma semntica para arquivos compartilhados em um sistema distribudo fazer todos os
arquivos imutveis. Deste modo somente as operaes criar e ler so possveis. Para
modificarmos um arquivo devemos troc-lo por um novo. O problema quando dois
processos tentam trocar o mesmo arquivo ao mesmo tempo. A melhor soluo permitir
a troca do arquivo pelo mais recente ou no deterministicamente.

64

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

d) - Transaes Atmicas
Para acessar um arquivo ou um grupo de arquivos, um processo primeiro executa algum
tipo de primitiva BEGIN TRANSACTION que sinaliza que o que se segue indivisvel,
o sistema ento l e/ou escreve em arquivos. Quando o trabalho esta completado uma
primitiva END TRANSACTION executada.
A propriedade principal deste mtodo a garantia do sistema que todas as chamadas
contendo transaes so executadas em ordem sem qualquer interferncia de outras
transaes concorrentes.
Um exemplo clssico onde transaes so usadas o sistema bancrio.
A figura abaixo apresenta um resumo dos quatro mtodos acima:

Mtodo
Semntica UNIX

Semntica Sesso

Arquivos Inumveis

Transaes

Significado
Toda operao num arquivo
imediatamente visvel para todos
os processos
Nenhuma mudana visvel para
outros processos at que o arquivo
fechado
Nenhuma atualizao possvel,
simplifica compartilhamento e
replicao
Todas as mudanas tem a
propriedade de tudo-ou-nada

65

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Implementao de Sistemas de Arquivos Distribudos


1 Utilizao de Arquivos
Propriedades observadas do sistema de arquivos :
Muitos arquivos so pequenos o que facilita a transferncia de arquivos entre servidor
e clientes.
Leitura muito mais comum do que a escrita.
Leitura e escrita so seqnciais.
Acesso randmico raro.
Muitos arquivos tem um tempo de vida pequeno, por este motivo uma boa idia
criar o arquivo no cliente, e guard-lo at seu cancelamento, evitando assim o trafego
desnecessrio entre servidor-cliente.
Compartilhamento de arquivo no comum, por isto o uso de caching no cliente e as
conseqncias da semntica de sesso tem bom desempenho.
Em mdia, processo usa somente poucos arquivos.
2 - Estrutura do Sistema
Em alguns sistemas (NFS) no existe distino entre um cliente e um servidor. Todas as
mquinas executam o mesmo software bsico, assim qualquer mquina pode oferecer
servio de arquivo.
Em outros sistemas os servidores de arquivo e de diretrio so apenas programas de
usurios de tal forma que o sistema pode ser configurado para executar software cliente e
servidor na mesma mquina ou no.
Por ltimo existem sistemas que clientes e servidores tem hardware e software distintos.
Uma 2 implementao aquela em que sistemas diferem de como os servios de arquivo
e diretrio esto estruturados.
Uma organizao combina os dois servios em um nico servidor.
Outra organizao manter os dois servios separados. Abrir um arquivo requer que o
servidor de diretrio mapea seu nome simblico em seu nome binrio (mquina + i
_node) para ento ser enviado ao servidor de arquivo que com este nome binrio executa
a leitura ou escrita do arquivo.
Considere como exemplo servidores de arquivo e diretrio separados. O cliente envia o
nome simblico para o servidor de diretrio que ento retorna o nome binrio que o
servidor de arquivo reconhece, mas a hierarquia de diretrio pode estar em vrios
servidores, como desenho abaixo :
a / b / c onde a entrada a est no servidor 1, b no servidor 2 e c no servidor 3,
sendo que c tem o arquivo com seu nome binrio.

66

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Existem 2 formas de acessar o arquivo procurado: no primeiro o cliente envia para o


servidor 1 que encontra a entrada a e devolve ao cliente informando que o restante do
caminho est no servidor 2. Este cliente envia o pedido para o servidor 2 que encontra o
sub-diretrio b e responde ao cliente que o restante do caminho est no servidor 3. Por
ltimo o cliente envia o pedido ao servidor3 que retorna o arquivo pedido.
A outra forma mais simples e automtica, os servidores vo automaticamente passando
o caminho para os outros que no final retornam ao cliente o arquivo desejado.
a

Procura a/b/c

DIR
servidor 1

cliente
b

Procura b/c

Procura c

DIR servidor
2

DIR
servidor 3
arquivo

a
Procura a/b/c

DIR
servidor 1

Procura b/c
b

cliente

DIR
servidor 2

Procura c
c

DIR
servidor 3

Resposta com c
arquivo

67

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Servidores stateless quando um cliente envia um pedido para o servidor, este responde
e remove todas as informaes sobre este pedido.
Servidores stateful guardam em tabelas internas informaes sobre todos os pedidos
executados pelos clientes.
Em servidores stateless os pedidos dos clientes devem ser completos e assim caso o
servidor falhe nenhuma informao pedida, mas as mensagens so maiores.
A tabela abaixo resume as vantagem e desvantagem dos dois tipos de servidores.

Vantagens dos servidores stateless


Tolerante a falhas
No necessita OPEN / CLOSE
Nenhum espao ocioso nas tabelas do servidor

Vantagens dos servidores stateful


Pedido de mensagens mais curtas
Melhor performance
Blocos podem ser lidos para frente para reduzir
atrasos

Nenhum limite no nmero de arquivos abertos

3 - Caching
Caching no servidor quando os arquivos mais usados so guardados na memria do
servidor para evitar a transferncia do disco para a memria. Este tipo de caching evita a
transferncia disco-memria mas no evita a transferncia via rede por isto uma
alternativa para melhorar o desempenho utilizar caching no cliente.
Pode-se ter 3 opes de caching :

colocar cache dentro de cada processo ;

colocar cache dentro do ncleo ;


colocar um gerente de cache como um processo do usurio.
O nmero de RPC sempre maior quando se usa caching. Nas situaes em que RPCs
so rpidos e rede so lentas (CPU rpida e rede lenta) , existe um ganho de desempenho
grande. Se a transferncia de rede rpida, o tempo de transferncia ser bem menor mas
o tempo gasto em executar RPCs reduz o desempenho global.
3.1 - Consistncia de Cache
Caching no cliente introduz inconsistncia dentro do sistema. Se dois clientes
simultneamente lem o mesmo arquivo e ento ambos o modificam, vrios problemas
podem ocorrer. Se um terceiro l do servidor o arquivo ele vai estar desatualizado mas
estar cumprindo a semntica de sesso. Se o usurio espera a semntica UNIX o sistema
no funciona.
Quando os dois clientes retornam os arquivos para o servidor, o ltimo sobrepe o
primeiro.

68

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Para resolver o problema de caching temos as seguintes solues :


algoritmo write through - quando uma entrada de cache modificada, o novo valor
guardado na cache mas tambm imediatamente enviado para o servidor, assim quando
outro processo l o arquivo ele obtm o valor mais recente.
Problemas: na mquina 1 um processo A l o arquivo e guarda na sua cache, na
mquina 2 um processo B l o arquivo modifica e retorna ao servidor o arquivo
atualizado. Quando um processo C na mquina 1 quer ler o mesmo arquivo como este
j est na sua memria cache ele usa-o sem pedir ao servidor arquivo desatualizado.
algoritmo write-on-close - somente escreve no arquivo e o envia ao servidor aps
ele ser fechado.
algoritmo escrita atrasada - ao invs de enviar ao servidor aps uma escrita o cliente
avisa que est atualizando o arquivo e o envia uma vez a cada 30 segundos, por exemplo.
algoritmo controle centralizado - quando um arquivo aberto o servidor de arquivo
avisado. O servidor de arquivo guarda a informao de quem abriu o arquivo e se as
operaes sobre ele so de leitura ou escrita.
Se a operao de leitura o servidor permite que os outros processos abram o mesmo
arquivo para leitura, mas se a operao de escrita os outros processos so impedidos de
abrir o mesmo arquivo at que a escrita esteja terminada.

4 - Replicao
Sistema de arquivos distribudos fornecem replicao de arquivo como um servio para
seus clientes.
Mltiplas cpias so mantidas, com cada cpia num servidor de arquivo separado.
Motivos de tal servio so:
Aumentar a confiabilidade tendo backups independentes de cada arquivo. Se um
servidor cae, nenhum dado perdido.
Permitir que acesso a arquivo ocorra mesmo se um servidor esteje danificado. Um
crash de um servidor no afeta o sistema como um todo.
Dividir a carga em mltiplos servidores. Quando o sistema cresce em tamanho, um
servidor s pode se tornar o gargalo do sistema. O uso de mltiplos servidores
executa o balanceamento de carga.
Quando o sistema executa a replicao sem o conhecimento do usurio dito que existe
transparncia de replicao.

69

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

Existem 3 formas de se executar replicao:


a) O programador controla o processo inteiro. Quando ele deseja varias cpias, o
endereo de rede de todas as cpias so associados com o nome do arquivo.
Ex.:
1
S1

Servidores

S2
3
S3

Prog.c

1.21

2.43

3.41

cliente
nome simblico

endereos binrios para as


mquinas S1, S2, S3

b) Replicao lazy aqui somente uma cpia de cada arquivo criada em algum
servidor. Mais tarde o servidor faz ele prprio replicas em outros servidores sem o
conhecimento do programador.
Mais tarde

Agora

S2

S1

Mais tarde

S3

c) Replicao de arquivo usando comunicao em grupo neste esquema todos os


writes so simultaneamente transmitidos para todos os servidores de uma s vez,
assim todas as cpias so atualizadas ao mesmo tempo que o arquivo original.

70

Sistemas Operacionais Sistemas Distribudos

Prof. Maringela Loureiro Silva

4.1 - Protocolos Atualizados


Algoritmos para atualizar cpias de arquivos so mostrados abaixo:
a) replicao de cpia principal um servidor escolhido como o principal todos os
outros so secundrios. Quando um arquivo replicado atualizado a mudana
enviada para o servidor principal que faz a mudana e envia aos secundrios.
b) Votao a idia bsica forar o cliente a pedir permisso a mltiplos servidores
antes de ler ou escrever num arquivo replicado.
Ex.: existem N servidores, o cliente deve contactar ao menos N/2 + 1 servidores
e pedir autorizao para executar a alterao, uma vez que eles concordem o cliente
executa a alterao e atribui um nmero de verso ao arquivo. Para ler um arquivo
o cliente pede a pelo menos N/2 + 1 servidores que enviem o nmero da verso do
arquivo e ele escolhe o mais recente.

71