Você está na página 1de 30

1

SISTEMAS DISTRIBUIDOS
Cliente Servidor

Prof. Leandro Coelho

Plano de Aula
2

Comunicao entre Processos Protocolos Modelo OSI Modelo Cliente Servidor

Sistemas Distribuidos Modelo Cliente/Servidor


O modelo diz como as mquinas podem se comunicar.
... mas qual a estrutura do SD?

Classificar mquinas em servidores


Provem servios para mquinas cliente

Mquina podem executar mltiplos processos


Clientes e/ou servidores

Elimina overhead implementando um protocolo request/reply (camadas 1, 2 e 5) Simplicidade e eficincia

Sistemas Distribuidos Modelo Cliente/Servidor


Estruturao de Sistemas Distribudos
Sistema estruturado como uma coleo de processos cooperantes
Servidores

Servios para Usurios


Clientes

Clientes e Servidores
Processos no modo Usurio

Sistemas Distribuidos Modelo Cliente/Servidor


Baseado em protocolo simples
Evitar Overhead do OSI ou TCP/IP Baseado em Request - Reply
No orientado a conexo

Somente 3 camadas so necessrias


Fsica Enlace de dados Camada de Sesso
Protocolo Request - Reply

Sistemas Distribuidos Modelo Cliente/Servidor


Request

Reply

Sistemas Distribuidos Modelo Cliente/Servidor


Cliente
strcpy(Buffer, Requisio para o Servidor...); send(enderecoServidor, Buffer, sizeof (Buffer), 0 ); recv(enderecoServidor, Buffer, sizeof(Buffer),0); printf(Reply do Servidor: %s", Buffer);

Servidor
recv(enderecoCliente, Buffer, sizeof (Buffer),0 ); printf(MSG de request do cliente: %s, Buffer); strcpy(Buffer, Servidor Responde...); send(enderecoCliente,Buffer, sizeof(Buffer),0);

Sistemas Distribuidos Modelo Cliente/Servidor


Envio de mensagens
Endereo do destinatrio

Endereamento
Endereo de Mquina Monitorado pelo Kernel local No identifica qual processo deve receber a mensagem
Mltiplos processos na mquina destino

Sistemas Distribuidos Modelo Cliente/Servidor


Como enviar a mensagem a mquina servidor e depois ao processo servidor? Endereo deve incluir tambm o nmero do processo (codificado no programa dos clientes)
Elimina ambiguidade, no necessita de um coordenador global gerando nmeros de processos, mas no transparente

10

Sistemas Distribuidos Modelo Cliente/Servidor


Endereo de Processo:
Composto
Mquina + Processo (ID Local) Kernel identifica o processo correspondente
No h ambigidade

No um esquema transparente
O usurio conhece a localizao do servidor

O que fazer quando o servidor falha?


Substituio de mquinas no funciona

11

Sistemas Distribuidos Modelo Cliente/Servidor


Endereo de Processo:
Cada processo pode ter seu prprio endereo. Necessita de um alocador de endereos de processos centralizados.
No tem boa escalabilidade

12

Sistemas Distribuidos Modelo Cliente/Servidor


Cada processo pode ter seu prprio endereo.
Localizao do Servidor
Mensagem via Broadcast
Cliente envia Pacote de Localizao Endereo do processo destino Cada Kernel avalia mensagem O Servidor destinatrio responde com seu endereo O Cliente guarda o endereo Esquema transparente Carga na rede

13

Sistemas Distribuidos Modelo Cliente/Servidor


Cada processo pode ter seu prprio endereo.
Processos escolhem seus prprios endereos aleatoriamente em um grande espao de nmeros. Boa escalabilidade.
Processos localizam outros atravs de mensagens de broadcast.
Cache de endereos

Mensagens extras so impostas rede

14

Sistemas Distribuidos Modelo Cliente/Servidor


Outra opo o uso de servidores de nomes.
Referncias a processos servidores so feitas usando-se nomes ASCII
Um servidor de nomes realiza a traduo

Caches de endereos podem ser usadas Requer um componente centralizado Servidor de nomes pode ser replicado
Cuidados devem ser tomados para manter a consistncia entre servidores

15

Sistemas Distribuidos Modelo Cliente/Servidor


Servidor de Nomes
Processos servidores so referenciados por nomes (strings ASCII) Cada nome mapeado para o endereo de mquina + ID local do processo Soluo centralizada
Escalabilidade Falha

Replicao
Vrios servidores de nomes

16

Sistemas Distribuidos Modelo Cliente/Servidor


Primitivas de Comunicao:
Envio e Recebimento de Mensagens
Send (destino, msg) Receive(origem, msg)

Caractersticas das Primitivas de Comunicao


Sincronizao (Bloqueio) Bufferizao Confiabilidade

17

Sistemas Distribuidos Modelo Cliente/Servidor


Primitivas de Comunicao:
Sincronismo (Bloqueio)
1. 2. 3.

strcpy(msg, teste de envio com send); send(porta, msg, sizeof(msg), 0) strcpy(msg, lixo); Bloqueia o remetente at que a mensagem seja entregue ao destinatrio Aps liberao a rea de memria de msg est livre para ser manipulado
A linha 3 s ser executada aps o trmino do send da linha 2. O receptor receber teste de envio com send

SEND sncrono (com bloqueio)

18

Sistemas Distribuidos Modelo Cliente/Servidor


Primitivas de Comunicao:
Sincronismo (Bloqueio)
1. 2. 3.

strcpy(msg, lixo); recv(porta, msg, sizeof(msg), 0) printf(msg);

RECEIVE sncrono
Bloqueia o processo at a mensagem ser colocada na rea de memria de msg A linha 3 s executa aps o recv ter colocado a mensagem na varivel msg. Se nada foi enviado, fica bloqueado aguardando.

19

Sistemas Distribuidos Modelo Cliente/Servidor


Primitivas de Comunicao:
Primitivas Assncronas SEND assncrono (sem bloqueio)
strcpy(vetor[0].buf, teste de envio com send assncrono); WSASend(conn_socket, vetor, 1, &bytes, 0, &overlap , NULL); strcpy(vetor[0].buf, lixo...................................................);

Retorna o controle ao emissor imediatamente, antes da mensagem ser enviada Paralelismo entre o processo emissor e a transmisso da mensagem

20

Sistemas Distribuidos Modelo Cliente/Servidor


Primitivas de Comunicao:
Primitivas Assncronas SEND assncrono (sem bloqueio)
strcpy(vetor[0].buf, teste de envio com send assncrono); WSASend(conn_socket, vetor, 1, &bytes, 0, &overlap , NULL); strcpy(vetor[0].buf, lixo...................................................);

A rea de memria com a mensagem (vetor[0].buf) no deve ser modificado at que a mensagem chegue ao destino. O Kernel deve fazer uma cpia da mensagem ou interromper o remetente para avisar que o rea de memria com a mensagem est livre novamente.

21

Sistemas Distribuidos Modelo Cliente/Servidor


Primitivas de Comunicao:
Primitivas Assncronas RECEIVE assncrono
1. 2. 3.

strcpy(vetor[0].buf, lixo); WSARecv(conn_socket, &vetor, 1, &bytes_transfclient, &flagclient, &overlap, NULL); printf(vetor[0].buf);

Informa ao Kernel onde a rea de memria onde ser colocada a mensagem recebida (vetor[0].buf) est localizado Se ao executar a linha 2 no houver mensagem na caixa postal, a linha 3 imprime lixo. Caso contrrio, imprime a mensagem da caixa.

22

Sistemas Distribuidos Modelo Cliente/Servidor


Primitivas de Comunicao:
Primitivas Assncronas RECEIVE assncrono
1. 2. 3.

strcpy(vetor[0].buf, lixo); WSARecv(conn_socket, &vetor, 1, &bytes_transfclient, &flagclient, &overlap, NULL); printf(vetor[0].buf);

Permite que o receptor continue sua execuo O receptor pode utilizar uma primitiva para interrogar o ncleo sobre o estado da operao Receive condicional com timeout

23

Sistemas Distribuidos Modelo Cliente/Servidor


Primitivas e Escalabilidade

Se o modelo sncrono utilizasse THREADS a escalabilidade seria a mesma, mas o consumo de recursos do SO seria maior.

24

Sistemas Distribuidos Modelo Cliente/Servidor


Primitivas de Comunicao:
Primitivas Assncronas
Maior complexidade e escalabilidade Uso de WAIT e TEST
WSAGetOverlappedResult Testa estado da transmisso via Kernel

25

Sistemas Distribuidos Modelo Cliente/Servidor


Primitiva SEND com Bloqueio

Cliente Executando

Cliente Executando

Cliente bloqueado
Send()

Trap para o Kernel

Envio da mensagem

Retorno do Kernel

26

Sistemas Distribuidos Modelo Cliente/Servidor


Primitiva SEND com Bloqueio
send(sock, msg, sizeof(msg),0); Ponto de vista do emissor
Retorno do SEND significa que a rea de memria da mensagem (msg) est Livre Emissor sabe que a mensagem foi entregue

Simples

27

Sistemas Distribuidos Modelo Cliente/Servidor


Primitivas SEND sem Bloqueio (Assncrono)
Cliente Executando Cliente Executando

Cliente Suspenso
WSASend()

Trap para o Kernel

Mensagem copiada para o buffer do Kernel e para memria da Interface

Retorno do Kernel

Mensagem da rea do Kernel sendo enviada

28

Sistemas Distribuidos Modelo Cliente/Servidor


Primitivas SEND sem Bloqueio
Ponto de vista do emissor
Semelhante ao com Bloqueio

Retorno do SEND significa que a rea de memria da mensagem est Livre Emissor no sabe que a mensagem ainda no foi entregue Desvantagem
Overhaed da cpia para memria da Interface de rede

29

Sistemas Distribuidos Modelo Cliente/Servidor


Primitivas SEND sem Bloqueio
Cliente Executando Cliente Executando Cliente Executando

Cliente Suspenso
WSASend()

Trap para o Kernel

Retorno do Kernel

Mensagem copiada para o buffer do Kernel e para memria da Interface

Trap do Kernel Interface de rede

Mensagem da rea do Kernel sendo enviada

Kernel identifica Interrupo e envia sinal ao processo TEST()

30

Sistemas Distribuidos Modelo Cliente/Servidor


Primitivas SEND sem Bloqueio
No requer cpia para o Kernel
Maior escalabilidade Maior complexidade de cdigo Retorno NO significa que a rea de memria da mensagem est Livre

Você também pode gostar