Você está na página 1de 95

Modelos de Sistemas

Distribuídos

O Modelo Cliente-Servidor

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 1


Autoria

 Autor 1ª versão
 Cristiano A. Costa

 Local
 II - UFRGS

 Revisões
 V10.4
 2013-2
 C. Geyer

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 2


Roteiro

 Roteiro
 Conceitos de modelos, camada e middleware
 Modelo cliente/servidor (C/S)
 Conceito, características, ...

 Comparação entre o Modelo OSI e o Cliente-


Servidor
 Variações do C/S: camada banco de dados

 Exemplo de Cliente e Servidor

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 3


Roteiro

 Roteiro
 Endereçamento
 Outros modelos e questões de sw
 Primitivas bloqueantes e não-bloqueantes
 Bufferização
 Confiabilidade
 Questões de Implementação

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 4


Modelos de SDs
 Modelos de SDs
 Ou modelos de arquitetura de SDs
 Define as partes (módulos, componentes, ...)
 Caracteriza cada parte de forma abstrata

 Posicionamento das partes

 Interação entre elas

 Exemplos básicos de modelos


 Cliente / servidor

 P2P

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 5


Modelos de SDs
 Modelos de SDs
 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

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 6


Modelos de SDs
 Modelos de SDs
 Objetivos gerais de um projeto de modelo
 Garantir ou melhorar

 Confiabilidade

 Gerenciabilidade

 Adaptabilidade

 Relação custo/desempenho

 Ou enfim

 Atender algumas das questões de projeto

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 7


Camadas de software

 Camadas de software
 Conceito que define como o sw é estruturado
organizado
 Modelo básico de camadas
 Aplicações

 Middleware

 Sistema operacional e suas APIs

 Hardware

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 8


Camadas de software

 Camadas de software
 Middleware
 Objetivos

 Mascarar a heterogeneidade (do hw e do


SO)
 Fornecer um modelo de programação para
as aplicações
 Mais simples, único

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 9


Camadas de software

 Camadas de software
 Middleware
 Conceito

 Conjunto de processos (ou objetos, ou


serviços) em vários computadores,
interagindo entre si
 Oferecendo melhores serviços de

 Comunicação

 Compartilhamento de recursos

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 10


Camadas de software
 Camadas de software
 Middleware
 Exemplos

 CORBA

 Java RMI

 WS

 DCOM

 .Net Remoting

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 11


Camadas de software
 Camadas de software
 Middleware x framework
 Framework

 Conjunto de componentes de sw para


facilitar o desenvolvimento de certos tipos
de aplicações
 Fornece uma visão (mais) abstrata da app

 Pode ser especializado ou instanciado de


diferentes modos

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 12


Camadas de software

 Middleware
 Limitações
 Frequentemente é difícil adicionar (melhorar)
requisitos de dependabilidade somente com o
mw
 Isto pode exigir suporte em nível da aplicação

 Exemplo clássico

 Um aplicativo de transferência de
arquivos (ftp) na internet não pode
depender somente dos recursos do TCP

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 13


Camadas de software

 Middleware
 Limitações
 Referência

 Artigo clássico [SALTZER et al. 1984]

 Discute o problema acima: mw x app

 Introduz o princípio “fim-a-fim”

 Tentar resolver “tudo” no mw pode


gerar muitos custos redundantes

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 14


Comparação com o Modelo OSI

 O Modelo OSI
 Modelo padrão para Redes
 Não é perfeito para Sistemas Distribuídos
 Overhead causado por vários protocolos

 Não diz como um S.O. Distribuído deve ser


estruturado

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 15


Comparação com o Modelo OSI

 O Modelo OSI

 Observação
 Modelo OSI:

 Modelo padrão para redes de


computadores
 Define as camadas dos protocolos de redes

 [TAN 1992]: 2o cap. de SD

 Tópico de disciplinas do setor de redes

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 16


Comparação com o Modelo OSI

 O Modelo OSI não é perfeito para


Sistemas Distribuídos

 Overhead causado por vários protocolos


 Normalmente S.O.D. usam parte das
camadas

 Não diz como um S.O. Distribuído deve ser


estruturado

Modelo Cliente-Servidor

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 17


Modelo Cliente/Servidor

 Modelo Cliente/Servidor
 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

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 18


Modelo Cliente/Servidor

 Modelo Cliente/Servidor
 Possui 2 grandes componentes
 clientes

 servidor

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 19


Modelo Cliente/Servidor

 Modelo Cliente/Servidor
 Partes (componentes)
 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

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 20


Modelo Cliente/Servidor

 Modelo Cliente/Servidor
 Partes (componentes)
 Clientes

 Usualmente um programa sequencial

 Conhece o servidor

 Conhece o serviço oferecido (operações)

 Frequentemente em grande número

 Indeterminado, variável

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 21


Modelo Cliente/Servidor

 Modelo Cliente/Servidor
 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

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 22


Modelo Cliente/Servidor

 Modelo Cliente/Servidor
 Partes
 Servidor

 Usualmente não conhece clientes

 Usualmente em localização conhecida

 Ou com nome conhecido

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 23


Modelo Cliente/Servidor
 Modelo Cliente/Servidor
 Interação
 Cliente faz uma requisição ao servidor
passando
 Operação

 Argumentos de entrada

 Pode ser void

 Por exemplo, via um send

 Cliente fica esperando resposta

 Por exemplo, via um receive

 Pode ser void

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 24


Modelo Cliente/Servidor
 Modelo Cliente/Servidor
 Interação (cont.)
 Servidor está esperando uma requisição de
algum cliente
 Por exemplo, via um receive

 Servidor

 Verifica a operação

 Trata (executa) a operação com os


argumentos
 Prepara uma resposta (resultado)

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 25


Modelo Cliente/Servidor
 Modelo Cliente/Servidor
 Interação (cont.)
 Servidor

 Envia a resposta

 Por exemplo, via um send

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 26


Modelo Cliente/Servidor

 Modelo Cliente/Servidor
 Variações
 Um servidor pode ser cliente de outros
servidores
 Um cliente pode acessar vários servidores

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 27


Clientes e Servidores

 Modelo Cliente/Servidor
 Grupo de processos que cooperam entre si:
 (Servidores) oferecem serviços para usuários
(Clientes)
 Protocolo normalmente utilizado: Exemplo: UDP
 Request/Reply

 Sem Conexão

 Simples

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 28


Clientes e Servidores

 Modelo Cliente/Servidor
 Grupo de processos ...

Request
Cliente Servidor

Reply
Kernel Kernel

Rede

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 29


Clientes e Servidores
 Modelo Cliente/Servidor
 Clientes e Servidores podem executar sobre o
mesmo microkernel
 A mensagem de resposta (nível da aplicação)
pode servir como ack (do protocolo de rede)
 Quando faz uso de protocolos confiáveis (TCP,
...)
 Por ser um protocolo simples, é também eficiente

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 30


Clientes e Servidores
 Modelo Cliente/Servidor
 A pilha de protocolos pode ser menor que a
proposta em OSI
 São necessários três níveis de protocolo
(em máquinas idênticas)

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 31


Clientes e Servidores
 Modelo Cliente/Servidor
 A pilha de protocolos
Camada

5 Request/Reply

2 Enlace de dados

1 Física

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 32


Clientes e Servidores

 Modelo Cliente/Servidor
 A pilha de
Camada

implementada em software 5 Request/Reply

2 Enlace de dados
implementadas em hardware
1 Física

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 33


Clientes e Servidores

 Modelo Cliente/Servidor
 As camadas física e de enlace de dados são
responsáveis por enviar e receber pacotes entre
cliente e servidor (redes)
 A camada 5 define um
conjunto de respostas e
requisições permitidas
 Os serviços de comunicação
são implementados através
de chamadas do sistema
(system calls)

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 34


Clientes e Servidores

 Em sistemas largamente distribuídos


(SLD)
 Exemplos de SLD: Internet, P2P, Grade, ...
 As falhas de rede são (mais) freqüentes
 É recomendável usar protocolos mais confiáveis

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 35


Clientes e Servidores

 Em sistemas largamente distribuídos


(SLD)
 É recomendável usar protocolos mais confiáveis
 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)
 Por exemplo, comunicações de
informação, periódicas, podem fazer uso
de protocolos não confiáveis

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 36


Clientes e Servidores

 Sistemas C/S com acesso a bases de


dados
 Muitos (maioria?) dos sistemas (aplicações)
atuais acessam bases de dados no lado servidor
 Bases de dados:
 sistemas de arquivos, SGBD, LDAPs, bancos
de dados de objetos (representações, imagens,
áudio, vídeos, ...)

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 37


Clientes e Servidores

 Sistemas C/S com acesso a bases de


dados
 Modelo C/S é estendido para modelo de sistema
multi-camadas
 Segundo [TAN , SD, 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

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 38


Exemplo de Cliente e Servidor

 Exemplo de Cliente e Servidor


 Será apresentado um esboço de
 um cliente e

 um servidor de arquivos em C

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 39


Exemplo de Cliente e Servidor

 Exemplo de Cliente e Servidor


 Composto de três programas
 header.h:

 arquivo utilizado pelo cliente e pelo


servidor para compartilhar algumas
definições
 sample.c:

 exemplo de servidor

 procedure.c:

 exemplo de procedimento (cliente) que


utiliza o servidor para copiar um arquivo

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 40


Exemplo de Cliente e Servidor

 Exemplo de Cliente e Servidor


 Servidor: quatro operações definidas
 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
Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 41
Exemplo de Cliente e Servidor
 Exemplo de Cliente e Servidor
 Uso de Primitivas de send/receive
 bloqueantes

 tamanho de mensagens constante

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 42


Exemplo de Cliente e Servidor
 Exemplo de Cliente e Servidor
 Uso de Primitivas de send/receive
 Send

 Primeiro argumento: nome (ID) do


destino
 Segundo argumento: mensagem

 Receive

 1º arg: ID próprio (recebedor ou destino)

 2º arg: mensagem

 Mensagem

 Pode ser uma estrutura

 Diversos tipos de dados combinados

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 43


Exemplo de Cliente e Servidor

 Arquivos
 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

 ...

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 44


Exemplo de Cliente e Servidor
 Arquivos (cont.)
 Sample.c
 Código do servidor

 Loop infinito

 Recebe mensagem (pedido) do cliente

 Identifica tipo do pedido

 Processa pedido

 Responde ao cliente

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 45


Exemplo de Cliente e Servidor
 Arquivos (cont.)

 Procedure.c
 Código do cliente

 Loop até que leitura retorne nada

 Le pedaço do arquivo 1

 Limitado pelo tamanho máximo de


uma mensagem
 Grava pedaço no arquivo 2

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 46


Exemplo de Cliente e Servidor

 header.h
/*Definições necessárias pelos clientes e servidores */
#define MAX_PATH 255 /*tamanho maximo de
nome_arq*/
#define BUF_SIZE 1024 /*dados transferidos*/
#define FILE_SERVER 243 /* endereço do servidor*/

/*Definições de operações permitidas*/


#define CREATE 1 /*cria um novo arquivo*/
#define READ 2 /*lê pedaço de arquivo*/
#define WRITE 3 /*escreve pedaço de arquivo*/
#define DELETE 4 /*apaga arquivo existente*/

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 47


Exemplo de Cliente e Servidor

 header.h (continuaçã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*/

/*Definição do formato da mensagem*/


struct message {
long source; /*identificador da origem*/
long dest; /*identificador do destino*/

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 48


Exemplo de Cliente e Servidor

 header.h (continuação)
long opcoe; /*qual operação*/
long count; /*quantidade de bytes*/
long offset; /*onde no arq. começa a oper.*/
long extra1; /*campo extra*/
long extra2; /*campo extra*/
long result; /*resultado da operação*/
/* valor depende da op. */
char name[MAX_PATH]; /*nome do arquivo*/
char data[BUF_SIZE]; /*dados lidos ou p/ escrever*/
};

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 49


Exemplo de Cliente e Servidor

 sample.c (servidor)
#include <header.h>
void main(void)
{
struct message m1,m2; /* áreas p/mensagens */
int r; /* área p/respostas */

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 50


Exemplo de Cliente e Servidor
 sample.c (continuação)
while (1){
receive(FILE_SERVER,&m1); /* recebe requisição */
/* processa conforme tipo da requisição */
/* código dos procedimentos internos omitidos */
switch(m1.opcode) {
case CREATE: r = do_create(&m1,&m2); break;
case READ: r = do_read(&m1,&m2); break;
case WRITE: r = do_write(&m1,&m2); break;
case DELETE: r = do_delete(&m1,&m2); break;
default: r = E_BAD_OPCODE;
}
m2.result = r; /* conforme operação */
send(m1.source, &m2);
} }

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 51


Exemplo de Cliente e Servidor

 procedure.c (cliente)
#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 */

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 52


Exemplo de Cliente e Servidor

 procedure.c (continuação)
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. */

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 53


Exemplo de Cliente e Servidor
 procedure.c (continuação)
/*grava um bloco de dados no arquivo destino*/
m1.opcode = WRITE;
m1.offset = position;
m1.count = m1.result; /* result = # bytes */
strcpy (&m1.name, dst);
send(FILE_SERVER, &m1);
receive(client, &m1);
position += m1.result; /* result = # bytes */
}while (m1.result > 0); /* zero: nada foi lido */
/* retorna “ok” ou erro */
return(m1.result >= 0 ? OK : m1.result);
}

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 54


Endereçamento

 Endereçamento de servidores
 Obs.: revisão ou extensão de conceitos de
nomeação em troca de mensagens
 Um cliente para mandar uma mensagem a um
servidor precisa saber o endereço
 Ou nomeação

 Existem várias formas de endereçamento

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 55


Endereçamento

 Endereçamento de servidores
 Principais destacados:
 Endereçamento por número de máquina

 Endereçamento por processo

 Endereçamento por nomes ASCII obtidos de


um
name server

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 56


Endereçamento por número de máquina

 Endereçamento por número de máquina

 Utiliza o número da máquina para


endereçamento
um processo por máquina
não é transparente
simplicidade
 Viável em sistemas simples
1
Cliente Servidor

2
1. Request para 243 Kernel Kernel
2. Reply para 199

Rede
Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 57
Endereçamento por número de máquina

 Pode-se utilizar uma combinação entre


número da máquina e número do
processo Exemplo: TCP/IP

não é transparente
 simplicidade
 mais de um processo por máquina
não precisa de coordenação global
(não há ambigüidade entre processos)
1. Request para 243.0
2. Replay para 199.4

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 58


Endereçamento por processo

 Endereçamento por processo


 ID de processo:
 associar a cada processo um endereço único
que não contém o número da máquina

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 59


Endereçamento por processo

 Endereçamento por processo


 Duas alternativas para escolha do número do
processo:
 Garantir números distintos

 A1: Processo centralizado responsável pela


alocação de endereços (contador
incrementado a cada requisição)
Transparência
Escalabilidade

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 60


Endereçamento por processo

 Endereçamento por processo


 Duas alternativas para escolha do número do
processo:
 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 61


Endereçamento por processo
 Endereçamento por processo
 Sem nome de processo: o cliente pode fazer
broadcast de um pacote especial para localização
(locate packet)
 o kernel que contém o processo devolve uma
mensagem do tipo here I am

Transparência

Gera carga extra no sistema

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 62


Endereçamento por processo
 Endereçamento por processo
 o kernel que contém o processo devolve uma
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

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 63


Endereçamento por name server

 Endereçamento por name server


 Utiliza uma máquina extra para mapear nomes
de 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

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 64


Endereçamento por name server

 Endereçamento por name server


 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

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 65


Resumo

 Resumo Cliente/Servidor
 Conceitos de modelos, camadas, middleware
 Conceito de C/S
 Prós e contras
 Características do cliente
 Características do servidor
 Exemplo
 Servidor de arquivos

 Cliente: cópia de 1 arquivo

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 66


Resumo

 Resumo Cliente/Servidor
 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

 Nome dado por servidor

 Nome escolhido em espaço largo

 Com servidor de nomes

 Por broadcast de consulta a tipo de


serviço

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 67


Revisão

 Revisão de Cliente/Servidor
 No final dos slides

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 68


Primitivas de Troca de Mensagens
x sincronização
Tratamento mais aprofundado de
questões vistas em Troca de
Mensagens

Obs.: slides não revisados nem apresentados

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 69


Súmula Primitivas

 Súmula Primitivas
 Bloqueantes (síncronas)
 Assincronas
 Bloqueantes

 Não bloqueantes

 Cópia de dados
 Buffer
 Acks

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 70


Primitivas x sincronização

 Primitivas Bloqueantes (síncronas)


 no send, enquanto a mensagem está sendo
enviada, o processo fica bloqueado
 o receive fica bloqueado até que alguma
mensagem chegue ou até um timeout

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 71


Primitivas x sincronização

 Primitivas Não-Bloqueantes
(assíncronas)
 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
é aquele que só recebe quando já existem
mensagens e fica bloqueado até completar a
recepção, se não retorna

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 72


Primitivas bloqueantes

 Primitivas bloqueantes
 O processo fica bloqueado durante a
transferência de mensagem
 Melhor opção para envio de mensagens em
condições normais

Simples de entender
Simples de implementar
Performance para envio de mensagem
CPU fica ociosa durante a transmissão
Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 73
Primitivas não-bloqueantes

 Primitivas não-bloqueantes com cópia


 o kernel copia a mensagem para um buffer
interno e então libera o processo para continuar
Performance
Sobrepor processamento e transmissão de
mensagens

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 74


Primitivas não-bloqueantes

 Primitivas não-bloqueantes com


interrupção
 interrompe o processo que enviou a mensagem
quando o buffer estiver livre para reutilização
Programação Difícil
Performance

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 75


Primitivas síncronas e assíncronas
 Tanenbaum
 A diferença essencial entre uma primitiva
síncrona e uma assíncrona é se o processo que
envia a mensagem pode reutilizar o buffer
imediatamente após o comando send
 preferida por projetistas de sistemas operacionais

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 76


Primitivas síncronas e assíncronas

 Andrews
 Uma primitiva síncrona é aquela em que o
processo 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 77


Bufferização

 Primitivas não-bufferizadas
 O buffer para armazenar a mensagem deve ser
especificado pelo programador
 Existem duas estratégias a serem empregadas no
caso de um send do cliente, sem um receive do
servidor:
 discartar mensagens inesperadas

 temporariamente manter mensagens


inesperadas

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 78


Bufferização

 Primitivas bufferizadas
 Existe um buffer para armazenar mensagens
inesperadas
 A primitiva de bufferização mais empregada
define estruturas de dados chamadas mailbox

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 79


Bufferização
 Primitivas não-bufferizadas discartando
mensagens
 Implementação
 O cliente pode ficar tentando enviar mensagens
 Podem ocorrer casos em que o cliente desista de
enviar a mensagem
Cliente Endereço
Servidor
A
refere-se a
processo
Kernel Kernel

Rede

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 80


Bufferização

 Primitivas não-bufferizadas
temporariamente mantendo mensagens
reduz a chance da mensagem ser descartada
introduz problema de gerenciamento e
armazenamento de mensagens inesperadas

Cliente Servidor
A

Kernel Kernel

Rede

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 81


Bufferização

 Primitivas bufferizadas: Mailboxes


 Um processo que está interessado em receber
mensagens avisa o kernel para criar uma mailbox
informando o endereço de origem das mensagens
 Todas as mensagens são colocadas na mailbox e
uma chamada a receive simplesmente remove
mensagens dela Cliente
Endereço Servidor
refere-se a
mailbox
Kernel A Kernel

Rede

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 82


Bufferização

 Primitivas bufferizadas: Mailboxes


reduz ainda mais a
chance de mensagens
serem descartadas
mailboxes são finitas e
podem necessitar de
estratégias análogas as Cliente Endereço Servidor
adotadas anteriormente refere-se a
mailbox
Kernel A Kernel

Rede

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 83


Confiabilidade

 Três diferentes alternativas podem ser


utilizadas para questões de
confiabilidade:
 assumir que as primitivas não são confiáveis,
alterando a semântica do send
 o sistema não garante que as mensagens são
enviadas
 o usuário fica responsável por implementar
comunicação confiável

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 84


Confiabilidade

 Três diferentes alternativas podem ser


utilizadas para questões de
confiabilidade:
 primitivas confiáveis com mecanismos de
acknowledgment do tipo: Request - Ack - Reply -
Ack
 primitivas confiáveis com mecanismos de
acknowledgment do tipo: Request - Reply - Ack

 combinações podem ser obtidas entre os


mecanismos confiáveis

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 85


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
1. Request Cliente 3 Servidor
2. Ack
3. Reply 4
4. Ack Kernel Kernel
2

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 86


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 requisição
 em alguns kernels não1 é necessário o ack
Cliente 2 Servidor

3
Kernel Kernel

1. Request
2. Reply
3. Ack

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 87


Questões de Implementação

 Alternativas de projeto:
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

Confiabilidade não-confiáveis Request-Ack-Reply-Ack Request-Reply-Ack

 Total de 81 combinações
Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 88
Questões de Implementação

 As redes têm um tamanho máximo de


pacote, mensagens 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 Distribuídos O Modelo Cliente Servidor 89
Questões de Implementação

 Pacotes normalmente empregados no


protocolo de comunicaçã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

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 90


Questões de Implementação

 Alguns exemplos de comunicaçã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)

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 91


Conclusões

 Conclusões
 O Modelo cliente-servidor utiliza um protocolo
simples e de fácil implementação
 Por ser simples e sem conexão, o protocolo é
também eficiente
 Várias alternativas de projeto para primitivas de
comunicação podem ser utilizadas
 Todas as comunicações no modelo são construídas
através de primitivas de E/S

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 92


Revisão

 Revisão
 Para que servem modelos de arquiteturas de
SDs?
 O que é especificado?
 defina modelo C/S
 O que é? Para que serve?

 Comportamento e características do cliente?

 Comportamento e características do servidor?

 Interação entre ambos?

 quais são as vantagens?


 variações atuais do modelo C/S?

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 93


Revisão
 Revisão
 Exemplo cliente / servidor de arquivos
 Qual serviço o servidor oferece?

 Interface do servidor?

 Modelo e formato de mensagens?

 Endereçamento das mensagens?

 O que o cliente realiza?

 Como é a interação completa entre 1 execução


do cliente e do servidor?
 formas de localização do servidor pelo cliente?
 conceito?

 vantagens e desvantagens?

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 94


The End !

Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 95

Você também pode gostar