Aller au contenu principal

📧 Communication interprocessus : MĂ©moire partagĂ©e

🎯 Objectif pĂ©dagogique​

  • Comprendre les mĂ©canismes de communication interprocessus (IPC) Ă  l'aide de la mĂ©moire partagĂ©e.
  • Identifier le rĂŽle du systĂšme d'exploitation dans la gestion des connexions rĂ©seau.

📜 Énoncé​

Dans cet exercice, vous allez créer une deux modules Python pour

🔧 Étape 1 – Module Writer​

Créez un fichier appelé writer.py et copiez le code suivant :

# 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

💬 Étape 2 – Module Reader​

Créez un fichier 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()

🔁 Étape 3 – Test​

Pour tester, ouvrez deux terminaux. Dans le premier terminal, exécutez le module writer.py :

python writer.py

Dans le second terminal, exécutez le module reader.py :

python reader.py

📝 Étape 4 – Le systùme d'exploitation​

  • Quel est le rĂŽle du systĂšme d'exploitation dans la gestion de la mĂ©moire partagĂ©e ?
  • Quels processus peuvent accĂ©der Ă  la mĂ©moire partagĂ©e nommĂ©e demo_shm ?
  • Que se passe-t-il si le processus writer.py est terminĂ© avant que reader.py ne puisse lire les donnĂ©es ?
  • Est-ce que le systĂšme d'exploitation gĂšre la synchronisation entre les processus qui accĂšdent Ă  la mĂ©moire partagĂ©e ?