📧 الاتصال بين العمليات: الذاكرة المشتركة
🎯 الهدف التعليمي
- فهم آليات الاتصال بين العمليات (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من قراءة البيانات؟ - هل يدير نظام التشغيل التزامن بين العمليات التي تصل إلى الذاكرة المشتركة؟