Saltar al contenido principal

📧 Comunicación entre procesos: Memoria compartida

🎯 Objetivo de aprendizaje​

  • Comprender los mecanismos de comunicación entre procesos (IPC) utilizando memoria compartida.
  • Identificar el papel del sistema operativo en la gestión de las conexiones de red.

📜 Enunciado​

En este ejercicio, va a crear dos módulos de Python para

🔧 Paso 1 – Módulo Writer​

Cree un archivo llamado writer.py y copie el siguiente 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

💬 Paso 2 – Módulo Reader​

Cree un archivo 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()

🔁 Paso 3 – Prueba​

Para probar, abra dos terminales. En la primera terminal, ejecute el módulo writer.py:

python writer.py

En la segunda terminal, ejecute el módulo reader.py:

python reader.py

📝 Paso 4 – El sistema operativo​

  • ¿Cuál es el papel del sistema operativo en la gestión de la memoria compartida?
  • ¿Qué procesos pueden acceder a la memoria compartida llamada demo_shm?
  • ¿Qué sucede si el proceso writer.py termina antes de que reader.py pueda leer los datos?
  • ¿El sistema operativo gestiona la sincronización entre los procesos que acceden a la memoria compartida?