انتقل إلى المحتوى الرئيسي

📧 الاتصال بين العمليات: الذاكرة المشتركة

🎯 الهدف التعليمي​

  • فهم آليات الاتصال بين العمليات (IPC) باستخدام الذاكرة المشتركة.
  • تحديد دور نظام التشغيل في إدارة الاتصالات الشبكية.

📜 البيان​

في هذا التمرين، ستقوم بإنشاء وحدتين بلغة Python

🔧 الخطوة 1 – وحدة الكاتب​

قم بإنشاء ملف يسمى writer.py ونسخ الكود التالي:

# 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

💬 الخطوة 2 – وحدة القارئ​

قم بإنشاء ملف 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()

🔁 الخطوة 3 – الاختبار​

لاختبار، افتح محطتين. في المحطة الأولى، قم بتشغيل الوحدة writer.py:

python writer.py

في المحطة الثانية، قم بتشغيل الوحدة reader.py:

python reader.py

📝 الخطوة 4 – نظام التشغيل​

  • ما هو دور نظام التشغيل في إدارة الذاكرة المشتركة؟
  • ما هي العمليات التي يمكنها الوصول إلى الذاكرة المشتركة المسماة demo_shm؟
  • ماذا يحدث إذا انتهت عملية writer.py قبل أن يتمكن reader.py من قراءة البيانات؟
  • هل يدير نظام التشغيل التزامن بين العمليات التي تصل إلى الذاكرة المشتركة؟