COMUNICAÇÃO ENTRE PROCESSOS

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

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

Comunicação entre Processos

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

Sistemas de Troca de Mensagens

Sistemas Distribuídos

Arquitetura de Computadores Sistemas Operacionais II

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

Fundamentos de Sistemas Operacionais


Sistemas Distribuídos. Coulouris Capítulo 4

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

Sistemas Distribuídos

Sistemas Distribuídos

Programação concorrente (processos e threads)

Comunicação. capítulo

NFS. Network File System. Network File System

Curso Sistemas Operacionais Distribuídos

Sistemas Distribuídos

Projecto hipotético para resolvermos hoje

Modelos de Sistemas Distribuídos O Modelo Cliente-Servidor

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

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

INTRODUÇÃO. RPC x RMI

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

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

Desenvolvimento de Aplicações Distribuídas

Infra-Estrutura de Software

AULA 3 - REDES. Prof. Pedro Braconnot Velloso

SISTEMAS DISTRIBUÍDOS

Desenvolvimento de Aplicações Distribuídas

UNIVERSIDADE. Sistemas Distribuídos

ATIVIDADES PRÁTICAS SUPERVISIONADAS

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

Protocolo Request-Reply

Principais conceitos de CORBA

Sistemas Distribuídos

Comunicação de Dados II

Dispositivos de Entrada e Saída

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

Índice FCA - EDITORA DE INFORMÁTICA XV

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

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

Dispositivos de Entrada e Saída

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

Sistemas Distribuídos

Programação de Sistemas em Tempo Real

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

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

Comunicação entre Processos

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes

Multiprocessadores & Multicomputadores

Comunicação orientada a mensagens

Capítulo 3: Processos

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

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

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

Arquitetura de sistemas distribuídos

Message Oriented Middleware (MOM)

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

Aula 5 Camada de rede (TCP/IP):

Sistemas Distribuídos

Redes de Computadores

Sistemas Distribuídos

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

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

Processos em Sistemas Distribuídos: Comunicação entre Processos, Nomeação e Sincronizaçã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

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

Sistemas Operacionais II

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

Sistemas Distribuídos

SISTEMAS DISTRIBUÍDOS

Sistemas Operativos. Processos cooperantes e processos independentes

Chamada Remota de Procedimento (RPC)

Message Passing Interface - MPI

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

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

histórico migração de processos em sistemas operacionais distribuídos balanceamento de carga de CPU otimização do uso da rede

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

SIST706 Sistemas Distribuídos

: TMS M

AULA ANTERIOR: MODELOS FUNDAMENTAIS

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

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

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

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

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

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 Sistemas Distribuídos 47 Sistemas Distribuídos 48 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 Sistemas Distribuídos 49 Sistemas Distribuídos 50 Operações: send/receive sincronização Operações: send/receive sincronização 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 Sistemas Distribuídos 51 Sistemas Distribuídos 52 1

Operações: send/receive sincronização 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 Sistemas Distribuídos 53 Sistemas Distribuídos 54 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 ); Sistemas Distribuídos 55 Sistemas Distribuídos 56 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 tem que manter entrada dizendo a próxima máquina para onde o processo migrou; (ou só máquina?) 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) Sistemas Distribuídos 57 Sistemas Distribuídos 58 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 Sistemas Distribuídos 59 Sistemas Distribuídos 60 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 buffer pode estar no espaço do kernel ou do usuário no caso do kernel, caminho da mensagem pode envolver 2 cópias 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 Sistemas Distribuídos 61 Sistemas Distribuídos 62 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 possível deadlock 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) Sistemas Distribuídos 63 Sistemas Distribuídos 64 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 Sistemas Distribuídos 65 Sistemas Distribuídos 66 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 Sistemas Distribuídos 67 Sistemas Distribuídos 68 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 Sistemas Distribuídos 69 Sistemas Distribuídos 70 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 Sistemas Distribuídos 71 Sistemas Distribuídos 72 Troca de mensagens: Mecanismos Arquivos (Unix pipes) Sockets RPC (Remote Procedure Call) RMI (Remote Method Invocation) Java, DCOM, CORBA, Sistemas Distribuídos 73 5