Escolar Documentos
Profissional Documentos
Cultura Documentos
UFRGS
Mo d e lo s d e S is te m a s
D is tribu íd o s
O Mo d e lo Clie n te -S e rv id o r
Au to r 1ª v e rs ã o
Cristiano A. Costa
Lo c a l
II - UFRGS
Re v is õ e s
V8
2009-2
C. Geyer
Ro te iro
Co m p a ra ç ã o e n tre o Mo d e lo OS I e o Clie n te -Servidor
Clientes e Servidores
Ex e m p lo d e Clie n te e S e rv id o r
Endereçamento
Outros modelos e questões de sw
P rim itiv a s blo qu e a n te s e n ã o -bloqueantes
Bufferização
Confiabilidade
Qu e s tõ e s d e Im p le m e n ta ç ã o
Mo d e lo s d e S D s
Ou m o d e lo s d e a rqu ite tu ra d e S D s
D e fin e a s p a rte s (m ó d u lo s , c o m p o n e n te s , ...)
Caracteriza cada parte de forma abstrata
Posicionamento das partes
Interação entre elas
Exemplos de modelos
Cliente / servidor
P 2P
Variações
Uso de replicação
Uso de mobilidade de código e/ou dados
Uso de cache
Dinamicidade: inclusão e exclusão de partes
O Mo d e lo OS I n ã o é p e rfe ito p a ra S is te m a s
D is tribu íd o s
Overhead causado por vários protocolos
N ã o d iz c o m o u m S .O. D is tribu íd o d e v e s e r
estruturado
Observação
Modelo OSI:
Modelo padrão para redes de computadores
Define as camadas dos protocolos de redes
[TAN 1992]: 2o ca p. de SD
Tópico de disciplinas do setor de redes
O Mo d e lo OS I n ã o é p e rfe ito p a ra S is te m a s
D is tribu íd o s
N o rm a lm e n te S .O.D . u s a m p a rte d a s
camadas
N ã o d iz c o m o u m S .O. D is tribu íd o d e v e s e r
estruturado
Modelo Cliente-Servidor
Mo d e lo Clie n te /S e rv id o r
Um dos modelos mais citados e usados
Prós
Simplicidade
Eficiência (em muitos casos)
Contras
Perde em escalabilidade
Perde em TF
Obs.: conforme caso
Mo d e lo Clie n te /S e rv id o r
Partes
Clientes
Ciclo de vida próprio individual
Usualmente não permanente
Disparado por usuários quando necessário
Eventualmente necessitam um serviço de um
servidor
Usualmente um programa sequencial
Conhece o servidor
Con h ece o ser viço ofer ecido (oper a ções)
Frequentemente em grande número
Indeterminado, variável
Mo d e lo Clie n te /S e rv id o r
Partes
Servidor
Ciclo de vida “permanente”
Frequentemente um programa concorrente
Multithreaded
Oferece várias operações aos clientes
Uma interface pública
Nome ou código da operação
Argumentos
Resultados
Usualmente não conhece clientes
Mo d e lo Clie n te /S e rv id o r
Interação (cont.)
Ser vidor est á esper a n do u m a r equ isiçã o de a lgu m
cliente
Por exemplo, via um receive
Servidor
Verifica a operação
Tr a t a (execu t a ) a oper a çã o com os a r gu m en t os
Prepara uma resposta (resultado)
Servidor
Envia a resposta
Por exemplo, via um send
Mo d e lo Clie n te /S e rv id o r
Variações
Um servidor pode ser cliente de outros servidores
Um cliente pode acessar vários servidores
Mo d e lo Clie n te /S e rv id o r
Gru p o d e p ro c e s s o s qu e c o o p e ra m e n tre s i:
(Servidores) oferecem serviços para usuários (Clientes)
Protocolo normalmente utilizado:
Request/Reply
Sem Conexão Exemplo: UDP
Simples
Request
Cliente Servidor
Reply
Kernel Kernel
Rede
Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 13
Informática Clientes e Servidores
UFRGS
Mo d e lo Clie n te /S e rv id o r
Clientes e Servidores rodam o mesmo microkernel
A m e n s a g e m d e re s p o s ta (n ív e l d a a p lic a ç ã o ) p o d e
servir como ack (do protocolo de rede)
P o r s e r u m p ro to c o lo s im p le s , é ta m bé m e fic ie n te
Request
Cliente Servidor
Reply
Kernel Kernel
Rede
Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 14
Informática Clientes e Servidores
UFRGS
Mo d e lo Clie n te /S e rv id o r
A p ilh a d e p ro to c o lo s é m e n o r
S ã o n e c e s s á rio s trê s n ív e is d e p ro to c o lo
(em máquinas idênticas) Camada
5 Request/Reply
2 Enlace de dados
1 Física
Mo d e lo Clie n te /S e rv id o r
A p ilh a d e p ro to c o lo s é m e n o r
S ã o n e c e s s á rio s trê s n ív e is d e p ro to c o lo
(em máquinas idênticas) Camada
2 Enlace de dados
implementadas em hardware
1 Física
Mo d e lo Clie n te /S e rv id o r
As camadas física e de enlace de dados são
responsáveis por enviar e receber pacotes entre
cliente e servidor (redes) Camada
A camada 5 define um
7
conjunto de respostas e
requisições permitidas 6
Os s e rv iç o s d e c o m u n ic a ç ã o
5 Request/Reply
são implementados através
de chamadas do sistema 4
(system calls)
3
2 Enlace de dados
1 Física
Em s is te m a s la rg a m e n te d is tribu íd o s (S LD )
Ex e m p lo s d e S LD : In te rn e t, P 2P, Grade, ...
As fa lh a s d e re d e s ã o (m a is ) fre qü e n te s
É re c o m e n d á v e l u s a r p ro to c o lo s m a is c o n fiá v e is
Por exemplo, com conexão
Ou usar procotolos menos confiáveis mas implementar
em nível de aplicação certos controles mínimos
Essa recomendação é dependente do tipo de aplicação
(ou comunicação)
P or exem plo, com u n ica ções de in for m a çã o,
periódicas, podem fazer uso de protocolos não
confiáveis
S is te m a s C/S c o m a c e s s o a ba s e s d e d a d o s
Mu ito s (m a io ria ?) d o s s is te m a s (a p lic a ç õ e s ) a tu a is
acessam bases de dados no lado servidor
Bases de dados:
sist em a s de a r qu ivos, SGBD, LDAPs, bancos de dados
de objet os (r epr esen t a ções, im a gen s, á u dio, vídeos, ...)
S is te m a s C/S c o m a c e s s o a ba s e s d e d a d o s
Mo d e lo C/S é e s te n d id o p a ra m o d e lo d e s is te m a
multi-camadas
S e g u n d o [TAN , S D , 2002]: sistemas em 3 camadas
Cliente
Interface com usuário (user interface)
Servidor de aplicações
Camada de processamento
Servidor da base de dados
Camada de dados
Ex e m p lo d e Clie n te e S e rv id o r
S e rá a p re s e n ta d o u m e s bo ç o d e
um cliente e
um servidor de arquivos em C.
Composto de três programas
header.h:
arquivo utilizado pelo cliente e pelo servidor para
com pa r t ilh a r a lgu m a s defin ições
sample.c:
exemplo de servidor
procedure.c:
exemplo de procedimento (cliente) que utiliza o
servidor para copiar um arquivo
Ex e m p lo d e Clie n te e S e rv id o r
S e rv id o r: qu a tro o p e ra ç õ e s d e fin id a s
CREATE: cria um novo arquivo
READ: lê pedaço de arquivo
WRITE: escreve pedaço de arquivo
DELETE: apaga arquivo existente
Cliente:
Copia arquivo 1 para arquivo 2
Usando
uma lógica interna
e mais um conjunto de chamadas às
operações
Ex e m p lo d e Clie n te e S e rv id o r
Uso de Primitivas de send/receive
bloqueantes e
tamanho de mensagens constante
Send
Primeiro argumento: destino
Segundo argumento: mensagem
Receive
1º arg: próprio (recebedor ou destino)
2º arg: mensagem
Mensagem
Pode ser uma estrutura
Diversos tipos de dados combinados
Arqu iv o s
Header.c
Define formatos (dados, ...) e constantes comuns ao
programa servidor e aos programas clientes
Por exemplo:
Endereço na rede do servidor
Tamanho máximo de 1 mensagem
...
Arqu iv o s (c o n t.)
Sample.c
Código do servidor
Loop infinito
Recebe m en sa gem (pedido) do clien t e
Identifica tipo do pedido
Processa pedido
Responde ao cliente
Procedure.c
Código do cliente
Loop até que leitura retorne nada
Le pedaço do arquivo 1
Limitado pelo tamanho da mensagem
Grava pedaço no arquivo 2
h ea d er .h
h ea d er .h (c o n tin u a ç ã o )
/*Códigos de erro*/
#define OK 0 /*operação feita corretamente*/
#define E_BAD_OPCODE -1 /*operação inexistente*/
#define E_BAD_PARAM -2 /*erro em algum parâmentro*/
#define E_IO -3 /*erro de E/S*/
h ea d er .h (c o n tin u a ç ã o )
sa m p l e.c (ser v i d or )
#include <header.h>
void main(void)
{
struct message m1,m2; /* áreas p/mensagens */
int r; /* área p/respostas */
#include <header.h>
int copy(char *src, char *dst)
{
struct message m1; /* mensagem ao/de servidor */
long position; /* posição de leitura */
long client = 110; /* quem envia */
initialize();
position = 0; /* inicia leitura no 1o byte */
do {
/*Lê um bloco de dados do arquivo origem*/
m1.opcode = READ; /* prepara mensagem */
m1.offset = position; /* 1o byte:
ajustado por read */
m1.count = BUf_SIZE; /* quantos bytes */
strcpy (&m1.name, src); /* nome arq. */
send(FILE_SERVER, &m1); /* envia req. */
receive(client, &m1); /* recebe resp. */
En d e re ç a m e n to d e s e rv id o re s
U m c lie n te p a ra m a n d a r u m a m e n s a g e m a u m
servidor precisa saber o endereço
Ou nomeação
Ex is te m v á ria s fo rm a s d e e n d e re ç a m e n to
Principais destacados:
E n der eça m en t o por n ú m er o de m á qu in a
Endereçamento por processo
E n der eça m en t o por n om es ASCII obt idos de u m
name server
En d e re ç a m e n to p o r n ú m e ro d e m á qu in a
U tiliza o n ú m e ro d a m á qu in a p a ra e n d e re ç a m e n to
um processo por máquina
não é transparente
simplicidade
Viável em sistemas simples
1
Cliente Servidor
2
Kernel Kernel
1. Request para 243
2. Reply para 199
Rede
simplicidade
mais de um processo por máquina
não precisa de coordenação global
(n ã o h á a m big ü id a d e e n tre p ro c e s s o s )
1
Cliente Servidor
2
1. Request para 243.0 Kernel Kernel
Rede
En d e re ç a m e n to p o r p ro c e s s o
As s o c ia r a c a d a p ro c e s s o u m e n d e re ç o ú n ic o qu e n ã o
c o n té m o n ú m e ro d a m á qu in a
D u a s a lte rn a tiv a s p a ra e s c o lh a d o n ú m e ro d o
processo:
Garantir números distintos
A1: P r ocesso cen t r a liza do r espon sá vel pela a loca çã o de
endereços (contador incrementado a cada requisição)
Transparência
Escalabilidade
A2: Cada processo pega seu próprio endereço
aleatóriamente de um grande espaço de dados
Transparência
Escalabilidade
Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 37
Informática Endereçamento por processo
UFRGS
En d e re ç a m e n to p o r p ro c e s s o
o cliente pode fazer broadcast de um pacote especial
para localização (locate packet)
o k e rn e l qu e c o n té m o p ro c e s s o d e v o lv e u m a
mensagem do tipo here I am
Transparência
Gera carga extra no sistema
3
Cliente Servidor
1. Broadcast
4
2. Here I am
Kernel Kernel
3. Request
1 2
4. Replay
Rede
En d e re ç a m e n to p o r n a m e ser v er
U tiliza u m a m á qu in a e x tra p a ra m a p e a r n o m e s d e
serviços em endereços de máquinas
Servidores são referidos como strings e estas são
embutidas nos programas
Transparente
Requer um componente centralizado
3 1
1. Lookup Server Client Name
Server
2. NS Reply 4 2
3. Request Kernel Kernel Kernel
4. Replay
Rede
Re s u m o Clie n te /S e rv id o r
Conceito
Prós e contras
Características do cliente
Características do servidor
Exemplo
Servidor de arquivos
Cliente: cópia de 1 arquivo
Re s u m o Clie n te /S e rv id o r
Endereçamento
Conceito, e prós e contras de:
Por máquina (IP)
Por máquina e processo (porta)
Por nome de processo único global
Com broadcast
Com servidor de nomes
Tra ta m e n to m a is a p ro fu n d a d o d e
qu e s tõ e s v is ta s e m Tro c a d e
Me n s a g e n s
P rim itiv a s B lo qu e a n te s (s ín c ro n a s )
no send, enquanto a mensagem está sendo enviada, o
processo fica bloqueado
o receive fic a blo qu e a d o a té qu e a lg u m a m e n s a g e m
chegue ou até um timeout
P rim itiv a s N ã o -B lo qu e a n te s (a s s ín c ro n a s )
o send retorna o controle imediatamente, antes da
mensagem ser realmente enviada
o receive passa para o kernel o ponteiro para o
buffer e retorna imediatamente, antes de receber a
mensagem
em algumas abordagens o receive não-bloqueante é
a qu e le qu e s ó re c e be qu a n d o já e x is te m m e n s a g e n s e
fic a blo qu e a d o a té c o m p le ta r a re c e p ç ã o , s e n ã o
retorna
Simples de entender
Simples de implementar
Performance para envio de mensagem
CP U fica ociosa du r a n t e a t r a n sm issã o
An d re w s
U m a p rim itiv a s ín c ro n a é a qu e la e m qu e o p ro c e s s o
que envia fica bloqueado até que o
receptor aceite a mensagem e
mande um ack. Qualquer outra
alternativa é considerada
assíncrona
preferida por projetistas de
linguagens de programação
Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 47
Informática Bufferização
UFRGS
Cliente Endereço
Servidor
A
refere-se a
processo
Kernel Kernel
Rede
Cliente Servidor
A
Kernel Kernel
Rede
Cliente
Endereço Servidor
reduz ainda mais a refere-se a
mailbox
chance de mensagens
Kernel A Kernel
serem descartadas
mailboxes são finitas e
podem necessitar de
estratégias análogas as
Rede
adotadas anteriormente
1
1. Request Cliente 3 Servidor
2. Ack
3. Reply 4
4. Ack Kernel Kernel
2
Re qu e s t - Re p ly - Ac k
O Reply serve como um ack
o c lie n te fic a blo qu e a d o a té a m e n s a g e n d e reply
se a mensagem de reply demorar, o cliente reenvia a
requisição
e m a lg u n s k e rn e ls n ã o é n e c e s s á rio o ack
1
Cliente 2 Servidor
3
Kernel Kernel
1. Request
2. Reply
3. Ack
Alte rn a tiv a s d e p ro je to :
por nomes ASCII
Endereçamento por número de por processo obtidos de um name
máquina server
primitivas não- primitivas não-
Bloqueante primitivas bloqueantes bloqueantes com cópia bloqueantes por
interrupção
não-bufferizado, não-bufferizado,
Bufferização discartando temporariamente mailboxes
mensagens mantendo mensagens
To ta l d e 81 c o m bin a ç õ e s
As re d e s tê m u m ta m a n h o m á x im o d e p a c o te ,
m e n s a g e n s m a io re s d e v e m s e r qu e bra d a s
O a ck n ow l ed g m en t p o d e s e r u tiliza d o p o r
p a c o te o u p o r m e n s a g e m , d e p e n d e n d o d a ta x a
d e e rro s d a re d e
P a c o te s n or m a l m en t e e m p re g a d o s n o p ro to c o lo
d e c o m u n ic a ç ã o :
REQ Request Cliente Servidor O cliente quer serviço
REP Reply Servidor Cliente Resposta do servidor para cliente
ACK Ack Cli./Ser. Outro O pacote anterior chegou
AYA Are you alive? Cliente Servidor Verifica se o servidor está Ok
IAA I am alive Servidor Cliente O servidor está Ok
TA Try Again Servidor Cliente O servidor não tem espaço
AU Addr. Servidor Cliente Nenhum processo usa o endereço
Unknown
Alg u n s e x e m p lo s d e c o m u n ic a ç ã o :
REQ >
REQ > < ACK
Cliente Servidor Cliente < REP Servidor
< REP ACK >
(a) (b)
REQ >
REQ > < ACK
< REP AYA >
Cliente Servidor Cliente Servidor
ACK > < IAA
< REP
ACK >
(c) (d)
O Mo d e lo c lie n te -s e rv id o r u tiliza u m p ro to c o lo
s im p le s e d e fá c il im p le m e n ta ç ã o
P o r s e r s im p le s e s e m c o n e x ã o , o p ro to c o lo é
ta m bé m e fic ie n te
To d a s a s c o m u n ic a ç õ e s n o m o d e lo s ã o
c o n s tru íd a s a tra v é s d e p rim itiv a s d e E/S
Re v is ã o
defina modelo C/S
quais são as vantagens?
v a ria ç õ e s a tu a is d o m o d e lo C/S ?
fo rm a s d e lo c a liza ç ã o d o s e rv id o r p e lo c lie n te ?
conceito?
vantagens e desvantagens?