Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
por
Cris tia n o An d r d a Co s ta
Informtica UFRGS
Autoria
Autor
Cristiano A. Costa
Local
II - UFRGS
ano: 1995
Revises
1997-2004, C. Geyer
Informtica UFRGS
Roteiro
Clientes e Servidores
Ex e m p lo d e Clie n te e S e rv id o r
Endereamento
Bufferizao
Confiabilidade
Qu e s t e s d e Im p le m e n ta o
O Modelo Cliente Servidor 3
Informtica UFRGS
Informtica UFRGS
Informtica UFRGS
Clientes e Servidores
Request/Reply
Request Cliente Reply Kernel Kernel Servidor
Sem Conexo
Simples
Rede
O Modelo Cliente Servidor 6
Informtica UFRGS
Clientes e Servidores
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
Rede
O Modelo Cliente Servidor 7
Informtica UFRGS
Clientes e Servidores
A p ilh a d e p ro to c o lo s m e n o r
Request/Reply
Informtica UFRGS
Clientes e Servidores
A p ilh a d e p ro to c o lo s m e n o r
implementada em software
Request/Reply
implementadas em hardware
Informtica UFRGS
Clientes e Servidores
Request/Reply
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 )
recomendvel usar protocolos mais confiveis Por exemplo, com conexo Ou usar procotolos menos confiveis mas implementar em nvel de aplicao certos controles mnimos
Informtica UFRGS
Clientes e Servidores
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, ...)
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
Informtica UFRGS
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.
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
Informtica UFRGS
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
Informtica UFRGS
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
struct message {
long source;
long dest;
Informtica UFRGS
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];
};
Informtica UFRGS
sample.c
#include <header.h>
void main(void)
int r;
Informtica UFRGS
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
Informtica UFRGS
procedure.c
#include <header.h>
long position;
initialize();
position = 0;
Informtica UFRGS
procedure.c (continuao)
do {
m1.opcode = READ;
m1.offset = position;
m1.count = BUf_SIZE;
send(FILE_SERVER, &m1);
receive(client, &m1);
Informtica UFRGS
procedure.c (continuao)
m1.opcode = WRITE;
m1.offset = position;
m1.count = m1.result;
send(FILE_SERVER, &m1);
receive(client, &m1);
position += m1.result;
}
O Modelo Cliente Servidor 21
Informtica UFRGS
Endereamento
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:
Informtica UFRGS
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
no transparente
simplicidade
Informtica UFRGS
no transparente
simplicidade
Informtica UFRGS
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
Informtica UFRGS
o cliente pode fazer broadcast de um pacote especial para localizao (locate packet)
Transparncia
3 Cliente 4 Kernel 1 2 Rede Kernel Servidor
1. Broadcast
2. Here I am
3. Request
4. Replay
Informtica UFRGS
Transparente
1
Name Server
2. NS Reply
4
Kernel Kernel
2
Kernel
3. Request
4. Replay
Rede
O Modelo Cliente Servidor 27
Informtica UFRGS
o receive passa para o kernel o ponteiro para o buffer e retorna imediatamente, antes de receber a mensagem
Informtica UFRGS
Primitivas bloqueantes
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
Informtica UFRGS
Primitivas no-bloqueantes
o kernel copia a mensagem para um buffer interno e ento libera o processo para continuar
Performance
interrompe o processo que enviou a mensagem quando o buffer estiver livre para reutilizao
Programao Difcil
Performance
Informtica UFRGS
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
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
Informtica UFRGS
Bufferizao
Primitivas no-bufferizadas
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
Informtica UFRGS
Bufferizao
Implementao
refere-se a processo
Servidor
Kernel
Rede
Informtica UFRGS
Bufferizao
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
Servidor
Kernel
Rede
Informtica UFRGS
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
Informtica UFRGS
Confiabilidade
Informtica UFRGS
Confiabilidade
Informtica UFRGS
Questes de Implementao
Alternativas de projeto:
por nmero de mquina primitivas bloqueantes por processo
Endereamento
Bloqueante
Bufferizao
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
Informtica UFRGS
Questes de Implementao
O acknowledgment pode ser utilizado por pacote ou por mensagem, dependendo da taxa de erros da rede
Informtica UFRGS
Questes de Implementao
Request Reply Ack Are you alive? I am alive Try Again Addr. Unknown
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 :
Cliente
< REP
Servidor
(a)
Cliente
Cliente
REQ > < ACK AYA > < IAA < REP ACK > (d)
Servidor
(c)
Informtica UFRGS
Concluses
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
Informtica UFRGS
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.