Comunicação entre processos COMUNICAÇÃO ENTRE PROCESSOS. Comunicação entre processos - troca de mensagens

Documentos relacionados
COMUNICAÇÃO ENTRE PROCESSOS

Sistemas Distribuídos 59. Sistemas Distribuídos 61. "Receive não-bloqueante:

Sistemas Distribuídos

Sistemas Operacionais Distribuídos e de Redes

Sistemas Operacionais II

Sistemas Distribuídos Aula 2

Comunicação. Carlos A. G. Ferraz 25/6/2003. Sistemas Distribuídos 1. Tópicos. Camadas. Transmissão de dados. Marshalling/Unmarshalling.

Sistemas Distribuídos Aula 10

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 10. Operações nos processos. Processos cooperativos, comunicação entre processos.

Comunicação entre Processos

Vamos fazer um pequeno experimento

Comunicação entre Processos

Arquitetura de Computadores Sistemas Operacionais II

Sistemas Distribuídos

Dados em programas são estruturados, enquanto que mensagens carregam informação seqüencial: Linearização x Restauração de dados Requisição


Sistemas Distribuídos. Coulouris Capítulo 4

Sistemas de Troca de Mensagens

NFS. Network File System. Network File System

Sistemas Distribuídos

Sockets - Conceitos Básicos. COMUNICAÇÃO ENTRE PROCESSOS Sockets. Conceitos Básicos. Tipos de Sockets

Sistemas Distribuídos

Fundamentos de Sistemas Operacionais

Comunicação. capítulo

Curso Sistemas Operacionais Distribuídos

Projecto hipotético para resolvermos hoje

Programação concorrente (processos e threads)

INTRODUÇÃO. RPC x RMI

Sistemas Distribuídos

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1

Invocação Remota. Prof. Leonardo Barreto Campos. 1/29

Modelos de Sistemas Distribuídos O Modelo Cliente-Servidor

AULA 3 - REDES. Prof. Pedro Braconnot Velloso

Desenvolvimento de Aplicações Distribuídas

Gerência de recursos - escalonamento global. GERÊNCIA DE RECURSOS Escalonamento Global. Gerência de recursos - escalonamento global

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade 5 Camada de Transporte e Aplicação. Luiz Leão

Sistemas Distribuídos: Conceitos e Projeto RPC e RMI

Dispositivos de Entrada e Saída

Infra-Estrutura de Software

Dispositivos de Entrada e Saída

Desenvolvimento de Aplicações Distribuídas

Protocolo Request-Reply

Principais conceitos de CORBA

UNIVERSIDADE. Sistemas Distribuídos

Sistemas Distribuídos

Comunicação de Dados II

Processos e Threads. Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto

Comunicação orientada a mensagens

Capítulo 3: Processos

Índice FCA - EDITORA DE INFORMÁTICA XV

SISTEMAS DISTRIBUÍDOS

Sistemas Distribuídos

ATIVIDADES PRÁTICAS SUPERVISIONADAS

Message Oriented Middleware (MOM)

Aula 5 Camada de rede (TCP/IP):

Troca de Mensagens _ Notas de Aula _ Prof. Tiago Garcia de Senna Carneiro DECOM / UFOP

Programação de Sistemas em Tempo Real

Princípios de Sistemas Distribuídos. Tecnologias utilizadas em sistemas distribuídos Aula 5

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes

Gerência de recursos - escalonamento global. GERÊNCIA DE RECURSOS Escalonamento Global. Gerência de recursos - escalonamento global

Redes de computadores são sistemas complexos Decomposição dos sistemas em elementos realizáveis

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Computação Distribuída Cap. III

Conceito Básicos de Programação com Objetos Distribuídos. Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 1

Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP. Prof. Me. Sérgio Carlos Portari Júnior

Sistemas Distribuídos e Redes de Sensores. abril de 2013

Redes de Computadores. Fundamentos de Sistemas Operacionais - 2º Período

Comunicação entre Processos

Sumário. Message Oriented Middleware (MOM) Sincronização na Comunicação. Comunicação Assíncrona

Direto ou Indireto Monolítico ou Estruturado Simétrico ou Assimétrico Padronizado ou Não-Padronizado

Sistemas Distribuídos

Sistemas Operacionais Aula 15: Sistemas de I/O. Ezequiel R. Zorzal

Multiprocessadores & Multicomputadores

Comunicação entre Processos por Troca de Mensagens. Prof. Celso maciel da Costa

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais

Processos em Sistemas Distribuídos e Comunicação entre Processos

SISTEMAS DISTRIBUÍDOS

Aula 6: Comunicação entre processos. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela

Processos em Sistemas Distribuídos: Comunicação entre Processos, Nomeação e Sincronização

Redes de Computadores

Capítulo 13: Sistemas de E/S. Operating System Concepts with Java 7th Edition, Nov 15, 2006

Sistemas de Arquivos Distribuídos. Bruno M. Carvalho Sala: 3F2 Horário: 35M34

Chamada Remota de Procedimento (RPC)

Arquitetura de sistemas distribuídos

Sistemas Operativos. Processos cooperantes e processos independentes

PROTOCOLOS DE COMUNICAÇÃO

: TMS M

Sistemas Operacionais II

Sistemas Operacionais I Parte V Operações nos Processos. Roteiro. Prof. Gregorio Perez Introdução. Operações nos Processo

15/4/15. Processamento Paralelo Middleware Orientado a Objetos. Sistema operacional é a única infraestrutura para interação. Middleware é adicionado

Aula 04. Capítulo 3 Gerência de Processos. 3.1 Conceito de Processo. 3.2 Escalonamento de Processos. 3.3 Opera ões sobre Processos

AULA ANTERIOR: MODELOS FUNDAMENTAIS

Comutação de pacotes. Não há um estabelecimento de um caminho dedicado. Não há reserva de recursos. Compartilhamento de enlaces ou partes de enlaces

21108 Sistemas Distribuídos Teste Formativo

Sistemas Distribuídos

Protocolo de Enlace de Dados

Sistemas Distribuídos

Modelo de Comunicação

Sistemas Distribuídos Capítulo 8 - Aula 14

Transcrição:

Comunicação entre processos Memória Compartilhada: os processo compartilham variáveis e trocam informações através do uso dessas variáveis compartilhadas COMUNICAÇÃO ENTRE PROCESSOS P1 Sem Memória Compartilhada: os processos compartilham informações através de troca de mensagens o S.O é responsável pelo mecanismo de comunicação entre os processos P1 Área Compartilhda P2 P2 Aspectos importantes para um sistema de troca de mensagens (1) Aspectos importantes para um sistema de troca de mensagens (2) Simplicidade: construção de novas aplicações para interoperar com já existentes deve ser facilitada Semântica Uniforme: comunicação local (processos no mesmo nodo) e comunicação remota (processos em nodos diferentes) através de funções tão próximas quanto possível Eficiência: reduzir número de mensagens trocadas tanto quanto possível economizar fechamento e abertura de conexões; Confiabilidade: garantir entrega da mensagem confirmação, eliminação de duplicatas, ordenação Corretude: relacionada principalmente a comunicação em grupo garantia de aspectos como Atomicidade; Ordenação; Survivability Flexibilidade: possibilidade de utilizar somente funcionalidade requerida (em prol de desempenho) necessidade ou não de entrega garantida, ordenada, atomica, etc Segurança: suporte a autenticação, privacidade Portabilidade: disponibilidade do mecanismo de IPC em plataformas heterogêneas Send bloqueante: processo enviador fica bloqueado até recepção de confirmação do receptor problema: ficar bloqueado para sempre mecanismo de timeout Send nãobloqueante: processo enviador pode proceder assim que conteúdo (dados a enviar) for copiado para buffer de envio Receive bloqueante: processo receptor fica bloqueando na operação de receive até chegada da mensagem problema: ficar bloqueado para sempre mecanismo de timeout Receive nãobloqueante: processo receptor informa ao núcleo onde armazenar mensagem e procede processo receptor fica sabendo da chegada da mensagem por: polling teste periódico interrupção 1

Operações: send/receive tipos de endereçamento quando send e receive são bloqueantes a comunicação é dita síncrona senão é dita assíncrona Send (message) execução suspensa Retoma execução Receive (message) execução suspensa Retoma execução Send (acknowledgement) explícito: processo com o qual se quer comunicar é explicitamente identificado através de um parâmetro implícito: processo com o qual se quer comunicar não é identificado ex.: sender mandando para qualquer receiver que desempenhe uma função/serviço sender nomeia serviço ao invés de processo qualquer processo servidor (de um grupo) que desempenhe esta função pode receber a mensagem receiver quer receber independente do sender: modelo cliente/servidor servidor quer poder servir qualquer cliente Endereçamento explícito: o remetente identifica o recebedor o recebedor identifica o remetente Endereçamento implícito do lado recebedor: remetente identifica o recebedor recebedor recebe de qualquer remetente / * task 0 * / send ( t1, m ); / * task 1 * / receive ( t0, m ); / * task 0 * / send ( t2, m ); / * task 1 * / send ( t2, m ); / * task 2 * / receive ( 1, m ); Operações: send/receive identificação de processos machine_id@local_id segunda parte usada localmente na máquina para achar processo e se processo move? machine_id, local_id, machine_id nome de criação, máquina onde está a máquina onde o processo foi criado deve manter tabela dizendo onde processo se encontra máquinas que um processo visita têm que manter entrada dizendo a próxima máquina para onde o processo migrou; overhead; mensagem alcançar pode depender de vários nodos (falhas?) Operações: send/receive identificação de processos métodos não transparentes: especifica identificador de máquina identificador único do processo não deve ter embutida informação de localização do processo nomeação em dois níveis: nome de alto nível (string) independente de localização nome de baixo nível: como machine_id@local_id servidor de nomes traduz de um para outro processos usam nomes de alto nível para endereçar outros processos durante o send o servidor de nomes é consultado para achar nome de baixo nível (localização) 2

Operações: send/receive bufferização transmissão da mensagem: copiar corpo da mensagem do espaço de endereçamento do processo enviador para espaço de endereçamento do receptor processo recebedor pode não estar pronto para receber SO salva mensagem (SO do lado receptor implementa bufferização) relação com o sincronismo da comunicação síncrona null buffer (um extremo) assíncrona buffer de capacidade ilimitada (outro extremo) tipos intermediários de buffers singlemessage finitebound or multiplemessage Operações: send/receive característica: bufferização null buffer não há espaço temporário para armazenar mensagem para comunicação síncrona 1: mensagem permanece no espaço de endereçamento do processo enviador, que fica bloqueado no send quando receptor faz receive, uma mensagem de confirmação para o enviador é mandada, e o send pode enviar os dados 2: enviador manda a mensagem e espera confirmação se processo receptor não está em receive, kernel descarta mensagem se processo receptor está em receive, manda confirmação se não há confirmação dentro de um tempo (timeout) é sinal de que receptor não estava em receive, e a mensagem é repetida Operações: send/receive bufferização single message buffer para comunicação síncrona idéia: manter a mensagem pronta para uso no local de request message é bufferizada no nodo receptor, caso o processo receptor não esteja pronto para recepção Operações: send/receive bufferização unboundedcapacity buffer para comunicação assíncrona enviador não espera receptor podem existir várias mensagens pendentes ainda não aceitas pelo receptor para garantir entrega de todas mensagens, um buffer ilimitado é necessário Operações: send/receive bufferização finitebound buffer unbounded capacity buffer: impossível na prática necessária para buffer overflow comunicação sem sucesso: send retorna código de erro comunicação com controle de fluxo: o enviador fica bloqueado no send até que o receptor aceite alguma(s) mensagem(s); introduz sincronização entre originador e receptor send assíncrono não é assíncrono para todas mensagens Operações: send/receive codificação e decodificação mensagens entre processos rodando em diferentes arquiteturas transferência de valores de ponteiros para memória perdem significado identificação necessária para dizer tipo de dado sendo transmitido uso de formato comum de transferência (sintaxe de transferência) representação com tags (tagged): mensagem carrega tipo dos dados transferidos. Ex.: ASN.1 (abstract syntax notation CCITT); sistema operacional Mach representação sem tags: receptor tem que saber decodificar mensagem. Ex.: XDR (external Data Representation Sun); Courier (Xerox) 3

Operações: send/receive tratamento de falhas perda de mensagem de pedido Operações: send/receive tratamento de falhas perda de mensagem de resposta Response execução Send response Operações: send/receive tratamento de falhas execução do pedido no destinatário não tem sucesso crash restarted Operações: send/receive tratamento de falhas s four message: confirmação das mensagens de pedido e resposta three message: confirmação da resposta two message: resposta é confirmação Operações: send/receive tratamento de falhas four message: confirmação das mensagens de pedido e resposta Operações: send/receive tratamento de falhas three message: confirmação da resposta 4

Operações: send/receive característica: tratamento de falhas two message: resposta é confirmação Operações: send/receive tratamento de falhas idempotência e tratamento de requests duplicados idempotência: repetibilidade operação idempotente pode ser repetida inúmeras vezes sem causar efeitos colaterais ao servidor ex.: gettime(), sqrt(x) operações não idempotentes necessitam exactelyonce semantics garante que somente uma execução no servidor é realizada ex.: conta.deposita(valor); conta.retira(valor) usar identificador único para cada request; lado servidor guarda reply cache para responder mesma resposta a pedido repetido Troca de mensagens: Mecanismos Arquivos (Unix pipes) Sockets RPC (Remote Procedure Call) RMI (Remote Method Invocation) Java, DCOM, CORBA, 5