Upload
internet
View
124
Download
0
Embed Size (px)
Citation preview
Memória compartilhadaTroca de mensagens
PipesSinais
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
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
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
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
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.
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
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
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.
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
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.
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.
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.
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
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
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
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.
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
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
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.
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
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…
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
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
Memória Compartilhada no UNIX
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
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.
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.
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.
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
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