Pular para o conteúdo principal

📧 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.py for finalizado antes que o reader.py consiga ler os dados?
  • O sistema operacional gerencia a sincronização entre os processos que acessam a memória compartilhada?