You are on page 1of 44

Informtica UFRGS

por

Cris tia n o An d r d a Co s ta

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 1

Informtica UFRGS

Autoria

Autor

Cristiano A. Costa

Local

II - UFRGS

PPGCC - disciplina de sistemas operacionais

ano: 1995

Revises

1997-2004, C. Geyer

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 2

Informtica UFRGS

Roteiro

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

Endereamento

Primitivas bloqueantes e no-bloqueantes

Bufferizao

Confiabilidade

Qu e s t e s d e Im p le m e n ta o
O Modelo Cliente Servidor 3

Curso de Sistemas Operacionais Distribudos

Informtica UFRGS

Comparao com o Modelo OSI

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 vrios 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 e s tru tu ra d o

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 4

Informtica UFRGS

Comparao com o Modelo OSI

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 vrios protocolos N o rm a lm e n te S .O.D . u s a m p a rte d a s c a m a d a s

N o d iz c o m o u m S .O. D is tribu d o d e v e s e r e s tru tu ra d o Modelo Cliente-Servidor

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 5

Informtica UFRGS

Clientes e Servidores

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 servios para usurios (Clientes)

Protocolo normalmente utilizado:

Request/Reply
Request Cliente Reply Kernel Kernel Servidor

Sem Conexo

Simples

Rede
O Modelo Cliente Servidor 6

Curso de Sistemas Operacionais Distribudos

Informtica UFRGS

Clientes e Servidores

Clientes e Servidores rodam o mesmo microkernel

A m e n s a g e m d e re s p o s ta p o d e s e rv ir c o m o ack

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 Reply Kernel Kernel Servidor

Rede
O Modelo Cliente Servidor 7

Curso de Sistemas Operacionais Distribudos

Informtica UFRGS

Clientes e Servidores

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 mquinas idnticas)


Camada 7 6 5 4 3 2 1 Enlace de dados Fsica
O Modelo Cliente Servidor 8

Request/Reply

Curso de Sistemas Operacionais Distribudos

Informtica UFRGS

Clientes e Servidores

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 mquinas idnticas)


Camada 7 6 5 4 3 2 1 Enlace de dados Fsica
O Modelo Cliente Servidor 9

implementada em software

Request/Reply

implementadas em hardware

Curso de Sistemas Operacionais Distribudos

Informtica UFRGS

Clientes e Servidores

As c a m a d a s fs ic a e d e e n la c e d e d a d o s s o re s p o n s v e is por enviar e receber pacotes entre cliente e servidor

A camada 5 define um conjunto Camada de respostas e requisies permitidas 7


6 5 4 3 2 1 Enlace de dados Fsica
O Modelo Cliente Servidor 10

Os s e rv i o s d e c o m u n ic a o so implementados atravs de chamadas do sistema (system calls)

Request/Reply

Curso de Sistemas Operacionais Distribudos

Informtica UFRGS

Clientes e Servidores

Em s is te m a s la rg a m e n te d is tribu d o s (S LD )

Exemplos de SLD: Internet, P2P, Grade, ...

As falhas de rede so freqentes

recomendvel usar protocolos mais confiveis Por exemplo, com conexo Ou usar procotolos menos confiveis mas implementar em nvel de aplicao certos controles mnimos

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 11

Informtica UFRGS

Clientes e Servidores

Sistemas C/S com acesso a bases de dados

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

B a s e s d e d a d o s : s is te m a s d e a rqu iv o s , S GB D , LDAPs, bancos de dados de objetos (representaes, imagens, udio, vdeos, ...)

Modelo C/S estendido para modelo de sistema multi-camadas

S e g u n d o [TAN S D 2002]: s is te m a s e m 3 c a m a d a s Interface com usurio (user interface) Camada de processamento Camada de dados

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 12

Informtica UFRGS

Exemplo de Cliente e Servidor

S e r a p re s e n ta d o u m e s bo o d e u m c lie n te e u m s e rv id o r de arquivos em C.

Composto de trs programas

header.h, arquivo utilizado pelo cliente e pelo servidor p a ra c o m p a rtilh a r a lg u m a s d e fin i e s

sample.c, exemplo de servidor

procedure.c, exemplo de procedimento (cliente) que utiliza o servidor para copiar um arquivo

Qu a tro o p e ra e s d e fin id a s

Primitivas de send/receive bloqueantes e tamanho de mensagens constante


O Modelo Cliente Servidor 13

Curso de Sistemas Operacionais Distribudos

Informtica UFRGS

Exemplo de Cliente e Servidor

header.h

/*Definies necessrias pelos clientes e servidores */ 255 1024 243 /*tamanho maximo de arq*/ /*dados transferidos*/ /* endereo do servidor*/

#define MAX_PATH

#define BUF_SIZE

#define FILE_SERVER

/*Definies de operaes permitidas*/ 1 2 3 4 /*cria um novo arquivo*/ /*l pedao de arquivo*/ /*escreve pedao de arquivo*/ /*apaga arquivo existente*/

#define CREATE

#define READ

#define WRITE

#define DELETE

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 14

Informtica UFRGS

Exemplo de Cliente e Servidor

header.h (continuao)

/*Cdigos de erro*/ 0 -1 -2 -3 /*erro de E/S*/ /*operao feita corretamente*/ /*operao inexistente*/ /*erro em algum parmentro*/

#define OK

#define E_BAD_OPCODE

#define E_BAD_PARAM

#define E_IO

/*Definio do formato da mensagem*/ /*identificador da origem*/ /*identificador do destino*/

struct message {

long source;

long dest;

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 15

Informtica UFRGS

Exemplo de Cliente e Servidor

header.h (continuao)
/*qual operao*/ /*quantidade de bytes*/ /*onde no arq. comea a oper.*/ /*campo extra*/ /*campo extra*/ /*resultado da operao*/ /*nome do arquivo*/ /*dados lidos ou p/ escrever*/

long opcoe;

long count;

long offset;

long extra1;

long extra2;

long result;

char name[MAX_PATH];

char data[BUF_SIZE];

};

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 16

Informtica UFRGS

Exemplo de Cliente e Servidor

sample.c

#include <header.h>

void main(void)

struct message m1,m2;

int r;

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 17

Informtica UFRGS

Exemplo de Cliente e Servidor

sample.c (continuao)

while (1){

receive(FILE_SERVER,&m1); r = do_create(&m1,&m2); break; r = do_read(&m1,&m2); break; r = do_write(&m1,&m2); break; r = do_delete(&m1,&m2); break; r = E_BAD_OPCODE;

switch(m1.opcode) {

case CREATE:

case READ:

case WRITE:

case DELETE:

default:

m2.result = r;

send(m1.source, &m2);

} }
O Modelo Cliente Servidor 18

Curso de Sistemas Operacionais Distribudos

Informtica UFRGS

Exemplo de Cliente e Servidor

procedure.c

#include <header.h>

int copy(char *src, char *dst)

struct message m1;

long position;

long client = 110;

initialize();

position = 0;

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 19

Informtica UFRGS

Exemplo de Cliente e Servidor

procedure.c (continuao)

do {

/*L um bloco de dados do arquivo origem*/

m1.opcode = READ;

m1.offset = position;

m1.count = BUf_SIZE;

strcpy (&m1.name, src);

send(FILE_SERVER, &m1);

receive(client, &m1);

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 20

Informtica UFRGS

Exemplo de Cliente e Servidor

procedure.c (continuao)

/*grava um bloco de dados no arquivo destino*/

m1.opcode = WRITE;

m1.offset = position;

m1.count = m1.result;

strcpy (&m1.name, dst);

send(FILE_SERVER, &m1);

receive(client, &m1);

position += m1.result;

}while (m1.result > 0);

return(m1.result >= 0 ? OK : m1.result);

}
O Modelo Cliente Servidor 21

Curso de Sistemas Operacionais Distribudos

Informtica UFRGS

Endereamento

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 s e rv id o r precisa saber o endereo

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:

Endereamento por nmero de mquina

Endereamento por processo

En d e re a m e n to p o r n o m e s AS CII o btid o s d e u m name server

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 22

Informtica UFRGS

Endereamento por nmero de mquina

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 mquina

no transparente

simplicidade

1 Cliente 2 Kernel Kernel Servidor

1. Request para 243

2. Reply para 199


Rede

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 23

Informtica UFRGS

Endereamento por nmero de mquina

Pode-s e u tiliza r u m a c o m bin a o e n tre n m e ro d a m qu in a e n m e ro d o p ro c e s s o

no transparente

simplicidade

mais de um processo por mquina

no precisa de coordenao global (n o h a m big id a d e e n tre p ro c e s s o s )


1 Cliente 2 Kernel Kernel Servidor

1. Request para 243.0

2. Replay para 199.4


Rede

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 24

Informtica UFRGS

Endereamento por processo

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 p ro c e s s o :

Processo centralizado responsvel pela alocao de endereos (contador incrementado a cada requisio)

Transparncia Escalabilidade

Cada processo pega seu prprio endereo aleatriamente de um grande espao de dados

Transparncia Escalabilidade

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 25

Informtica UFRGS

Endereamento por processo

o cliente pode fazer broadcast de um pacote especial para localizao (locate packet)

o kernel qu e c o n t m o p ro c e s s o d e v o lv e u m a m e n s a g e m do tipo here I am

Transparncia
3 Cliente 4 Kernel 1 2 Rede Kernel Servidor

Gera carga extra no sistema

1. Broadcast

2. Here I am

3. Request

4. Replay

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 26

Informtica UFRGS

Endereamento por name server

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 servios em endereos de mquinas

servidores so referidos como strings e estas so embutidas nos programas

Transparente

Requer um componente centralizado 3 Servidor Cliente 1. Lookup

1
Name Server

2. NS Reply

4
Kernel Kernel

2
Kernel

3. Request

4. Replay

Rede
O Modelo Cliente Servidor 27

Curso de Sistemas Operacionais Distribudos

Informtica UFRGS

Primitivas bloqueantes e no-bloqueantes

Primitivas Bloqueantes (sncronas)

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 c h e g u e ou at um timeout

Primitivas No-Bloqueantes (assncronas)

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 no-bloqueante aquele 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 re to rn a

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 28

Informtica UFRGS

Primitivas bloqueantes

O p ro c e s s o fic a blo qu e a d o d u ra n te a tra n s fe r n c ia d e mensagem

Me lh o r o p o p a ra e n v io d e m e n s a g e n s e m c o n d i e s normais

Simples de entender

Simples de implementar

Performance para envio de mensagem

CPU fica ociosa durante a transmisso

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 29

Informtica UFRGS

Primitivas no-bloqueantes

Primitivas no-bloqueantes com cpia

o kernel copia a mensagem para um buffer interno e ento libera o processo para continuar

Performance

Sobrepor processamento e transmisso de mensagens

Primitivas no-bloqueantes com interrupo

interrompe o processo que enviou a mensagem quando o buffer estiver livre para reutilizao

Programao Difcil

Performance

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 30

Informtica UFRGS

Primitivas sncronas e assncronas

Tanenbaum

A diferena essencial entre uma primitiva sncrona e uma assncrona se o processo que envia a mensagem pode reutilizar o buffer imediatamente aps o comando send

preferida por projetistas de sistemas operacionais

Andrews

Uma primitiva sncrona aquela em que o processo que e n v ia fic a blo qu e a d o a t qu e o re c e p to r a c e ite a m e n s a g e m e mande um ack. Qualquer outra alternativa considerada assncrona

preferida por projetistas de linguagens de programao

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 31

Informtica UFRGS

Bufferizao

Primitivas no-bufferizadas

O buffer para armazenar a mensagem deve ser especificado pelo programador

Existem duas estratgias a serem empregadas no caso de um send do cliente, sem um receive do servidor: discartar mensagens inesperadas temporariamente manter mensagens inesperadas

Primitivas bufferizadas

Existe um buffer para armazenar mensagens inesperadas

A primitiva de bufferizao mais empregada define estruturas de dados chamadas mailbox

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 32

Informtica UFRGS

Bufferizao

Primitivas no-bufferizadas discartando mensagens

Implementao

O cliente pode ficar retentando enviar mensagens

Podem ocorrer casos em que o cliente desista de enviar a mensagem

Primitivas no-bufferizadas temporariamente mantendo mensagens Endereo


Cliente

reduz a chance da mensagem ser descartada


Kernel

refere-se a processo

Servidor

introduz problema de gerenciamento e armazenamento de mensagens inesperadas

Kernel

Rede

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 33

Informtica UFRGS

Bufferizao

Primitivas bufferizadas: Mailboxes

U m p ro c e s s o qu e e s t in te re s s a d o e m re c e be r m e n s a g e n s avisa o kernel para criar uma mailbox informando o endereo de origem das mensagens

Todas as mensagens so colocadas na mailbox e uma chamada a receive simplesmente remove mensagens dela

reduz ainda mais a chance de mensagens serem descartadas


Cliente Kernel

Endereo refere-se a mailbox


A

Servidor

mailboxes so finitas e podem necessitar de estratgias anlogas as adotadas anteriormente

Kernel

Rede

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 34

Informtica UFRGS

Confiabilidade

Tr s d ife re n te s a lte rn a tiv a s p o d e m s e r u tiliza d a s p a ra questes de confiabilidade:

a s s u m ir qu e a s p rim itiv a s n o s o c o n fi v e is , a lte ra n d o a semntica do send o sistema no garante que as mensagens so enviadas o usurio fica responsvel por implementar comunicao confivel

primitivas confiveis com mecanismos de acknowledgment do tipo: Request - Ack - Reply - Ack

primitivas confiveis com mecanismos de acknowledgment do tipo: Request - Reply - Ack

combinaes podem ser obtidas entre os mecanismos confiveis

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 35

Informtica UFRGS

Confiabilidade

Request - Ack - Reply - Ack

somente quando o Ack recebido, o processo liberado

o acknowledgement feito entre kernels (transparente para o cliente ou servidor)

um request/reply com este mecanismo necessita de quatro mensagens


1 Cliente 3 4 Kernel 2 Kernel Servidor

1. Request 2. Ack 3. Reply 4. Ack


O Modelo Cliente Servidor 36

Curso de Sistemas Operacionais Distribudos

Informtica UFRGS

Confiabilidade

Request - Reply - Ack

O Reply serve como um ack

o cliente fica bloqueado at a mensagen de reply

se a mensagem de reply demorar, o cliente reenvia a requisio

em alguns kernels no necessrio o ack


1 Cliente 2 3 Kernel Kernel Servidor

1. Request 2. Reply 3. Ack

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 37

Informtica UFRGS

Questes de Implementao

Alternativas de projeto:
por nmero de mquina primitivas bloqueantes por processo

Endereamento

Bloqueante

Bufferizao

no-bufferizado, discartando mensagens no-confiveis

por nomes ASCII obtidos de um name server primitivas noprimitivas nobloqueantes com cpia bloqueantes por interrupo no-bufferizado, temporariamente mailboxes mantendo mensagens Request-Ack-Reply-Ack Request-Reply-Ack

Confiabilidade

To ta l d e 81 c o m bin a e s

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 38

Informtica UFRGS

Questes de Implementao

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 maiores devem ser quebradas

O acknowledgment pode ser utilizado por pacote ou por mensagem, dependendo da taxa de erros da rede

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 39

Informtica UFRGS

Questes de Implementao

Pacotes normalmente empregados no protocolo de comunicao:


Cliente Servidor Cli./Ser. Cliente Servidor Servidor Servidor Servidor Cliente Outro Servidor Cliente Cliente Cliente O cliente quer servio Resposta do servidor para cliente O pacote anterior chegou Verifica se o servidor est Ok O servidor est Ok O servidor no tem espao Nenhum processo usa o endereo

REQ REP ACK AYA IAA TA AU

Request Reply Ack Are you alive? I am alive Try Again Addr. Unknown

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 40

Informtica UFRGS

Questes de Implementao

Alg u n s e x e m p lo s d e c o m u n ic a o :

REQ > Servidor (b) Cliente

Cliente

< REP

REQ > < ACK < REP ACK >

Servidor

(a)

Cliente

REQ > < REP ACK > Servidor

Cliente

REQ > < ACK AYA > < IAA < REP ACK > (d)

Servidor

(c)

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 41

Informtica UFRGS

Concluses

O Modelo cliente-servidor utiliza um protocolo simples 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 eficiente

V ria s a lte rn a tiv a s d e p ro je to p a ra p rim itiv a s d e c o m u n ic a o p o d e m s e r u tiliza d a s

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 atravs de primitivas de E/S

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 42

Informtica UFRGS

Curso de Sistemas Operacionais Distribudos

O Modelo Cliente Servidor 43

This document was created with Win2PDF available at http://www.daneprairie.com. The unregistered version of Win2PDF is for evaluation or non-commercial use only.