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

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

Embed Size (px)

Citation preview

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

Memória compartilhadaTroca de mensagens

PipesSinais

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

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

http://www.inf.ufes.br/~rgomes/so.htm

2 Sistemas OperacionaisLPRM/DI/UFES

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

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

http://www.inf.ufes.br/~rgomes/so.htm

3 Sistemas OperacionaisLPRM/DI/UFES

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

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

http://www.inf.ufes.br/~rgomes/so.htm

4 Sistemas OperacionaisLPRM/DI/UFES

Comunicação entre processos (3)

Ocorre através do S.O. Implementação de “canais” de comunicação

Implicita ou explicitamente

S.O.

P1 P2

System call System call

canal

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

http://www.inf.ufes.br/~rgomes/so.htm

5 Sistemas OperacionaisLPRM/DI/UFES

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

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

http://www.inf.ufes.br/~rgomes/so.htm

6 Sistemas OperacionaisLPRM/DI/UFES

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.

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

http://www.inf.ufes.br/~rgomes/so.htm

7 Sistemas OperacionaisLPRM/DI/UFES

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

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

http://www.inf.ufes.br/~rgomes/so.htm

8 Sistemas OperacionaisLPRM/DI/UFES

Memória Compartilhada (2)

Process A Process B

write variable xmain () {

.x = 10...

}

.

.

.print(x);...

read variable x

x: 10

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

http://www.inf.ufes.br/~rgomes/so.htm

9 Sistemas OperacionaisLPRM/DI/UFES

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.

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

http://www.inf.ufes.br/~rgomes/so.htm

10 Sistemas OperacionaisLPRM/DI/UFES

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

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

http://www.inf.ufes.br/~rgomes/so.htm

11 Sistemas OperacionaisLPRM/DI/UFES

Criação e uso de uma área de memória compartilhada (1)

Pode ser resumida na seguinte seqüência de passos1. 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.

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

http://www.inf.ufes.br/~rgomes/so.htm

12 Sistemas OperacionaisLPRM/DI/UFES

Criação e uso de uma área de memória compartilhada (2)

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.

3. O processo pb obtém o identificador id da área de memória criada por pa.

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

http://www.inf.ufes.br/~rgomes/so.htm

13 Sistemas OperacionaisLPRM/DI/UFES

Criação e uso de uma área de memória compartilhada (3)

4. 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.

5. Os processos pa e pb acessam a área de memória compartilhada através dos ponteiros informados pelo núcleo.

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

http://www.inf.ufes.br/~rgomes/so.htm

14 Sistemas OperacionaisLPRM/DI/UFES

Exemplo de Programa

Criação e uso de uma área de memória compartilhada

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

http://www.inf.ufes.br/~rgomes/so.htm

15 Sistemas OperacionaisLPRM/DI/UFES

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

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

http://www.inf.ufes.br/~rgomes/so.htm

16 Sistemas OperacionaisLPRM/DI/UFES

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

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

http://www.inf.ufes.br/~rgomes/so.htm

17 Sistemas OperacionaisLPRM/DI/UFES

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.

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

http://www.inf.ufes.br/~rgomes/so.htm

18 Sistemas OperacionaisLPRM/DI/UFES

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

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

http://www.inf.ufes.br/~rgomes/so.htm

19 Sistemas OperacionaisLPRM/DI/UFES

Troca de Mensagens (1)

Processo A Processo BDado enviado

de A a B

S.O.

Fila de mensagens de B

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

http://www.inf.ufes.br/~rgomes/so.htm

20 Sistemas OperacionaisLPRM/DI/UFES

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.

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

http://www.inf.ufes.br/~rgomes/so.htm

21 Sistemas OperacionaisLPRM/DI/UFES

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

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

http://www.inf.ufes.br/~rgomes/so.htm

22 Sistemas OperacionaisLPRM/DI/UFES

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…

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

http://www.inf.ufes.br/~rgomes/so.htm

23 Sistemas OperacionaisLPRM/DI/UFES

Sinais (3)

Mecanismo de notificação: 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

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

http://www.inf.ufes.br/~rgomes/so.htm

24 Sistemas OperacionaisLPRM/DI/UFES

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

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

Memória Compartilhada no UNIX

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

http://www.inf.ufes.br/~rgomes/so.htm

26 Sistemas OperacionaisLPRM/DI/UFES

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

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

http://www.inf.ufes.br/~rgomes/so.htm

27 Sistemas OperacionaisLPRM/DI/UFES

Criação e uso de uma área de memória compartilhada (1)

Pode ser resumida na seguinte seqüência de passos1. 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.

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

http://www.inf.ufes.br/~rgomes/so.htm

28 Sistemas OperacionaisLPRM/DI/UFES

Criação e uso de uma área de memória compartilhada (2)

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.

3. O processo pb obtém o identificador id da área de memória criada por pa.

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

http://www.inf.ufes.br/~rgomes/so.htm

29 Sistemas OperacionaisLPRM/DI/UFES

Criação e uso de uma área de memória compartilhada (3)

4. 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.

5. Os processos pa e pb acessam a área de memória compartilhada através dos ponteiros informados pelo núcleo.

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

http://www.inf.ufes.br/~rgomes/so.htm

30 Sistemas OperacionaisLPRM/DI/UFES

Exemplo de Programa

Criação e uso de uma área de memória compartilhada

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

http://www.inf.ufes.br/~rgomes/so.htm

31 Sistemas OperacionaisLPRM/DI/UFES

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