Please enable JavaScript.
Coggle requires JavaScript to display documents.
Comunicação Interprocessos - Coggle Diagram
Comunicação Interprocessos
Processos concorrentes no sistema operacional podem ser independentes ou cooperativos.
Processo independente
Não pode afetar ou ser afetado pelos outros processos
Processo cooperativo
Pode influenciar ou ser influenciado por outros processos, geralmente compartilhando dados com eles.
Motivos para prover um ambiente que permita comunicação entre processos
Compartilhamento de informações
Agilidade na computação
Modularidade
Conveniência
Modelos de comunicação interprocesso (IPC – Interprocess Communication):
Memória compartilhada
Região de memória com acesso comum.
Velocidade máxima e conveniência de comunicação
Comunicação por memória compartilhada é mais rápida que troca de mensagens
Dois ou mais processos concordam em remover o mecanismo de proteção de memória do SO
Formato e local dos dados são de responsabilidade completa dos processos envolvidos
Troca de mensagens
Útil para trocar pequenas quantidades de dados, evitando conflitos
Mais fácil de implementar
Sistema de mensagem
processos se comunicam entre si sem lançar mão de variáveis compartilhadas
passagem de mensagem oferece duas operações
send
tamanho da mensagem fixo ou variável
receive
Para P e Q quiserem se comunicar
Estabelecer um link de comunicação entre eles
trocar mensagens por meio de send/receive
Implementação do link de comunicação
físico
memória compartilhada
barramento de hardware
lógico
propriedades lógicas
Comunicação Direta
Processos devem nomear um ao outro explicitamente:
send(P, mensagem) – envia uma mensagem ao processo P
receive(Q, mensagem) – recebe uma mensagem do processo Q
Propriedades do link de comunicação
Links são estabelecidos automaticamente
Um link é associado a exatamente um par de processos em comunicação
Entre cada par existe exatamente um link
O link pode ser unidirecional, mas normalmente é bidirecional
Comunicação Indireta
As mensagens são direcionadas e recebidas de caixas de correio (também conhecidas como portas)
Cada caixa de correio tem uma id exclusiva
Os processos só podem se comunicar se compartilharem uma caixa de correio
Propriedades do link de comunicação
Link estabelecido somente se os processos compartilharem uma caixa de correio comum
Um link pode estar associado a muitos processos
Cada par de processos pode compartilhar vários links de comunicação
O link pode ser unidirecional ou bidirecional
Operações
Cria uma nova caixa de correio
Envia e recebe mensagens por meio da caixa de correio
Destrói uma caixa de correio
Primitivos são definidos como:
send(A, mensagem) – envia uma mensagem à caixa de correio A
receive(A, mensagem) – recebe uma mensagem da caixa de correio A
Sincronização
A passagem de mensagens pode ser com bloqueio ou sem bloqueio
Bloqueio é considerado síncrono
Envio com bloqueio deixa o emissor bloqueado até que a mensagem é recebida
Recepção com bloqueio deixa o receptor bloqueado até que a uma mensagem esteja disponível
Não bloqueio é considerado assíncrono
Envio sem bloqueio faz com que o emissor envie a mensagem e continue
Recepção sem bloqueio faz com que o receptor receba uma mensagem válida ou nulo
Armazenamento em Buffer
Fila de mensagens conectadas ao link
Capacidade zero – 0 mensagens
Emissor deve esperar pelo receptor
Capacidade limitada – tamanho finito de n mensagens
Emissor deve esperar se o link estiver cheio
Capacidade ilimitada – tamanho infinito
Emissor nunca espera