📧 Comunicação entre processos: Memória compartilhada
🎯 Objetivo de aprendizagem
- Compreender os mecanismos de comunicação entre processos (IPC) usando memória compartilhada.
- Identificar o papel do sistema operacional na gestão das conexões de rede.
📜 Enunciado
Neste exercício, você irá criar dois módulos Python para
🔧 Etapa 1 – Módulo Writer
Crie um arquivo chamado writer.py e copie o seguinte código:
# writer.py
from multiprocessing import shared_memory
import time
# Create a new shared memory block
shm = shared_memory.SharedMemory(name="demo_shm", create=True, size=1024)
# Write some bytes
shm.buf[:10] = b"Hello IPC!"
print("Writer: wrote to shared memory.")
time.sleep(60) # Give reader time to read it
# Clean up
shm.close()
shm.unlink() # Only the creating process should unlink
💬 Etapa 2 – Módulo Reader
Crie um arquivo reader.py:
# reader.py
from multiprocessing import shared_memory
# Connect to existing shared memory
existing_shm = shared_memory.SharedMemory(name="demo_shm")
# Read from it
data = bytes(existing_shm.buf[:11])
print("Reader: read from shared memory:", data.decode())
existing_shm.close()
🔁 Etapa 3 – Teste
Para testar, abra dois terminais. No primeiro terminal, execute o módulo writer.py:
python writer.py
No segundo terminal, execute o módulo reader.py:
python reader.py
📝 Etapa 4 – O sistema operacional
- Qual é o papel do sistema operacional na gestão da memória compartilhada?
- Quais processos podem acessar a memória compartilhada nomeada
demo_shm? - O que acontece se o processo
writer.pyfor finalizado antes que oreader.pyconsiga ler os dados? - O sistema operacional gerencia a sincronização entre os processos que acessam a memória compartilhada?