O que você vai aprender
Comparar memória compartilhada e troca de mensagens.
Explicar pipes, sockets e sinais.
Reconhecer cenários de uso de cada mecanismo de IPC.
Distinguir comunicação local de comunicação em rede.
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.
O que veremos nesta aula
de IPC→Pipes→Sockets→Sinais
Os dois modelos de IPC
Troca de mensagens. Processos se comunicam enviando e recebendo mensagens (send/receive) mediadas pelo SO.
Comparando os modelos
| Memória compartilhada | Troca de mensagens | |
|---|---|---|
| Como funciona | Região comum acessada por todos | Envio/recebimento via SO (send/receive) |
| Velocidade | Alta (após o setup) | Menor (passa pelo kernel) |
| Sincronização | Por conta do programador | Geralmente embutida |
| Uso típico | Mesma máquina | Mesma máquina ou rede |
Memória compartilhada precisa de cuidado
Stepper: troca de mensagens
Pipes
Pipes anônimos × nomeados
| Pipe anônimo | Pipe nomeado (FIFO) | |
|---|---|---|
| Quem se comunica | Processos aparentados (pai/filho) | Processos quaisquer |
| Tem nome no sistema? | Não | Sim (aparece como arquivo) |
| Exemplo | ls | grep | mkfifo + abrir por nome |
O pipe é um cano
Pipe × socket × sinal
| Mecanismo | Transporta | Alcance |
|---|---|---|
| Pipe | Fluxo de bytes | Mesma máquina |
| Socket | Fluxo/datagramas | Mesma máquina ou rede |
| Sinal | Evento (notificação) | Mesma máquina |
| Memória compartilhada | Acesso direto a dados | Mesma máquina |
Cliente e servidor por socket
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.
Sinais
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.
Verifique: comunicação em rede
Qual mecanismo é o padrão para comunicação entre processos em máquinas diferentes?
Escolhendo o IPC certo
| Cenário | Melhor IPC |
|---|---|
| Encadear dois comandos do shell | Pipe |
| Cliente e servidor em máquinas diferentes | Socket |
| Avisar um processo para encerrar | Sinal (ex.: SIGTERM) |
| Dois processos locais trocando grandes volumes rápido | Memória compartilhada |
Confusões frequentes
• 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.
Como decidir o mecanismo
• Mesma máquina + muito dado + velocidade → memória compartilhada (com sincronização).
• Rede → socket.
• Fluxo simples entre comandos → pipe.
• Apenas avisar um evento → sinal.
Revele: por que mensagens são mais lentas
Por que a troca de mensagens costuma ser mais lenta que a memória compartilhada?
Revisão relâmpago
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.
Fechando a aula
Atividade em grupo · Escolhendo o IPC certo
Em trios, escolham o mecanismo de IPC para cada cenário.
Roteiro
- Cenário A: dois comandos de shell encadeados.
- Cenário B: um cliente e um servidor em máquinas diferentes.
- Cenário C: avisar um processo para encerrar.
- Cenário D: dois processos na mesma máquina trocando grandes volumes de dados rapidamente. Justifiquem a escolha de cada um.
Mini-quiz · Aula 6
20 questões sobre esta aula. Escolha e veja a explicação na hora.
📌 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.