Escolar Documentos
Profissional Documentos
Cultura Documentos
Coulouris Sistemas Distribuidos Cap5 6
Coulouris Sistemas Distribuidos Cap5 6
5-6
1 SD Cap. 5-6
Middleware
Aspectos importantes:
Transparncia de localizao: no RPC, quem chama uma
funo no sabe se ela local ou no, se roda no mesmo
processo ou num diferente. Se for remota, no se sabe onde est
o processo que vai ser executado. Recebendo um evento
5.1.1 Interfaces
Na programao por mdulos, o relacionamento entre mdulos
feito via uma interface. Nela, relaciona-se quais mtodos esto
disponveis para acessar determinado mdulo.
Enquanto a interface permanecer igual, o acesso ao mdulo no
alterado, mesmo que a implementao mude.
Interfaces em SDs
Num programa distribudo, um mdulo no pode acessar variveis
de outro.
A interface de um mdulo no pode especificar acesso a variveis.
O IDL do CORBA permite especificar atributos, mas o acesso no
direto. A plataforma insere funes de consulta e atualizao de
variveis automaticamente.
2 SD Cap. 5-6
2 SD Cap. 5-6
3 SD Cap. 5-6
3 SD Cap. 5-6
4 SD Cap. 5-6
4 SD Cap. 5-6
5 SD Cap. 5-6
5 SD Cap. 5-6
Software RMI
Mtodos fbricas
Binder
Servio de um SD que mantm tabelas de mapeamento entre nomes
de servios e referncias remotas.
Permite aos servidores se registrarem e aos clientes procurar um
servio.
Corba: Corba Name Service;
Java: RMIregistry.
Ativao de objetos remotos
As aplicaes necessitam que as informaes sejam mantidas por
longos perodos. Isso no justifica manter objetos em processos se
eles no so necessrios todo o tempo.
Assim, os processos so disparados quando necessrio.
Um objeto remoto que pode ser invocado chamado de ativo.
Se ele no est ativo, mas pode ser ativado, chamado de passivo.
Um objeto passivo:
Implementao dos mtodos;
Seu estado na forma marshalled.
Processos que disparam servidores para manter objetos remotos so
chamados de ativadores.
6 SD Cap. 5-6
6 SD Cap. 5-6
Modelo cliente-servidor:
Uma aplicao pode ser cliente de qualquer servio da rede;
Um servidor pode ser cliente de outros servios;
Cada servio possui um conjunto de operaes que podem ser
invocadas pelos clientes;
A comunicao entre clientes e servidores baseada no
protocolo requisio-resposta;
O cliente sempre espera pela resposta para continuar, mesmo que
no haja retorno de valor (pode haver erro!).
RPC:
Integrao entre clientes e servidores de forma conveniente;
Clientes se comunicam com servidores atravs da chamada de
procedimentos;
A chamada feita no programa local;
A execuo ocorre num programa remoto.
Servio ao nvel RPC:
Uma interface que exportada para os programas de um sistema;
Conjunto de funes que operam sobre certos dados ou recursos;
Aspectos semnticos de RPC:
Parmetros de entrada e sada:
Parmetros de entrada so passados para o servidor;
Valores enviados na requisio e copiados nas variveis do
servidor;
Parmetros de sada so enviados para o cliente na resposta;
Substituem as variveis da chamada;
Parmetros podem ser I/O.
7 SD Cap. 5-6
Questes de projeto
Histrico:
1981 - Xerox Courier RPC: padro de desenvolvimento de
aplicaes remotas;
1984 - Birrel e Nelson:
7 SD Cap. 5-6
Classes de RPC:
1. o mecanismo RPC integrado com uma linguagem especfica;
inclui uma notao de definio de interface;
ex.: Cedar, Argus, Arjuna;
pode incluir construes especficas para RPC (ex.:
excees);
2. linguagem de definio de interfaces (pr-compilador ?!).
ex.: SUN RPC (base do NFS);
Matchmaker (Jones e Rashid, 1986): pode ser usado com C,
Pascal, LISP, MIG (Mach Interface Generator);
No ligado a um ambiente particular.
Linguagem de definio de interfaces:
Especifica as caractersticas do servidor que so visveis para o
cliente;
Nomes de procedimentos, tipos dos parmetros;
Tipo de acesso a um parmetro: I, O ou I/O;
O acesso indica se o valor precisa ser encapsulado na requisio
ou na resposta (marshaling);
Compiladores de interfaces podem gerar descries que podem ser
usadas em diferentes linguagens, permitindo a comunicao de
clientes e servidores de plataformas diferentes.
8 SD Cap. 5-6
8 SD Cap. 5-6
Tratamento de excees:
Qualquer RPC pode falhar:
Falha no servidor;
Sobrecarga do servidor (atraso na resposta).
RPC deve devolver erros:
Timeouts (inerente distribuio);
Erros de execuo (FD invlido, leitura aps EOF, diviso
por zero, etc.).
Erros detectados pelos procedimentos (cdigos invlidos,
datas erradas, etc.).
Transparncia:
O modelo Birrel e Nelson garante que a chamada a
procedimentos remotos igual chamada dos locais;
RPC Cedar:
identifica os procedimentos remotos;
acrescenta o cdigo necessrio para o marshalling e
unmarshalling;
faz retransmisso da requisio aps um timeout;
a durao de uma chamada indefinida desde que o servidor
permanea ativo.
Garantia de entrega:
Implementaes possveis do DoOperation:
Repetio da requisio: at receber uma resposta ou assumir
que o servidor falhou;
Filtro de duplicados: usado com retransmisso, para evitar
duplicao no servidor;
Retransmisso da resposta: evita a reexecuo de uma
requisio.
Garantia de Entrega
Repete Req.
Filtra Duplic.
N
S
N
S
S
Semntica RPC
Reexec/Retrans
Maybe
Reexecuta
At-least-once
Retransmite
At-most-once
9 SD Cap. 5-6
9 SD Cap. 5-6
Implementao
O software de suporte ao RPC tem 3 funes:
Processamento da interface:
marshalling e unmarshalling;
despacho das requisies.
Tratamento da comunicao:
Transmitir requisies e receber as respostas;
Binding:
Localizao de um servidor para um servio qualquer.
Processamento da interface:
Retorno
Unmarsh
Receive
Compilador de interfaces:
processa as definies de uma IDL.
1. Gera os stubs do cliente;
2. Gera os stubs do servidor;
3. Gera as operaes de marshall e unmarshall;
4. Fornece os cabealhos das funes (o corpo o que a funo
faz deve ser fornecido pelo programador).
Binding
Requisio
Cliente
Chamada Marshall Send
Servidor
Receive Unmarsh. Executa
Seleo!
Send
Marshall Retorno
Resposta
Cada procedimento de uma interface numerado com um nmero
nico (0, 1, 2, 3, ...).
Construindo um programa cliente:
Stub:
converte chamada local em remota;
faz o casamento dos parmentros.
10 SD Cap. 5-6
10 SD Cap. 5-6
11 SD Cap. 5-6
RPC Assncrono
Ex.: sistema de janelas X-11
Utiliza uma forma assncrona de RPC:
X-11 um servidor de janelas;
As aplicaes que querem mostrar alguma coisa na tela (texto,
grficos, etc.) so os clientes.
Caractersticas:
Para gerar ou atualizar a informao de uma janela, o cliente
envia vrias requisies ao servidor, cada uma delas com uma
pequena quantidade de informaes:
Strings, troca de fonte, um caracter.
O cliente no recebe respostas para suas requisies;
Cliente e servidor trabalham em paralelo;
Algumas requisies podem exigir intensa computao - h
ganhos em realiz-las enquanto o servidor atende requisies
anteriores;
O servidor pode manipular requisies de vrios clientes;
Ou mesmo de dispositivos;
O servidor tem uma performance melhor se ele no precisa
enviar respostas para as requisies.
RPC sem respostas e sem bloqueio chamado de assncrono.
Comparao:
No RPC sncrono, no existe paralelismo;
No RPC assncrono, o cliente faz todas as requisies de que
necessita; s ento espera pelos resultados;
11 SD Cap. 5-6
Otimizao possvel:
Armazenar as requisies no lado do servidor at que ocorra um
timeout ou que o cliente pea uma resposta;
S ento as requisies so enviadas como uma comunicao s;
Isto reduz a latncia de rede.
12 SD Cap. 5-6
12 SD Cap. 5-6
RPC assncrono
RPC sncrono
argumentos
marshall
send
transmisso
receive
unmarshall
executa
marshall
send
receive
unmarshall
processa
argumentos
marshall
send
receive
unmarshall
processa
receive
unmarshall
executa
marshall
send
Servidor
receive
unmarshall
executa
marshall
send
receive
unmarshall
executa
marshall
send
receive
unmarshall
processa
Cliente
receive
unmarshall
processa
Cliente
argumentos
marshall
send
argumentos
marshall
send
Servidor
13 SD Cap. 5-6
Promessas
13 SD Cap. 5-6
Funes:
claim(): extrai a resposta de uma promessa;
se ela estiver no estado bloqueado, o cliente bloqueia at que
a promessa passe para o estado de pronto ou que ocorra uma
exceo.
ready(): testa o estado de uma promessa.
14 SD Cap. 5-6
14 SD Cap. 5-6
15 SD Cap. 5-6
15 SD Cap. 5-6
Caracterizao de um SOD:
Permite a programao de um SD, permitindo a implementao
de uma grande gama de aplicaes;
Apresenta para as aplicaes abstraes genricas e orientadas
aos problemas dos recursos do sistema;
Num SD aberto, o SOD implementado como um conjunto de
kernels e servidores.
No h uma distino clara entre os servios do sistema e as
aplicaes que rodam no topo do SOD.
Exemplos: Mach e Chorus.
Resultados de grandes perodos de pesquisa nos anos 80 e 90;
Alto nvel de interesse tcnico e comercial;
Outros exemplos tcnicos:
Amoeba, Clouds, V System;
No aceitos para uso geral;
Todos esses projetos empregam microkernel.
SOD:
Infraestrutura de gerenciamento genrico de recursos e
transparente em rede;
16 SD Cap. 5-6
16 SD Cap. 5-6
17 SD Cap. 5-6
17 SD Cap. 5-6
OS2
Processos, threads,
comunicao, etc.
Hardware do
computador e rede
Hardware do
computador e rede
N 1
N 2
Kernel
Kernels e proteo:
O Kernel executa com privilgio de acesso total;
18 SD Cap. 5-6
18 SD Cap. 5-6
Unix:
Monoltico;
Sugere um sistema massivo;
Executa todas as operaes bsicas do sistema;
1 MB de cdigo e dados;
No diferencivel: codificado de forma no modular;
Intratvel: a alterao de um mdulo para adequao a novos
requisitos muito difcil.
Sn
S1
Carregado dinamicamente
S2
S3
S1
Kernel monoltico
S2
S3
MicroKernel
Suporte de
linguagem
Emulao
de OS
Microkernel
Hardware
Comparao:
Abertura;
Modularidade;
Um kernel pequeno tem mais chances de ter menos bugs;
Mais fcil de manter;
Arquitetura de um microkernel
Em princpio, no h uma definio clara de quais mdulos um
microkernel deve ter.
Todos os produtos dessa categoria incluem:
Gerncia de processos;
Gerncia de memria;
19 SD Cap. 5-6
19 SD Cap. 5-6
Gerente de
Memria
Ambiente de execuo:
Espao de endereamento;
Sincronizao de threads e IPC, como semforos; interfaces de
comunicao (portas);
Recursos de alto nvel (arquivos, janelas, etc.).
20 SD Cap. 5-6
20 SD Cap. 5-6
Regies
Auxiliares
Os espaos no so contguos.
Gaps permitem o crescimento das regies.
Componente mais caro de um ambiente de execuo;
Grande (232 um valor tpico);
Consiste de uma ou mais regies;
Regio: rea contgua de memria virtual acessvel pelas threads
do processo; Regies no se sobrepem;
Stack
Memria
Virtual
(ex.: 232)
Heap
Text
0
Gaps
21 SD Cap. 5-6
21 SD Cap. 5-6
22 SD Cap. 5-6
22 SD Cap. 5-6
6.4.3 Threads
Considere um servidor com uma ou mais threads.
Assumimos que uma requisio qualquer utiliza 2 msegs de
tratamento e 8 msegs de I/O (sem o uso de cache). O computador
possui apenas um processador.
Mximo throughput dependendo do nmero de threads:
1: 2 + 8 = 10 msegs. 100 requisies por segundo.
2: uma thread pode processar enquanto a outra est esperando.
As threads de um processo no podem fazer I/O em paralelo. Assim,
todos os I/Os devem ser feitos seqencialmente.
Se todas as requisies de I/O forem serializadas, temos
1000/8 = 125 requisies por segundo.
23 SD Cap. 5-6
23 SD Cap. 5-6
Threads-por-conexo:
O servidor coloca uma thread para cada conexo de cliente;
Em uma conexo, cada cliente pode fazer vrias requisies.
Threads-por-objeto:
Uma thread associada a cada objeto remoto;
Cada objeto possui sua fila.
Threads nos clientes
Nos clientes, o uso de threads interessante para evitar bloqueios
indesejveis em certas operaes:
Em requisies a um servidor;
Em RMI (ou RPC), quando se faz invocao a um objeto
remoto.
Formas organizao de threads nos clientes:
Por requisio: para cada requisio feita no cliente disparada
uma thread que gerencia o processo;
Por conexo: cada conexo estabelecida com um servidor
remoto recebe uma thread toda comunicao nessa conexo
feita por meio dela;
Por objeto: para cada objeto remoto usado pelo cliente
disparada uma thread cada uma faz as invocaes remotas para
o seu objeto.
Threads x mltiplos processos
A mesma sobreposio pode ser alcanada por mltiplos processos.
Por que um sistema multithread prefervel?
24 SD Cap. 5-6
24 SD Cap. 5-6
Comparao de tempos:
Sistema Unix;
Arquitetura CVAX;
Kernel Topaz;
Anderson et al., 1991;
Teste: processo ou thread criados para fazer uma chamada nula;
Processo: 11 msegs;
Thread: 1 mseg.
Memria:
Um processo recebe page faults logo que inicia sua execuo;
Uma thread tambm!
Entretanto, threads podem se beneficiar dos acessos feitos sobre
suas reas por outras threads;
Pode aproveitar reas colocadas nos caches por outras threads.
Programao de Threads
A programao de threads Programao Concorrente!
Conceitos desta seo: race conditions, seo crtica, variveis de
condio e semforos.
Ex.:
Modula-3, Java: suporte direto threads;
C: extenso por biblioteca;
P Threads: padro de threads para o Posix desenvolvido pelo
IEEE;
GNU Threads: padro da Free Software Foundation para o
SunOS.
25 SD Cap. 5-6
25 SD Cap. 5-6
Obs.:
Grupos so isolados uns dos outros, no sentido de que no
podem ser gerenciados entre si;
Threads de um grupo no podem criar threads de outro;
Grupos podem ter prioridades limites estabelecidas pelo
processo.
Escalonamento de Threads
Preemptivo: uma thread pode ser suspensa pelo escalonador para
que outra execute;
No preemptivo (corrotina): uma thread executa at fazer uma
chamada que cause sua suspenso.
Corrotinas:
26 SD Cap. 5-6
Implementao de Threads
Alguns kernels permitem processos com apenas uma thread;
Porm, h bibliotecas que permitem implementar processos
multithreads.
Ex.: SunOS 4.1 Lightweight Processes (pacote)
O kernel no reconhece as threads;
No h escalonamento de threads independentemente;
Se algum (o processo ou uma thread) faz uma sys call
bloqueante, todos bloqueiam;
As threads de um processo nessas condies no podem executar
num sistema multiprocessador;
A troca de contexto de threads dentro de um processo no
precisa ser feita via sys call;
O escalonamento pode ser especfico da aplicao;
Psyche (SO multiprocessador) - processador virtual (PV):
Um PV um recurso pertencente a um processo;
Implementado no kernel;
Associado com processadores reais;
O processo controla esses recursos diretamente;
Cada um executa uma funo;
O kernel informa o processo dos eventos;
O processo pode trocar uma thread bloqueada em um PV;
Ou pode trocar o PV de um processador real.
26 SD Cap. 5-6
27 SD Cap. 5-6
Reconfigurabilidade
Capacidade de um SD de se adaptar evoluo ou mudanas em
suas condies, tais como carga de rede ou falhas:
Relocao de servidores: ocorre pela criao de novas instncias
de servidores ou por migrao;
Mobilidade de recursos: recursos migram de um servidor para
outro no mesmo servio.
preciso manter as transparncias de localizao e de migrao;
Problema: como reconfigurar o servio on-line?
Proteo de recursos
Objetivo: garantir que os processos s possam acessar os recursos
para os quais tenham permisso.
Problemas:
As redes devem ter abertura;
Os computadores de um SD podem sofrer ataques que alterem
seu software;
A proteo deve ser especfica por servio;
Os servidores podem receber qualquer requisio de qualquer
computador/processo da rede;
27 SD Cap. 5-6
Domnios de proteo
J visto em SO I;
Conjunto de pares (recurso, direitos), relacionando todos os
recursos que podem ser acessados pelos processos que rodam
nesse domnio;
28 SD Cap. 5-6
Garantias de QoS;
Protocolos;
Abertura da implementao;
Procedimentos para aumentar a eficincia.
Primitivas de comunicao
Formas de passagem de mensagens:
Send-receive;
DoOperation-GetRequest-SendReply.
A implementao depende dos recursos disponveis:
As primitivas podem ser confiveis;
Se no forem, isso pode ser alcanado em nveis mais altos;
Uma das formas pode ser implementada usando a outra;
Isso pode ser feito em baixo nvel (kernel) ou em alto nvel (at
na aplicao).
Compartilhamento de memria
28 SD Cap. 5-6
Sincronismo;
Justifica se for bastante usado, j que o custo para estabelecer
alto.
Qualidade de Servio
O que possvel fazer com primitivas no confiveis?
possvel construir uma verso confivel de um Send;
At um RPC com semntica at-least-once ou mesmo at-mostonce;
Comunicao orientada a streams, com um sistema apropriado
de buffers;
Multicast de alto nvel;
Segurana para a comunicao, passando por um servio de
criptografia;
Principal dificuldade latncia satisfatria:
H servios que precisam de mais latncia do que outros;
Multimdia impem restries de tempo real;
O SO deve atender as solicitaes de um mnimo de qualidade
dos usurios ou recusar o servio;
Protocolos e abertura
29 SD Cap. 5-6
Desempenho de Invocao
Mecanismos de invocao:
Chamar um procedimento local;
System call;
Enviar uma mensagem;
RPC;
Chamar um mtodo de um objeto, etc.
Em todos os casos, cdigo executado fora dos limites de quem
chama.
preciso passar argumentos e retornar dados para quem chama.
29 SD Cap. 5-6
Thread
User
kernel
Thread 1
User 1
System Call
Instrues privilegiadas
Thread 2
Kernel
User 2
RPC (entre
computadores)
Thread 1
Thread 2
Rede
User 1
Kernel 1
Kernel 2
User 2
Tipos de operao:
Sncronas: chamada local e RPC;
Assncronas: operao sem retorno de valores.
Desempenho de RPC
RPC nulo: RPC sem parmetros, que executa um procedimento nulo
e no retorna valores.
Melhor tempo reportado para um RPC nulo entre 2 processos
usurios atravs de uma LAN: 1 milisegundo!
Uma chamada local de procedimento executada numa frao
pequena deste tempo.
30 SD Cap. 5-6
30 SD Cap. 5-6
Stub do servidor:
Unmarshall dos argumentos;
Chamada do procedimento correto;
Marshalling dos argumentos;
Envio da resposta.
31 SD Cap. 5-6
31 SD Cap. 5-6
Gerenciadores externos
Em um SD, o computador que recebe um page fault no precisa ser
o mesmo que gerencia os dados:
Ex.: o 1o pode ser diskless;
O gerente um servidor de arquivos remoto;
32 SD Cap. 5-6
32 SD Cap. 5-6
Espao de
endereamento
Page fault
Gerente
externo
msgs
Kernel
Kernel
rede