Inter-process Communication (IPC) Comunicação entre processos

Slides:



Advertisements
Apresentações semelhantes
Sistemas Operacionais - Aula 6
Advertisements

Sistemas Operacionais
Sistemas Operacionais
Sistemas Distribuídos
Sistemas Operacionais
Sistemas Operacionais Sincronismo e Comunicação entre processos
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Sistemas Operacionais
Transmissão de pacotes
Redes de computadores II
Noções de Sistemas Operacionais
Técnicas para operações E/S
Sistema de Arquivos - PROTEÇÃO DE ARQUIVOS
Software Básico Silvio Fernandes
Software Básico Silvio Fernandes
Processos no Unix e Linux
Escalonamento Linux.
Capítulo 1 Introdução 1.1 O que é um sistema operacional
Arquitetura de Sistemas Operacionais
Arquitetura de Sistemas Operacionais
Arquitetura de Sistemas Operacionais
Análise de Requisitos Use Case Renata Araujo Ricardo Storino
Chapter 4: Threads.
Sistemas Operacionais II
Interação Cliente Servidor
Threads Estagiário: Bruno Guazzelli Batista Slides de autoria do Prof Drº Marcos José Santana baseados no livro Sistemas Operacionais Modernos de A. Tanenbaum.
Descrição de hardware em SystemC
Estudo de Caso 1: UNIX e LINUX
Capítulo 1 Introdução 1.1 O que é um sistema operacional
Sistemas Operacionais
Sincronização de Processos (5)
Sinais no UNIX.
Sistemas de Arquivos.
Processos Conceitos Básicos.
Estruturas de Controle
SVCs para Controle de Processos no Unix
SVCs para Controle de Processos no Unix
Gerência de Memória Algoritmos de Substituição de Páginas
Sincronização e Comunicação entre Processos
09/03/10 20:13 Claudio de Oliveira – 1/21.
Threads.
Sistemas Operacionais SISTEMA DE ENTRADA E SAÍDA
Classes e objetos P. O. O. Prof. Grace.
Sistemas Operacionais Adriana Vettorazzo
Sistemas Operacionais
Arquitetura de Sistemas Operacionais – Machado/Maia 10/1 Arquitetura de Sistemas Operacionais Francis Berenger Machado Luiz Paulo Maia Capítulo 10 Gerência.
Unidade 1-1 Processos e Threads
Universidade São Marcos Curso: Gestão de Negócios Internacionais
SISTEMAS OPERACIONAIS
Arquitetura de computadores
Sistemas Operacionais
Processo Entidade dinâmica e efêmera
Sistemas Operacionais
Conteúdo 1. Introdução Threads 2. Ambiente Monothread 3. Ambiente Multithread 4. Arquitetura e Implementação 5. Modelos de Programação.
GERENCIAMENTO DE REDES UTILIZANDO O PROTOCOLO SNMP
Conteúdo Processos e threads Partes do processo
1 2 Observa ilustração. Cria um texto. Observa ilustração.
Capítulo 1 Introdução 1.1 O que é um sistema operacional
Capítulo 7: Deadlocks.
SISTEMAS OPERACIONAIS I
Computação L1: Infra-Estrutura Básica
UML - Unified Modeling Language
Sistemas Operacionais
Sistemas Operacionais
Troca de Mensagens Programação concorrente
Capítulo 4: Processos.
SISTEMAS OPERACIONAIS
Capítulo 2 Processos e Threads 2.1 Processos 2.2 Threads
Bruna Cavallero Martins Universidade Católica de Pelotas.
Transcrição da apresentação:

Inter-process Communication (IPC) Comunicação entre processos Memória compartilhada Troca de mensagens Pipes Sinais

Comunicação entre processos (1) Processos executam em cápsulas autônomas Hardware oferece proteção de memória Um processo não acessa outro processo P1 P2 Acesso direto LPRM/DI/UFES Sistemas Operacionais

Comunicação entre processos (2) Como foi visto, os processos precisam interagir/ cooperar Coordenar o uso de recursos compartilhados Aumentar a velocidade de computação Desenvolvimento modular Atender a requisições simultâneas etc. Como interagir ? Via mecanismos de IPC: Inter-Process Communication LPRM/DI/UFES Sistemas Operacionais

Comunicação entre processos (3) Ocorre através do S.O. Implementação de “canais” de comunicação Implicita ou explicitamente canal P1 P2 System call System call S.O. LPRM/DI/UFES Sistemas Operacionais

Comunicação entre processos (4) Características desejáveis para IPC Rápida Simples de ser utilizada e implementada Um modelo de sincronização bem definido Versátil Funcione igualmente em ambientes distribuídos Sincronização é uma das maiores preocupações em IPC Permitir que o sender indique quando que um dado foi transmitido Permitir que um receiver saiba quando um dado está disponível Permitir que ambos saibam o momento em que podem realizar uma nova IPC LPRM/DI/UFES Sistemas Operacionais

Mecanismos de comunicação Fundamentalmente duas abordagens: Suportar alguma forma de espaço de endereçamento compartilhado Shared memory Utilizar mecanismos do próprio S.O. para transportar dados de um processo para outro Troca de mensagens Pipes Sinais etc. LPRM/DI/UFES Sistemas Operacionais

Memória Compartilhada (1) Quando um mesmo trecho (segmento) de memória encontra-se no espaço de endereçamento de dois ou mais processos O S.O. oferece chamadas permitindo a criação da região de memória compartilhada, mas não se envolve diretamente na comunicação entre os processos Se um processo realiza alguma modificação nesta região, ela é vista por todos os processos que compartilham o segmento de memória LPRM/DI/UFES Sistemas Operacionais

Memória Compartilhada (2) main () { . x = 10 } . print(x); write variable x x: 10 read variable x Process A Process B LPRM/DI/UFES Sistemas Operacionais

Memória Compartilhada (3) Vantagens Random Access É possível acessar uma parte específica de uma estrutura de dados e não a estrutura completa Eficiência Corresponde à maneira mais rápida para que dois processos efetuem uma troca de dados Os dados não precisam ser passados ao kernel para que este os repasse aos outros processos, o acesso à memória é direto Desvantagens Não existe um mecanismo automático de sincronização Pode exigir o uso de semáforos, locks, etc., por parte dos processos. LPRM/DI/UFES Sistemas Operacionais

Introdução Mecanismos de memória compartilhada permite que diferentes processos acessem (leitura/escrita) um mesmo segmento de memória Definido na extensão POSIX:XSI As áreas de memória compartilhadas e os processos que as utilizam são gerenciados pelo núcleo, mas o acesso ao conteúdo de cada área é feito diretamente pelos processos LPRM/DI/UFES Sistemas Operacionais

Criação e uso de uma área de memória compartilhada (1) Pode ser resumida na seguinte seqüência de passos O processo pa solicita ao núcleo a criação de uma área de memória compartilhada, informando o tamanho e as permissões de acesso; o retorno dessa operação é um identificador (id) da área criada. LPRM/DI/UFES Sistemas Operacionais

Criação e uso de uma área de memória compartilhada (2) O processo pa solicita ao núcleo que a área recém-criada seja anexada ao seu espaço de endereçamento; esta operação retorna um ponteiro para a nova área de memória, que pode então ser acessada pelo processo. O processo pb obtém o identificador id da área de memória criada por pa. LPRM/DI/UFES Sistemas Operacionais

Criação e uso de uma área de memória compartilhada (3) O processo pb solicita ao núcleo que a área de memória seja anexada ao seu espaço de endereçamento e recebe um ponteiro para o acesso à mesma. Os processos pa e pb acessam a área de memória compartilhada através dos ponteiros informados pelo núcleo. LPRM/DI/UFES Sistemas Operacionais

Exemplo de Programa Criação e uso de uma área de memória compartilhada Uma chave nada mais é do que um valor inteiro longo. Ela é utilizada para identificar uma estrutura de dados que vai ser referenciada por um programa. Existe uma função que permite a criação de chaves de maneira única no sistema, denominada ftok(). LPRM/DI/UFES Sistemas Operacionais

Tubos (pipes) (1) Conceito inventado para shells Unix Portado para DOS, OS/2, Windows NT, and BeOS É uma das formas mais divulgadas de IPC Nome origina-se na analogia com um pipeline First, curl obtains the HTML contents of a web page. Second, sed removes all characters which are not spaces or letters from the web page's content, replacing them with spaces. Third, tr changes all of the uppercase letters into lowercase and converts the spaces in the lines of text to newlines (each 'word' is now on a separate line). Fourth, grep removes lines of whitespace. Fifth, sort sorts the list of 'words' into alphabetical order, and removes duplicates. Finally, comm finds which of the words in the list are not in the given dictionary file (in this case, /usr/dict/words). LPRM/DI/UFES Sistemas Operacionais

Tubos (pipes) (2) Os tubos (ou pipes) constituem um mecanismo fundamental de comunicação unidirecional entre processos Eles são um mecanismo de I/O com duas extremidades, correspondendo na verdade a filas de caractereres do tipo FIFO Em geral, essas extremidades são implementadas através de descritores de arquivos Um pipe tradicional caracteriza-se por ser: Anônimo (não tem nome) Temporário: dura somente o tempo de execução do processo que o criou Vários processos podem fazer leitura e escrita sobre um mesmo pipe, mas nenhum mecanismo permite diferenciar as informações na saída do pipe LPRM/DI/UFES Sistemas Operacionais

Tubos (pipes) (3) A capacidade é limitada Se a escrita sobre um pipe continua mesmo depois do pipe estar completamente cheio, ocorre uma situação de bloqueio É impossível fazer qualquer movimentação no interior de um tubo. Com a finalidade de estabelecer um diálogo entre dois processos usando pipes, é necessário a abertura de um pipe em cada direção. LPRM/DI/UFES Sistemas Operacionais

Tubos (pipes) (4) Named pipe (pipe nomeado ou FIFO) Trata-se de uma extensão do conceito de pipe O pipe nomeado persiste além da vida do processo Precisa ser "desligado" ou apagado quando não é mais usado Os processos geralmente se conectam a um pipe nomeado quando necessitam realizar alguma comunicação com outro processo Normalmente são implementados através de arquivos especiais Um processo abre o FIFO para escrita, outro para leitura LPRM/DI/UFES Sistemas Operacionais

Troca de Mensagens (1) S.O. Processo A Processo B Dado enviado de A a B Fila de mensagens de B LPRM/DI/UFES Sistemas Operacionais

Troca de Mensagens (2) Decisões de implementação Como os canais são estabelecidos ? Canais ponto-a-ponto ou multiponto ? Canais unidirecionais ou bidirecionais ? Quantos canais podem existir entre dois processos ? Qual a capacidade de buffering de um canal ? Mensagens de tamanho fixo ou variável ? etc. LPRM/DI/UFES Sistemas Operacionais

Sinais (1) Um sinal é um mecanismo de software usado pelo sistema para informar os processos da ocorrência de eventos “anormais” (e assíncronos) dentro do ambiente de execução Podem ser gerados em diferentes situações Chamando kill() O kernel usa sinais para notificar um processo da ocorrência de uma exceção de hardware O driver de um terminal manda um sinal a um processo quando uma tecla específica foi apertada ... Tipos de sinais: Divisão por zero Acesso inválido à memória Interrupção do programa Término de um processo filho Alarme LPRM/DI/UFES Sistemas Operacionais

Sinais (2) Sinais também representam um mecanismo que possibilita a comunicação entre diferentes processos Sinais são mensagens pré-definidas, contendo apenas um código numérico O processo receptor conhece apenas o tipo do sinal, sem conhecer efetivamente o emissor desse sinal Desvantagem Nenhum dado é especificado para ser trocado entre os processos Em geral, o número de sinais a serem utilizados é bastante reduzido Apresenta uma semântica complexa para threads… LPRM/DI/UFES Sistemas Operacionais

Sinais (3) Mecanismo de notificação: Ao receber um sinal: Em geral, quando um sinal é gerado, o S.O. notifica ao processo setando um bit na sua máscara de sinais pendentes Ao receber um sinal: Um processo pode interromper sua execução e desviar para um tratador (handler) previamente definido O sinal pode ser ignorado Ou pode-se confiar no comportamento default do S.O. Abortar o processo, suspender o processo, continuar (resume) a execução do processo O processo responde imediatamente ao sinal? Máscaras Permitem bloquear determinados sinais para que os mesmos não sejam enviados ao processo Pode ser temporário LPRM/DI/UFES Sistemas Operacionais

Referências Deitel H. M.; Deitel P. J.; Choffnes D. R.; “Sistemas Operacionais”, 3ª. Edição, Editora Prentice-Hall, 2005 Seção 3.5 Stevens, Richard. UNIX Network Programming, Volume 2, Second Edition: Interprocess Communications. Prentice Hall, 1999. ISBN 0-13-081081-9 Tutorial online: POSIX Threads Programming http://www.llnl.gov/computing/tutorials/pthreads/ Nenad Marovac. "On interprocess interaction in distributed architectures", ACM SIGARCH Computer Architecture News, 11(4), 1983 http://portal.acm.org/citation.cfm?id=641598&coll=&dl=ACM&CFID=15151515&CFTOKEN=6184618 LPRM/DI/UFES Sistemas Operacionais

Memória Compartilhada no UNIX

Introdução Mecanismos de memória compartilhada permite que diferentes processos acessem (leitura/escrita) um mesmo segmento de memória Definido na extensão POSIX:XSI As áreas de memória compartilhadas e os processos que as utilizam são gerenciados pelo núcleo, mas o acesso ao conteúdo de cada área é feito diretamente pelos processos LPRM/DI/UFES Sistemas Operacionais

Criação e uso de uma área de memória compartilhada (1) Pode ser resumida na seguinte seqüência de passos O processo pa solicita ao núcleo a criação de uma área de memória compartilhada, informando o tamanho e as permissões de acesso; o retorno dessa operação é um identificador (id) da área criada. LPRM/DI/UFES Sistemas Operacionais

Criação e uso de uma área de memória compartilhada (2) O processo pa solicita ao núcleo que a área recém-criada seja anexada ao seu espaço de endereçamento; esta operação retorna um ponteiro para a nova área de memória, que pode então ser acessada pelo processo. O processo pb obtém o identificador id da área de memória criada por pa. LPRM/DI/UFES Sistemas Operacionais

Criação e uso de uma área de memória compartilhada (3) O processo pb solicita ao núcleo que a área de memória seja anexada ao seu espaço de endereçamento e recebe um ponteiro para o acesso à mesma. Os processos pa e pb acessam a área de memória compartilhada através dos ponteiros informados pelo núcleo. LPRM/DI/UFES Sistemas Operacionais

Exemplo de Programa Criação e uso de uma área de memória compartilhada Uma chave nada mais é do que um valor inteiro longo. Ela é utilizada para identificar uma estrutura de dados que vai ser referenciada por um programa. Existe uma função que permite a criação de chaves de maneira única no sistema, denominada ftok(). LPRM/DI/UFES Sistemas Operacionais

Referências VAHALIA, U. Unix Internals: the new frontiers. Prentice-Hall, 1996. Seção 6.2 Deitel H. M.; Deitel P. J.; Choffnes D. R.; “Sistemas Operacionais”, 3ª. Edição, Editora Prentice-Hall, 2005 Seção 20.10.5 LPRM/DI/UFES Sistemas Operacionais