Buscar

765084_SO_CPT_s114

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 104 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 104 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 104 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1 
UD II: COMUNICAÇÃO ENTRE PROCESSOS E THREADS 
Referências: 
• FSO1ed : Fundamentos de Sistemas Operacionais, 1ª. ed. , 
Silberschatz, Galvin, Gagne, LTC, 2013. 
• SOMTB3ed (TANENBAUM, A. S. , Sistemas Operacionais Modernos. 
3a. ed. São Paulo: Pearson Prentice Hall, 2010): caps 1, 2, 6, 10 e 11 
• SOJ7ed (SILBERSCHATZ, Abraham; GALVIN, Peter B.; GAGNE. 
Sistemas Operacionais com Java, 7a. ed., Rio de Janeiro: Campus. 
2008): cap 6 e 7 
• ASOM4ed (MACHADO, F.B., Arquitetura de Sistemas Operacionais, 
4ªed., LTC , Rio de Janeiro, 2007): caps 5 e 7 
• SOD3ed (DEITEL, H.M., Sistemas Operacionais, 3ª. ed., SP: Pearson/ 
Prentice Hall, 2005) cap 4, 5 e 6 
• Programação Multithread em Java, Sistemas Distribuídos, Marco Túlio de 
Oliveira Valente, ©MTOV(2006). 
 
2 
Sumário 
• Introdução 
• Memória compartilhada 
• Sinais 
• Pipes 
• Troca de mensagens 
• Soquetes (sockets) 
• Remote and Local Procedure Calls 
• Middlewares 
– RPC, RMI, Web Services, etc. 
3 
Memória compartilhada (Fig 3.13 FSO1ed) 
(a) Troca de mensagens (b) Memória compartilhada 
4 
Memória compartilhada (SOD3ed) 
• Vantagens 
• Melhora o desempenho de processos que acessam freqüentemente 
dados compartilhados. 
• Os processos podem compartilhar a mesma quantidade de dados 
que podem endereçar. 
• Interface padronizada 
• Memória compartilhada System V 
• Memória compartilhada POSIX 
• Não permite que os processos mudem privilégios de um segmento 
de memória compartilhada. 
 
5 
POSIX shared memory 
segment id = shmget(IPC PRIVATE, 
size, S IRUSR | S IWUSR); 
 
shared memory = (char *) shmat(id, 
NULL, 0); 
 
sprintf(shared memory, "Writing to 
shared memory"); 
 
shmdt(shared memory); 
6 
Memória compartilhada: System V 
7 
Implementação de memória compartilhada 
• Trata a região da memória compartilhada como um arquivo. 
 
• As molduras de página de memória compartilhada são liberadas 
quando o arquivo é apagado. 
 
• O tmpfs (sistema de arquivo temporário) armazena esses arquivos. 
 
• As páginas do tmpfs podem ser trocadas. 
 
• É possível definir as permissões. 
 
• O sistema de arquivo não exige formatação. 
 
8 
Memória compartilhada: Windows (SOD3ed) 
 
• Mapeamento-de-arquivo 
• Processa o mapeamento de sua memória virtual para as 
mesmas estruturas de página na memória física. 
• Vários processos acessam o mesmo arquivo. 
• Não há garantia de sincronização. 
• Objeto mapeamento-de-arquivo 
• Mapeia um arquivo para memória principal. 
• Visualização de arquivo 
• Mapeia a memória virtual de um processo para a memória 
principal mapeada pelo objeto mapeamento-de-arquivo. 
9 
Uso de sinais (Fig 5.17 ASOM4ed) 
[ctrl-C]
Processo
interrupção sinal
Sistema Operacional
10 
Sinais, interrupções e exceções (Fig 5.18 ASOM4ed) 
Hardware
Sistema Operacional
Interrupções
Exceções
Sinais
Processo Processo
11 
Sinais 
 
São usados para notificar a ocorrência 
de certos eventos, tais como: resposta a 
interrupções e exceções (p. ex. a 
execução de uma instrução inválida), 
quando um processo encerra outro, etc. 
 
 
 
12 
Tratamento de Sinais (FSO1ed) 
 
• Um manipulador de sinal é usado tratar do sinal. 
1. Um sinal é gerado por um evento específico. 
2. O sinal gerado é distribuído para um processo. 
3. O sinal é tratado. 
• Geralmente, existem as seguintes opções: 
– Enviar o sinal para o thread ao qual o sinal é aplicado. 
– Enviar o sinal para cada thread do processo. 
– Enviar o sinal para certos threads do processo. 
– Atribui um thread específico para receber todos os sinais para o 
processo. 
 
13 
Sinais (SOD3ed) 
 
• Um processo/thread pode tratar um sinal: 
 
1. Ignorar (processos podem ignorar todos, exceto os sinais SIGSTOP 
e SIGKILL). 
2. Capturar (chama um tratador para responder ao sinal). 
3. Executar a ação default que o núcleo define para esse sinal. 
 
• Ações default: 
• Abortar: terminar imediatamente. 
• Descarga de memória: copia o contexto de execução antes de sair. 
• Ignorar. 
• Parar (isto é, suspender). 
• Continuar (isto é, retomar). 
14 
Bloqueio de sinal (SOD3ed) 
• Um processo ou thread pode bloquear um sinal. 
• O sinal não é entregue até que o processo/thread pare de bloqueá-lo. 
 
• Enquanto o tratador de sinal estiver em execução, os sinais desse tipo 
são bloqueados por default. 
• Ainda é possível receber sinais de um tipo diferente. 
 
• Os sinais comuns não são enfileirados. 
• Os sinais de tempo real podem ser enfileirados. 
15 
Sinais POSIX (Tab 10.2 SOMTB3ed) 
16 
Sinais POSIX (SODed) 
17 
Comunicação de Processos: pipes 
• Pipe: pseudo-arquivo usado para conectar dois processos. 
• O processo A envia dados ao processo B escrevendo no pipe 
como se este fosse um arquivo de saída. 
• O processo B lê os dados tratando o pipe como um arquivo de 
entrada. 
18 
Comunicação de Processos: Pipes 
entrada do
Processo A
saída do
Processo B
saída do
Processo A
entrada do
Processo B
Processo A Processo B
19 
pipe: exemplo 
 
ls -la | wc –l 
 
• Shell cria (fork) dois processos. 
• No primeiro processo carrega (exec) o código do programa externo: 
 ls –la 
• No segundo processo carrega (exec) o código do programa externo 
 wc –l 
• Shell cria um pipe para conectar os processos e espera (wait) eles 
terminarem. 
 
• Quando os dois processos terminam (exit), o shell volta a executar. 
 
 
20 
UNIX pipes (SOD3ed) 
• O processo produtor escreve dados para o pipe. Depois disso, o 
processo consumidor lê dados do pipe na ordem “primeiro a 
entrar, primeiro a sair”. 
• Quando um pipe é criado, um inode que aponta para o buffer do 
pipe (página de dados) é criado. 
• O acesso ao pipe é controlado por descritores de arquivo. 
• Podem ser passados entre processos relacionados (por exemplo, 
pai e filho). 
• Pipes nomeados (FIFOs). 
• Podem ser acessados por meio da árvore de diretório. 
• Limitação: buffer de tamanho fixo. 
 
21 
Comunicação interprocessos: Windows 
• Dados orientados 
• Pipes 
• Mailslots (filas de mensagens) 
• Memória compartilhada 
• Procedimento orientado/objeto orientado 
• Chamadas remotas de procedimento 
• Objetos do Modelo de Objeto Componente da Microsoft 
• Área de transferência 
• Recurso de arrastar-e-soltar da GUI 
22 
Windows pipes (SOD3ed) 
• Manipuladas com chamadas ao sistema de arquivo: 
• Ler 
• Escrever 
• Abrir 
• Servidor de pipe 
• Processo que cria o pipe. 
• Clientes de pipe 
• Processos que se conectam ao pipe. 
• Modos 
• Leitura: o servidor de pipe recebe dados dos clientes de pipe. 
• Escrita: o servidor de pipe envia dados aos clientes de pipe. 
• Dúplex: o servidor de pipe envia e recebe dados. 
23 
Windows pipes (SOD3ed) 
• Pipes anônimos 
• Usados para comunicação unidirecional. 
• Entre processos locais. 
• Síncronos. 
• Os manipuladores de pipe em geral são passados por 
herança. 
• Pipes com nomes 
• Comunicação unidirecional ou bidirecional. 
• Entre processos locais e remotos. 
• Síncronos ou assíncronos. 
• Abertos por nome. 
• Fluxo de bytes versus fluxo de mensagens. 
• Modo default versus modo de escrita direta. 
24 
Soquetes (sockets): Redes 
• Permite a conexão entre processos situados em máquinas diferentes 
conectadas através de uma rede de computadores . 
• É uma “ponta” (endpoint) de um canal de comunicação bidirecional 
entre dois programas rodando emuma rede de computadores 
(associado a uma porta TCP/IP) 
25 
Comunicação com sockets (Fig 3.18 FSO1ed) 
26 
Uso de sockets no Unix/Linux (Fig 10.14 SOMTB3ed) 
27 
Sockets 
• Socket é definido como uma extremidade de 
comunicação. 
 
• Concatenação de endereço IP e porta. 
 
• O socket 161.25.19.8:1625 se refere à porta 
1625 no host 161.25.19.8. 
 
• A comunicação ocorre entre um par de sockets. 
28 
Soquetes (SOD3ed) 
• Permitem que pares de processos troquem dados estabelecendo 
canais diretos de comunicação bidirecional. 
 
• Usados principalmente para comunicação bidirecional entre vários 
processos em sistemas diferentes, mas podem ser usados para 
processos no mesmo sistema. 
 
• Armazenados internamente como arquivos. 
 
• O nome do arquivo é usado como endereço do soquete, que é 
acessado por meio do VFS (Linux). 
29 
Windows Winsocks (SODeitel3ed) 
 
• Windows sockets 2 (Winsock 2). 
• Pode ser portado de soquetes BSD com poucas alterações. 
• Executa com uma variedade de protocolos de rede/transporte, 
como TCP/IP ou IPX/SPX. 
• Soquete de fluxo ou de datagrama. 
• Comunicação síncrona ou assíncrona. 
• Transparência de protocolo. 
30 
Troca de Mensagens (Fig 7.6 ASOM4ed) 
Processo
transmissor
Processo
receptor
SEND RECEIVE
Canal de comunicação
31 
 Comunicação direta (Fig 7.7 ASOM4ed) 
Processo A Processo B
32 
Comunicação indireta (Fig 7.8 ASOM4ed) 
Processo A Processo B
Mailbox
ou Port
33 
Troca de Mensagens 
• Mecanismo usado por processos para se comunicar e 
sincronizar suas ações. 
 
• Permite a comunicação entre sem a necessidade de 
compartilhamento de variáveis. 
 
• Operações básicas: 
– send(P, msg): envia msg para P. 
– receive(Q, msg): recebe msg oriunda de Q. 
34 
Filas de mensagens (SOD3ed) 
• Permitem que os processos transmitam informações que são 
compostas por um tipo de mensagem e por uma área de dados de 
tamanho variável. 
• Armazenadas em filas de mensagens, permanecem até que um 
processo esteja preparado para recebê-las. 
• Processos relacionados podem procurar um identificador de fila de 
mensagens em um arranjo global de descritores de fila de 
mensagens. 
• O descritor de fila de mensagens contém: 
• fila de mensagens pendentes; 
• fila de processos em espera de mensagens; 
• fila de processos em espera para enviar mensagens; 
• dados que descrevem o tamanho e o conteúdo da fila de 
mensagens. 
35 
Windows mailslots (SOD3ed) 
• Servidor de mailslot: cria o mailslot. 
• Clientes de mailslot: enviam mensagens ao mailslot. 
• Comunicação 
• Unidirecional. 
• Não fornece confirmação de recebimento. 
• Comunicação local ou remota. 
• Implentada como arquivos. 
• Dois modos 
• Datagrama: para pequenas mensagens. 
• Bloco de Mensagens do Servidor (SMB): para mensagens 
grandes. 
36 
Middleware (Fig 8.29 SOMTB3ed) 
37 
Middleware (Cap 5 SDCO4ed) 
Applications, services
Computer and network hardware
Platform
Operating system 
Middleware
38 
Middleware layers (Figure 5.1 - SDCO4ed) 
Applications 
Middleware 
layers Request reply protocol 
External data representation 
Operating System 
RMI, RPC and events 
39 
Middleware ©MTOV 
• Middleware: qualquer componente de software cujo 
objetivo é auxiliar a programação de uma aplicação 
distribuída 
– Componente de software: biblioteca, API, estrutura de 
dados etc 
– Situa-se acima da camada de transporte e abaixo da camada 
de aplicação 
 ©MTOV (copyright para Marco Túlio de Oliveira Valente) 
 
40 
Middleware ©MTOV 
 
• Middlewares: 
RPC, CORBA, Java RMI, Microsoft DCOM, 
Web Services, etc 
• Motivação: 
– Troca de mensagens: conceito pouco natural 
e primitivo 
– Podem ser usados mecanismos de mais alto 
nível para “esconder” (ou tornar 
transparente) a troca de mensagens 
41 
RPC: chamada a procedimento remoto ©MTOV 
r = soma(x,y) float soma(x,y) { 
 return x+y; 
} 
 
Cliente Servidor 
42 
Remote Procedure Call (RPC) 
• Abstrai o conceito de chamada de procedimento entre 
processos em sistemas em rede, possibilitando que um 
processo chame um procedimento em um outro 
computador. 
• Objetivo: simplificar o processo de escrita de 
aplicações distribuídas preservando a sintaxe de uma 
chamada a procedimento local e, ao mesmo tempo, 
iniciando de modo transparente uma comunicação de 
rede. 
• Stub (proxy) do cliente faz o empacotamento dos 
parâmetros. 
• Stub do servidor recebe a mensagem, desempacota 
os parâmetros e realiza o procedimento. 
43 
RPC : Remote Procedure Call 
• Automatizar o processo de marshalling (empacotamento) e 
unmarshalling (desempacotamento). 
 
• Facilita a comunicação em rede, fazendo com que chamadas 
remotas sejam solicitadas pelo usuário da mesma forma que são 
solicitadas as chamadas locais. 
 
• Abstrai, dos programadores, os passos necessários para localizar 
e executar trechos de programas localizados em outras máquinas. 
44 
RPC: passos (Fig 8.20 SOMTB3ed) 
45 
Modelo de comunicação da RPC (Fig 17.1 SOD3ed) 
46 
Execução de RPC (Fig 3.21 FSO1ed) 
47 
Fluxo da chamada RPC (SOD3ed) 
48 
RPC: Exemplo ©MTOV 
r = soma(x,y) 
float soma(x,y) { 
 
} 
 
float soma(x,y) { 
 
} 
 
float soma(x,y) { 
 return x+y; 
} 
 (1) 
(2) 
(3) (4) 
(5) 
(6) 
Cliente 
Stub 
Cliente 
Stub 
Servidor 
Servidor 
49 
RPC: Exemplo (detalhes) ©MTOV (1) 
• Passo 1: Chamada local: soma (x, y) 
• Passo 2: Stub do cliente “captura” chamada e realiza o 
marshalling de seus parâmetros 
• Passo 3: Envio de mensagem na rede com os parâmetros 
• Passo 4: Recebimento da mensagem na máquina remota 
e chamada ao stub do servidor 
• Passo 5: Stub do servidor realiza o unmarshalling dos 
parâmetros e chama o procedimento remoto 
50 
RPC: Exemplo (detalhes) ©MTOV (2) 
• Passo 6: Execução do procedimento remoto 
• Passo 7: Stub do servidor realiza o marshalling do 
resultado 
• Passo 8: Envio de mensagem de rede com o resultado 
• Passo 9: Recebimento do resultado e chamada ao stub 
do cliente 
• Passo 10: Stub do cliente realiza o unmarshalling do 
resultado e retorna o mesmo à aplicação cliente 
51 
RPC : Remote Procedure Call ©MTOV 
• RPC: Chamada Remota de Procedimento 
– Birrel & Nelson, 1984 
– Protocolo de Apresentação (nível 6) 
• Arquitetura: Utilização de stubs 
– Client Stub: programa instalado no cliente 
– Server Stub: programa instalado no servidor 
• Função dos stubs: 
– Automatizar o processo de marshalling e 
unmarshalling 
52 
Para emitir uma RPC (SOD3ed) 
• O processo do cliente faz uma chamada ao procedimento no 
stub do cliente. 
• O stub do cliente faz a montagem de dados para empacotar 
argumentos de procedimento com o nome do procedimento em 
uma mensagem para transmissão via rede. 
• O stub do cliente transfere a mensagem ao servidor. 
• O servidor transmite a mensagem ao stub do servidor. 
• A mensagem é desmontada. 
• O stub envia os parâmetros ao procedimento local apropriado. 
• Ao concluir o procedimento, o stub do servidor monta o 
resultado e o envia de volta ao cliente. 
• Finalmente, o stub do cliente desmonta o resultado, notifica o 
processo e transfere o resultado a ele. 
53 
RPC: implementações 
• CORBA - padrão independente de 
plataforma. 
• Sun RPC - plafaformas Unix e Linux 
• DCOM - plataforma Windows. 
• RMI - Java. 
• SOAP - padrão para webservices.54 
Windows LPC (Fig 3.17 FSO1ed) 
55 
Windows LPC (Local Procedure Call) 
 
• Somente entre processos do mesmo sistema. 
• Usa portas (como mailboxes) para estabelecer e manter 
canais de comunicação. 
• Cliente obtem um manipulador (handle) para o objeto 
porta de conexão do subsistema. 
• Cliente envia uma solicitação de conexão. 
• Servidor cria duas portas de comunicação privadas e 
retorna o manipulador de uma delas para o cliente. 
• Cliente e servidor usam o manipulador da porta 
correspondente para enviar mensagens ou retorno de 
chamadas e ouvir respotas. 
56 
Windows LPC e RPC (SOD3ed) 
• Processo servidor 
• Executa procedimentos. 
• Processo cliente 
• Chama procedimentos no processo servidor. 
• Chamada local de procedimento (LPC) 
• Processo cliente e processo servidor na mesma máquina. 
• Apenas threads de modo núcleo podem expor LPCs. 
• Chamada remota de procedimento (RPC) 
• Processo cliente e processo servidor em máquinas 
diferentes. 
• Chamada local remota de procedimento (LRPC) 
• Processo cliente e processo servidor na mesma máquina. 
• O processo cliente usa o protocolo RPC. 
57 
Windows LPC (Local Procedure Call - Cap 22 SOJ7ed) 
• LPC permite passar requisições e resultados entre processes clientes e 
servidores situados na mesma máquina. 
• Em particular, ela é usada para requisitar serviços dos vários sub-sistemas 
do Windows. 
• Quando um canal de LPC é criado, um dentre três técnicas de troca de 
mensagens precisa ser especificada: 
– A primeira técnica é adequada para pequenas mensagens (até 
algumas centenas de bytes). Neste caso, a fila de mensagens da porta é 
usada como armazenamento intermediário e as mensagens são 
copiadas de um processo para outro. 
– A segunda técnica é para copiar mensagens maiores. Neste caso, um 
objeto seção de memória compartilhada é criada para o canal. 
– A terceira técnica (denominada quick LPC) utiliza as APIs Win32 que 
leem e escrevem mo espaço de endereçamento de um processo. 
58 
RPC - implementação 
• Para desenvolver uma aplicação cliente 
servidor utilizando o RPC, os seguintes 
passos são necessários: 
– Especificar o protocolo utilizado para a 
comunicação entre o cliente e o servidor 
– Desenvolver aplicação servidor 
– Desenvolver aplicação cliente 
– Gerar os arquivos necessários à compilação 
– Compilar separadamente o servidor e o cliente 
59 
Sistema Sun RPC ©MTOV 
• Dois componentes principais: 
– Linguagem XDR 
– Compilador rpc 
• Linguagem XDR (External Data Representation): 
linguagem para definição do cabeçalho (assinatura) dos 
procedimentos remotos 
• Compilador rpc, chamado rpcgen: dada uma 
especificação em XDR, gera stubs do cliente e do 
servidor 
60 
Files interface in Sun XDR (Fig 5.9 SDCO4ed) 
const MAX = 1000; 
typedef int FileIdentifier; 
typedef int FilePointer; 
typedef int Length; 
struct Data { 
 int length; 
 char buffer[MAX]; 
}; 
struct writeargs { 
 FileIdentifier f; 
 FilePointer position; 
 Data data; 
}; 
struct readargs { 
 FileIdentifier f; 
 FilePointer position; 
 Length length; 
}; 
 
program FILEREADWRITE { 
 version VERSION { 
 void WRITE(writeargs)=1;
 1 
 Data READ(readargs)=2;
 2 
 }=2; 
} = 9999; 
61 
Objeto Remoto (SDCO4ed) 
• Um objeto remoto é aquele que pode ser invocado a partir de um 
outro processo. 
 
• Uma referência a um objeto remoto é um identificador para um 
objeto remoto que é usado para se referir a ele como o alvo de 
uma invocação remota e pode ser passada como um argumento 
ou resultado de uma invocação remota de método. 
 
• Clientes precisam de referência ao objeto remoto para fazer uma 
invocação remota. 
 
• Referências a objetos remotos podem ser obtidas através do 
binder ou como resultado de uma RMI. 
62 
Interface Remota (SDCO4ed) 
• Uma interface remota especifica os métodos de um 
objeto que são disponíveis invocação por objetos 
remotos em outros processos. 
 
63 
Objetos Distribuídos (SDTB) 
• Common organization of a remote object 
with client-side proxy. 
2-16 
64 
Remote object and its remote interface (Figure 5.4 SDCO4ed) 
interface 
remote 
m1 
m2 
m3 
m4 
m5 
m6 
Data 
implementation 
remote object 
{ 
of methods 
65 
Remote Method Invocation (FSO1ed) 
66 
Remote Method Invocation(FSO1ed) 
67 
RMI: Invocação a método remoto (SOD3ed) 
• Remote Method Invocation (RMI) possibilita que um programa 
Java invoque um método de um objeto remoto usando a mesma 
sintaxe de uma chamada a método local. O é mecanismo 
semelhante ao RPC. 
• Os detalhes da montagem de parâmetros e do transporte de 
mensagens por RMI são transparentes ao programa que emite a 
chamada 
• A camada de stub/esqueleto da RMI contém estruturas de 
montagem de parâmetros análogas aos stubs de cliente e 
servidor da RPC. 
• O stub emprega serialização de objeto e permite que os 
programas passem objetos Java como parâmetros e recebam 
objetos como valores de retorno. 
68 
Java RMI ©MTOV 
 
• Stub e Skeleton: equivalente a stubs de 
RPC 
– Stub: parte que executa no cliente 
– Skeleton: parte que executa no servidor 
 
• rmic: compilador usado para gerar stub e 
skeleton 
 
69 
Passos para RMI 
 
• Passo 1: Definição da Interface Remota 
• Passo 2: Implementação da Interface 
Remota (servidor) 
• Passo 3: Implementação do Cliente 
• Passo 4: Compilação 
• Passo 5: Execução 
70 
Exemplo 1: Servidor de data usando Java RMI 
• Exemplo do cap 4 (SO com JAVA (2004) pg 98) . 
• Codificar um servidor com um objeto da seguinte classe: 
 class RemoteDateImpl .... { ...... 
 public abstract Date getData( ) ; 
........ 
} 
Codificar um cliente que chame remotamente o método 
getData( ) deste objeto 
71 
Exemplo 1: RMI Interface RemoteDate 
/* interface RemoteDate (Interface do objeto remoto) 
 Exemplo do cap 4 (SO com JAVA (2004) pg 98) . 
*/ 
import java.rmi.*; 
import java.util.*; 
 
public interface RemoteDate extends Remote 
{ 
 public abstract Date getData() throws RemoteException; 
} 
72 
Implementação da Interface RemoteDate (1) 
import java.rmi.*; 
Import java.rmi.server.UnicastRemoteObject; 
import java.util.Date; 
public class RemoteDateImpl extends UnicastRemoteObject 
 implements RemoteDate 
{ 
 public RemoteDateImpl( ) throws RemoteException { }; 
 public Date getData( ) throws RemoteException 
 { 
 return new Date( ); 
 } 
73 
Implementação da Interface RemoteDate (2) 
public static void main(String[ ] args) { 
/* nomeia o objeto remoto nomeado como DataServer 
 try { 
 RemoteDate dataServer = new RemoteDateImpl( ); 
/* Associa essa estância de objeto ao nome “DateServer” */ 
 Naming.rebind("DateServer", dateServer); 
 } 
 catch( Exception e ) { 
 System.out.println( e ); 
 } 
 } 
} 
74 
Cliente RMI 
import java.rmi.*; 
public class RMIClient 
{ 
 public static void main(String[] args) { 
 try { /* localiza o objeto remoto nomeado DataService */ 
 /* Chama o método do objeto remoto (getData). */ 
 String host = "rmi:// 127.0.0.1 /DateServer"; 
 RemoteDate dataServer = (RemoteDate) Naming.lookup( 
host); 
 System.out.println( dataServer.getData()); 
 } 
 catch( Exception e ) { 
 System.out.println( e ); 
 } 
 } 
} 
75 
SOA: Modelo básico operacional 
76 
76 
Arquiteturas Orientadas por Serviços©MTOV 
UDDI 
SOAP 
WSDL 
Fonte: Web Services: Concepts, Architecture and Applications. Gustavo Alonso, 
Fabio Casati, Harumi Kuno, Vijay Machiraju. Springer Verlag, 2004 
77 
• Service provider (provedor de serviços): plataforma que hospeda o 
web service permitindo que os clientes acessem o serviço. 
 
• Service broker: registra e descobre os serviços na Web, lista os 
vários tipos de serviços, descrições e locais do serviços que 
auxiliam o solicitante dos serviços (service requestor) a encontrar e 
acessar os serviços requiridos. 
 
• Service requestor (solicitante ou usuário dos serviços): localiza o 
serviço usando o service broker, invoca o serviço requerido e o 
executa no service provider. 
SOA: Modelo básico operacional 
78 
Service-Oriented Architecture : SOA 
Arquitetura Orientada a Serviços (SOA: Service-Oriented 
Architecture): 
• Estratégia de TI (Tecnologia de informação) que transforma 
funções de negócios existentes nas aplicações das 
empresas em serviços de software que se comunicam 
entre si por meio de contratos bem definidos de tal modo 
que possam ser reutilizados. 
 
• As aplicações são quebradas em componentes de serviços, 
que por sua vez podem ser combinados e misturados com 
outros serviços de acordo com a necessidade dos 
negócios. 
79 
Service-Oriented Architecture : SOA 
• Disponibiliza aplicativos ou rotinas como serviços em uma 
rede de computadores (Internet ou Intranets) de forma 
independente e se comunicando através de padrões 
abertos. 
 
• SOA pode ser implementada usando qualquer tecnologia 
padronizada baseada em web. 
 
• A maior parte das implementações de SOA se utilizam da 
tecnologia de Web services. 
80 
WS: Serviços Web (SOD3ed) - 1 
• CORBA, DCOM não podem se comunicar facilmente, pois seus 
componentes precisam se comunicar via uma ponte (adaptador) 
COM/CORBA. 
 
• Se os protocolos subjacentes mudarem a ponte (adaptador) deve ser 
modificado para refletir estas modificações (SOD3ed). 
 
• Serviços Web (Web Services) usam padrões abertos para obter uma 
maior interoperabilidade e integração de aplicações 
independentemente de plataformas e linguagens de programação. 
 
81 
Serviços Web (SOD3ed) - 2 
• Compreendem um conjunto de padrões relacionados 
que podem habilitar aplicações de computador a 
comunicar-se e a trocar dados pela Internet. 
 
• Independem de tecnologia e plataforma. 
 
• Melhoram o desenvolvimento de software colaborativo 
por permitir que os desenvolvedores criem aplicações 
associando códigos escritos em qualquer linguagem 
em qualquer plataforma. 
82 
Serviços Web (SOD3ed) - 3 
• Promovem a programação modular. 
 
• Toda função específica em uma aplicação pode ser exibida 
como um serviço Web distinto. 
 
• Pessoas ou empresas podem criar suas próprias aplicações 
mesclando e associando serviços Web que ofereçam a 
funcionalidade de que precisam. 
 
• A modularização é menos propensa a erros e possibilita a 
reutilização de software. 
83 
WS: Serviços Web (SOD3ed) – 4 
• Facilitam a comunicação entre as aplicações que residem em 
múltiplas plataformas, usando diferentes modelos de objetos e 
padrões de interoperabilidade como XML, SOAP, WSDL e 
UDDI. 
 
• São semelhantes a CORBA, DCOM e Java RMI, porém usam 
protocolos e padrões da Web como HTTP, XML, SOAP, 
WSDL e UDDI. 
84 
Serviços Web (Web Services) 
• Abrangem um conjunto de padrões relacionados 
que podem habilitar quaisquer duas aplicações de 
computador a se comunicar e trocar dados via 
Internet (SO-Deitel-2005). 
 
• São aplicações distribuídas que se comunicam por 
meio de mensagens XML, formatadas e encapsuladas 
segundo o protocolo SOAP e transportadas via HTTP 
(©MTOV). 
 
• São uma extensão e adaptação do conceito de 
chamada remota de métodos para a Web, com 
informações estruturadas e interfaces bem definidas. 
85 
Serviços Web (Web Services) 
• Integração de aplicações 
 
• Serviços Web podem ser tão triviais como multiplicar dois 
números ou tão complexo quanto a função executada por um 
sistema de software CRM da FedEx para rastrear a localização 
e andamento de uma encomenda (fedex.com/us/tracking). 
 
• Exemplos: 
Sistemas B2B, Amazon Web Services (amazon.com/ 
gp/aws/landing.html), Google Web Service (google.com/apis). 
 
86 
Serviços Web (©MTOV) - 5 
• Interfaces são definidas na linguagem WSDL 
 
• São registrados em servidores UDDI. 
 
• No CORBA: 
– HTTP e TCP fazem o papel do TCP em CORBA 
– XML e SOAP fazem o papel do IIOP em CORBA 
– WSDL faz o papel de IDL em CORBA 
– UDDI faz o papel de um serviço de nomes em 
CORBA 
87 
WS x Outras soluções RPC (Java RMI e CORBA) 
Registro 
Descrição de 
Serviços 
Transporte 
Java RMI 
RMI Registry 
Java 
Java RMI 
CORBA 
COS Naming 
OMG IDL 
IIOP 
Web Services 
UDDI 
WSDL 
SOAP 
88 
SOAP: Estrutura da Mensagem (1) 
89 
SOAP: Arquitetura ©MTOV 
Fonte: Paulo Pires e Marta Matoso. Tecnologia de Serviços Web. Mini-curso SBES 
2005. 
90 
Simple Object Access Protocol: SOAP (©MTOV) - 1 
• Protocolo de mensagens, desenvolvido inicialmente pela 
Microsoft, IBM e Lotus, para transportar informações e instruções 
entre Serviços Web (SO-Deitel-2005). 
 
• É um protocolo W3C para executar métodos remotos através de 
RPC e trocar informações na Internet. 
 
• Utiliza XML para codificação de mensagens e HTTP (porta 80) 
para transporte de mensagens de um nodo a outro. 
 
• Permite adicionar serviços a um servidor Web e então acessar 
estes serviços a partir de programas comuns. 
91 
Simple Object Access Protocol: SOAP (©MTOV) - 2 
• Serviços: objetos, com métodos chamados remotamente. 
 
• SOAP especifica como representar em XML todas 
informações necessárias para se executar uma chamada 
remota: 
– Formato da mensagem de ida (com os argumentos) 
– Formato da mensagem de volta (com o resultado) 
 
• Independente de linguagem de programação 
92 
Web Service Description Language : WSDL - 1 
• Linguagem baseada em XML responsável por prover as 
informações necessárias para a invocação do Web Service, ou 
seja: localização, operações disponíveis e assinaturas. 
 
• Fornece um método padronizado para descrever Serviços Web e 
suas capacidades específicas (SOD3ed). 
 
• Descreve a localização e a interface de um WS: 
– Nome e URL do serviço (“binding information”) 
– Assinatura dos métodos disponíveis para chamada remota 
(“abstract interface”) 
 
93 
Web Service Description Language : WSDL - 2 
• É semelhante a IDL em CORBA, porém com a sintaxe baseada 
em XML 
 
• Permite, através da definição de um vocabulário em XML, a 
possibilidade de descrever serviços e a troca de mensagens. 
 
• Permite que um cliente de um Web Service obter o formato dos 
métodos a serem chamados, parâmetros a serem passados e e 
como processar uma requisição. 
 
• Existem ferramentas que geram especificações WSDL a partir, 
por exemplo, de interfaces Java. 
94 
Exemplos de utilização de SOAP com Web 
 
Exemplo 1: Acesso a Web Services através do Navegador 
 
 
Exemplo 2: Cliente acessa Web Services no servidor 
 
95 
Exemplo 1 
96 
Exemplo 2 
97 
A plataforma .NET da Microsoft (SODeitel3ed) - 1 
• Estende o conceito de reutilização de software à Internet permitindo que 
os desenvolvedores reutilizem componentes de software que residem em 
outras máquinas ou plataformas. 
 
• A iniciativa .NET 
• Inclui o ambientede desenvolvimento integrado Visual Studio .NET. 
• Permite que os programadores desenvolvam serviços Web em uma 
variedade de linguagens, incluindo: C++, C# e Visual Basic .NET 
• As tecnologias .NET são disponíveis para a plataforma Windows, 
mas existem implementações multiplataformas como o MONO. 
98 
A plataforma .NET da Microsoft (SODeitel3ed) - 2 
• Substitui a DCOM. 
• Aplicações locais conversam com aplicações remotas para executar 
requisições do usuário. 
• Serviços Web 
• Aplicações que podem ser acessadas na Web. 
• Os dados são transportados em XML sobre HTTP. 
• Interoperáveis. 
• Modelo de programação estrutura .NET 
• API estendida para a API do Windows para incluir suporte a serviços 
Web. 
• Visual Basic .NET, Visual C++ .NET, C#. 
• Componentes do servidor.NET : Sites Web, Windows 2003 Server etc. 
99 
Estrutura do Framework 
.NET 
100 
Tecnologia .Net: MSIL, CLR , ASP.NET 
101 
Modelo de execução de um programa .NET 
102 
.Net Framework (Glauber2007) 
• Ambiente para desenvolvimento e execução de programas 
que no Common Language Runtime (CLR), nas classes do 
Framework e na ASP.NET. 
 
• Pode usar diferentes linguagens e bibliotecas para criar 
aplicativos baseados na arquitetura do Windows. 
 
• O .Net framework em conjunto com o IIS permite construir, 
gerenciar, implantar e integrar aplicativos Web. 
 
103 
.Net Framework (Glauber2007) 
• MSIL (Microsoft Intermediate Language): indiferente de qual linguagem 
.Net que estiver sendo usada, o código é gerado em MSIL. 
• CLR (Common Language Runtime): sistema complexo responsável por 
executar o código MSIL no computador. Ele toma conta de todos os 
aspectos básicos envolvendo a comunicação com o Windows e com o 
IIS (Internet Information Services). 
• Linguagens .NET: linguagens de programação que obedecem a certos 
requerimentos estruturais específicos (conforme definido pela 
especificação CLR) e que podem ser então compiladas para MSIL. 
• ASP.NET: responsável por tratar assuntos referentes a tecnologia Web, 
usando o IIS para gerenciar páginas simples de código. 
• ADO.NET: responsável pelo processo de persistência a banco de dados e 
manipulação do mesmo. 
104 
Tecnologia Java: Plataforma e API’S

Outros materiais