LRM Prof. Mantovani ← Aulas da disciplina
Semana 6 · Aula 6 de 14

Comunicação entre processos (IPC)

Como processos trocam dados: os modelos de memória compartilhada e troca de mensagens, e os mecanismos pipes, sockets e sinais — com seus cenários de uso.

📚 Sistemas Operacionais📝 mini-quiz ao final
Objetivos da aula

O que você vai aprender

1

Comparar memória compartilhada e troca de mensagens.

2

Explicar pipes, sockets e sinais.

3

Reconhecer cenários de uso de cada mecanismo de IPC.

4

Distinguir comunicação local de comunicação em rede.

1 · Motivação

Processos isolados precisam conversar

Processos têm espaços de endereçamento separados — um não enxerga a memória do outro. Isso protege, mas cria um problema: como dois processos que precisam cooperar trocam dados? A resposta é a comunicação entre processos (IPC).

Do shell que encadeia comandos ao navegador que fala com um servidor na nuvem, tudo depende de IPC. Hoje veremos os dois grandes modelos e os mecanismos concretos que o SO oferece.

2 · Mapa

O que veremos nesta aula

Modelos
de IPC
PipesSocketsSinais
💡
Dois modelos fundamentais: memória compartilhada (rápida, mas você sincroniza) e troca de mensagens (mediada pelo SO, mais simples de coordenar).
3 · Conceito

Os dois modelos de IPC

Memória compartilhada. Uma região comum que vários processos mapeiam e acessam diretamente.
Troca de mensagens. Processos se comunicam enviando e recebendo mensagens (send/receive) mediadas pelo SO.
4 · Conceito

Comparando os modelos

Memória compartilhadaTroca de mensagens
Como funcionaRegião comum acessada por todosEnvio/recebimento via SO (send/receive)
VelocidadeAlta (após o setup)Menor (passa pelo kernel)
SincronizaçãoPor conta do programadorGeralmente embutida
Uso típicoMesma máquinaMesma máquina ou rede
5 · Exemplo

Memória compartilhada precisa de cuidado

// dois processos somando no mesmo contador compartilhado contador = contador + 1; // sem sincronização: corrida! // é preciso proteger com semáforo/mutex (Aula 7)
⚠️
Memória compartilhada é rápida, mas exige sincronização explícita (semáforos, mutexes) para evitar condições de corrida — tema da próxima aula.
6 · Interativo

Stepper: troca de mensagens

Passo 1
O processo A chama send(B, msg): a mensagem é copiada para o kernel.
Passo 2
O kernel armazena a mensagem (ou a entrega direto) e gerencia a fila.
Passo 3
O processo B chama receive(): o kernel entrega a mensagem a B.
Passo 4
A sincronização (esperar mensagem) costuma vir embutida no receive.
7 · Conceito

Pipes

Pipe. Canal de fluxo, tipicamente unidirecional, em que a saída de um processo vira a entrada de outro. Pipes nomeados (FIFOs) permitem comunicação entre processos sem parentesco.
8 · Conceito

Pipes anônimos × nomeados

Pipe anônimoPipe nomeado (FIFO)
Quem se comunicaProcessos aparentados (pai/filho)Processos quaisquer
Tem nome no sistema?NãoSim (aparece como arquivo)
Exemplols | grepmkfifo + abrir por nome
# o shell conecta dois processos por um pipe anônimo ls -l | grep ".txt" # saída do ls vira entrada do grep
9 · Analogia

O pipe é um cano

🚰 Analogia
Um pipe é um cano: dados entram por uma ponta (escrita) e saem pela outra (leitura), na ordem em que chegaram (FIFO). É unidirecional — para fluxo nos dois sentidos, são precisos dois canos. Se ninguém lê, o cano enche e quem escreve espera.
10 · Comparação

Pipe × socket × sinal

MecanismoTransportaAlcance
PipeFluxo de bytesMesma máquina
SocketFluxo/datagramasMesma máquina ou rede
SinalEvento (notificação)Mesma máquina
Memória compartilhadaAcesso direto a dadosMesma máquina
11 · Flow

Cliente e servidor por socket

Servidor
escuta porta
Cliente
conecta
Troca de
dados
Fecha
conexão

Sockets são a base do TCP/IP: permitem comunicação entre processos na mesma máquina ou em máquinas diferentes pela rede.

12 · Aprofundamento

Sinais

Sinal. Notificação assíncrona enviada a um processo para avisá-lo de um evento.
  • SIGINT: enviado ao apertar Ctrl+C (interromper).
  • SIGKILL: encerra o processo à força (não pode ser ignorado).
  • SIGCHLD: avisa o pai de que um filho terminou.
💡
Sinais transmitem eventos, não fluxos de dados. São leves e assíncronos.
13 · Interativo

Verifique: comunicação em rede

Qual mecanismo é o padrão para comunicação entre processos em máquinas diferentes?

Sockets funcionam pela rede; pipes anônimos e memória compartilhada são locais.
14 · Caso prático

Escolhendo o IPC certo

CenárioMelhor IPC
Encadear dois comandos do shellPipe
Cliente e servidor em máquinas diferentesSocket
Avisar um processo para encerrarSinal (ex.: SIGTERM)
Dois processos locais trocando grandes volumes rápidoMemória compartilhada
15 · Erros comuns

Confusões frequentes

⚠️
Cuidado:
• Sinais não transferem dados — só avisam de eventos.
• Pipe anônimo não serve para processos sem parentesco; nesse caso use FIFO.
• Memória compartilhada é rápida, mas sem sincronização gera corrida.
• Troca de mensagens não é "sempre mais rápida"; ela passa pelo kernel.
16 · Dicas

Como decidir o mecanismo

Dicas de decisão:
• Mesma máquina + muito dado + velocidade → memória compartilhada (com sincronização).
• Rede → socket.
• Fluxo simples entre comandos → pipe.
• Apenas avisar um evento → sinal.
17 · Interativo

Revele: por que mensagens são mais lentas

Por que a troca de mensagens costuma ser mais lenta que a memória compartilhada?
Porque cada send/receive passa pelo kernel: há cópia dos dados do espaço do emissor para o kernel e depois para o receptor, além de trocas de modo usuário↔núcleo. Na memória compartilhada, após o mapeamento inicial, os processos leem e escrevem diretamente na mesma região, sem intermediação do kernel a cada acesso — por isso é mais rápida, ao custo de exigir sincronização explícita.
18 · Flashcards

Revisão relâmpago

Pipevirar
Canal de fluxo (em geral unidirecional) entre processos na mesma máquina.
Socketvirar
Ponto de comunicação local ou em rede; base do TCP/IP.
Sinalvirar
Notificação assíncrona de um evento (ex.: SIGINT, SIGKILL).
Memória compartilhadavirar
Região comum acessada diretamente; rápida, mas exige sincronização.
19 · Conexões

Para onde isto leva

  • Sincronizar memória compartilhada → Aula 7 (semáforos/monitores).
  • Threads que cooperam compartilham memória → Aula 4.
  • Sinais e chamadas de sistema → Aula 2.
  • Sockets conectam ao mundo das redes.
20 · Síntese

Fechando a aula

🔑
Em uma frase: IPC permite que processos isolados cooperem; a memória compartilhada é rápida mas pede sincronização, a troca de mensagens é mediada pelo SO, os pipes são fluxos locais, os sockets alcançam a rede e os sinais comunicam eventos.
Mão na massa · colaborativo

Atividade em grupo · Escolhendo o IPC certo

Em trios, escolham o mecanismo de IPC para cada cenário.

⏱️ 25 min👥 trios🧩 estudo de caso

Roteiro

  1. Cenário A: dois comandos de shell encadeados.
  2. Cenário B: um cliente e um servidor em máquinas diferentes.
  3. Cenário C: avisar um processo para encerrar.
  4. Cenário D: dois processos na mesma máquina trocando grandes volumes de dados rapidamente. Justifiquem a escolha de cada um.
Decisorescolhe o mecanismo
Justificadorexplica o porquê
Relatorconsolida a tabela
📤 Entrega: Tabela cenário → mecanismo de IPC escolhido, com justificativa.
Teste seu conhecimento

Mini-quiz · Aula 6

20 questões sobre esta aula. Escolha e veja a explicação na hora.

0/20

📌 Resumo — leve isto para a prova

  • IPC permite que processos isolados troquem dados e cooperem.
  • Memória compartilhada é rápida mas exige sincronização; mensagens são mediadas pelo SO.
  • Pipes são canais de fluxo na mesma máquina (anônimos x nomeados); sockets servem também à rede.
  • Sinais comunicam eventos assíncronos, não fluxos de dados.
  • A escolha do IPC depende do cenário: local x rede, evento x fluxo, volume e velocidade.