A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Inter-process Communication (IPC) Comunicação entre processos"— Transcrição da apresentação:

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

2 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

3 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

4 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

5 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

6 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

7 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

8 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

9 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

10 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

11 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

12 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

13 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

14 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

15 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

16 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

17 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

18 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

19 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

20 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

21 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

22 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

23 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

24 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, ISBN Tutorial online: POSIX Threads Programming Nenad Marovac. "On interprocess interaction in distributed architectures", ACM SIGARCH Computer Architecture News, 11(4), 1983 LPRM/DI/UFES Sistemas Operacionais

25 Memória Compartilhada no UNIX

26 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

27 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

28 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

29 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

30 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

31 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 LPRM/DI/UFES Sistemas Operacionais


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

Apresentações semelhantes


Anúncios Google