نظام الذاكرة المشتركة للتواصل بين العمليات في أنظمة التشغيل Shared Memory System in IPC

اقرأ في هذا المقال


يعد نظام الذاكرة المشتركة أحد النماذج الأساسية للاتصال بين العمليات، تتواصل عمليتان مع بعضهما البعض من خلال إنشاء ذاكرة مشتركة في مساحة العنوان للعملية التي تريد بدء الاتصال، والعملية الأخرى التي ترغب في الاتصال ترفق نفسها بمساحة العنوان المشتركة لعملية البدء، يزيل نظام الذاكرة المشتركة القيود التي وضعها نظام التشغيل والتي لا يجب أن تصل أي عملية إلى ذاكرة العملية الأخرى، والذي بدوره يسمح للعمليات بتبادل البيانات.

ما المقصود بنظام الذاكرة المشتركة

نظام الذاكرة المشتركة هو أحد النماذج الأساسية للتواصل بين العمليات، في نظام الذاكرة المشتركة، تتواصل العمليات المتعاونة مع بعضها البعض عن طريق إنشاء منطقة الذاكرة المشتركة، في مساحة العنوان الخاصة بها، يسمح نموذج الذاكرة المشتركة بأسرع اتصال بين العمليات.

من بين العمليات المتعاونة، العملية التي تريد بدء الاتصال والحصول على بعض البيانات لمشاركتها، تنشىء منطقة الذاكرة المشتركة في مساحة العنوان الخاصة بها، بعد ذلك، يجب على عملية أخرى ترغب في الاتصال وتريد قراءة البيانات المشتركة إرفاق نفسها بمساحة العنوان المشتركة لعملية البدء.

مبدأ عمل نظام الذاكرة المشتركة

في نظام الذاكرة المشتركة، تتواصل العمليات المتعاونة، لتبادل البيانات أو المعلومات مع بعضها البعض، لهذا، فإنّ العمليات التعاونية تنشئ منطقة مشتركة في ذاكرتها، تشارك العمليات البيانات عن طريق قراءة البيانات وكتابتها في الجزء المشترك من العمليات، ضع في اعتبارك سيناريو، هناك عمليتان متعاونتان (P1 وP2)، لكل من العمليتين (P1 وP2) مساحات عناوين مختلفة، الآن، يريد (P1) مشاركة بعض البيانات مع (P2)، لذلك، سيتعين على (P1 وP2) تنفيذ الخطوات التالية:

  • الخطوة (1): نظرًا لأنّ العملية (P1) تحتوي على بعض البيانات، لمشاركتها مع العملية (P2)، يجب أن تأخذ العملية (P1) زمام المبادرة وتؤسس منطقة ذاكرة مشتركة في مساحة العنوان الخاصة بها وتخزن البيانات أو المعلومات لتتم مشاركتها في منطقة الذاكرة المشتركة الخاصة بها.
  • الخطوة (2): الآن، تتطلب (P2) المعلومات المخزنة في المقطع المشترك من (P1)، لذلك، يجب أن ترتبط العملية (P2) بمساحة العنوان المشتركة لـ (P1)، الآن، يمكن لـ (P2) قراءة البيانات من هناك.
  • الخطوة (3): يمكن للعملية (P1 وP2) تبادل المعلومات أو البيانات عن طريق قراءة البيانات وكتابتها في الجزء المشترك من العملية، الآن دعونا نوضح هذا المفهوم ولنفترض التالي: العملية (P1) لديها بعض البيانات لمشاركتها مع (P2)، لذلك، يكتب (P1) البيانات في ذاكرته المشتركة، الآن، تريد العملية (P2) البيانات التي يتم مشاركتها بواسطة (P1) بحيث ترفق نفسها بمساحة العنوان المشتركة لـ (P1) وتقرأ البيانات المطلوبة من هناك.

العمليات المتعاونة Cooperating processes

كما نعلم جميعًا، يتم تنفيذ العديد من العمليات بشكل متزامن على النظام، الآن، يمكن أن تكون عمليات التنفيذ المتزامنة هذه إمّا عمليات مستقلة لا تؤثر على العملية الأخرى ولا تتأثر بالعمليات الأخرى أو يمكن أن تكون عمليات متعاونة، يمكن أن تؤثر العمليات التعاونية على العمليات الأخرى في النظام أو يمكن أن تتأثر بالعمليات الأخرى، بلغة سهلة، تسمّى العمليات التي تشارك البيانات مع بعضها البعض “العمليات التعاونية”، ولمشاركة البيانات، يمكن للعمليات المتعاونة استخدام أي من آليتين (IPC) (interprocess communication) “اتصال بين العمليات” التي تشترك في نظام الذاكرة أو نظام تمرير الرسائل.

الاتصال بين العمليات Interprocess Communication

يقيد نظام التشغيل بشكل صارم عملية واحدة لمشاركة ذاكرة العملية الأخرى، لكن في بعض الأحيان تحتاج العمليات إلى التفاعل ومشاركة البيانات، ولهذا، علينا أن نهيئ بيئة حيث يمكن للعمليات المتعاونة تبادل البيانات أو المعلومات مع بعضها البعض، يحتوي الاتصال بين العمليات على نموذجين أساسيين، أي نظام الذاكرة المشتركة ونظام تمرير الرسائل:

  • في نظام الذاكرة المشتركة (shared memory system): تُنشئ عملية التعاون التي تريد بدء الاتصال منطقة من الذاكرة المشتركة في مساحة العنوان الخاصة بها، يجب أن ترتبط العملية التعاونية الأخرى التي تتطلب البيانات المشتركة بمساحة العنوان لعملية البدء.
  • في نظام تمرير الرسائل (message-passing system): يقوم النظام بمشاركة البيانات عن طريق تمرير الرسائل، إذا احتاجت عملية ما إلى مشاركة البيانات، فإنّها تكتب البيانات في الرسالة وتمررها إلى النواة، العملية التي تتطلب البيانات المشتركة تقرأها من النواة (kernel).

ما هي الحاجة إلى نظام الذاكرة المشتركة

كما تعلمنا أعلاه، لا يسمح نظام التشغيل مطلقًا لأي عملية بالوصول إلى مساحة الذاكرة لعملية أخرى، ولكن، ماذا لو احتاجت عمليتان إلى التواصل وتبادل البيانات؟ يجب أن نوفر بيئة للعمليات حيث يمكنهم بسهولة تبادل البيانات مع بعضهم البعض، عمليات الاتصال من نوعين وهي: مرتبطة (related) أو غير مرتبطة (unrelated):

  • العمليات المرتبطة (Related Processes):هنا تشارك العمليات المترابطة البيانات باستخدام أنابيب التجزئة (Pipes).
  • العمليات غير المرتبطة (Unrelated Processes): تقوم العمليات غير المرتبطة بتوصيل البيانات أو مشاركتها باستخدام تقنيات الاتصال المشتركة بين العمليات والتي هي نظام ذاكرة مشترك وتمرير الرسائل، وترك الرسالة تمر في وقت لاحق، سنركز هنا على نظام الذاكرة المشتركة.

يزيل نموذج الذاكرة المشتركة القيود من العمليات، بحيث لا تصل أي عملية إلى ذاكرة أخرى، من خلال إنشاء المنطقة المشتركة في مساحة عنوان العملية، يتم استخدام هذه المنطقة المشتركة في مساحة العنوان في الذاكرة لتبادل المعلومات بين العمليات المتعاونة، لذلك نحن بحاجة إلى نظام ذاكرة مشتركة لمشاركة المعلومات بين العمليات المتعاونة، سيؤدي أيضًا إلى تسريع الحوسبة للنظام.

مثال الذاكرة المشتركة

يمكننا فهم مفهوم نظام الذاكرة المشتركة بمساعدة مشكلة المنتج-المستهلك الأكثر شيوعًا، يشترك كل من المنتج وعملية المستهلك في “مخزن مؤقت” يستخدمانه كـ “قائمة انتظار”، تتمثل مهمة عملية المنتج في إنشاء البيانات وتعبئتها في المخزن المؤقت، تتمثل مهمة عملية المستهلك في استهلاك البيانات وإفراغ المخزن المؤقت، تكمن المشكلة في أنّه لا يجب على المُنتِج إنشاء بيانات إذا كان المخزن المؤقت ممتلئًا ويجب على المستهلك ألّا يستهلك البيانات إذا كان المخزن المؤقت فارغًا.

حل هذه المشكلة هو الذاكرة المشتركة، يجب أن يكون لدى المنتج والمستهلك مخزن مؤقت مشترك موجود في منطقة الذاكرة، تتم مشاركة منطقة الذاكرة هذه من قبل كل من عملية المنتج وعملية المستهلك، الآن، يجب مزامنة كل من المنتج والمستهلك، بحيث لا يستهلك المستهلك البيانات التي لم ينتجها المنتج بعد، هناك نوعان من المخزن (Buffer):

  • المخزن المؤقت المقيد (Bounded buffer): في المخزن المؤقت المقيد، يتعين على المنتج الانتظار لإنتاج بيانات جديدة في حالة امتلاء المخزن المؤقت ويجب على المستهلك الانتظار لاستهلاك البيانات في حالة فراغ المخزن المؤقت.
  • المخزن المؤقت غير المحدود (Unbounded buffer): في المخزن المؤقت غير المحدود، قد يستمر المنتج في إنتاج البيانات، ولا يوجد حد لحجم المخزن المؤقت، ولكن، قد يضطر المستهلك إلى الانتظار إذا كان المخزن المؤقت فارغًا.

قد تنشأ حالة السباق إذا حاولت كل من العمليات، أي عملية المنتج وعملية المستهلك الوصول إلى البيانات المشتركة بشكل متزامن.

مزايا الذاكرة المشتركة

  • نظام الذاكرة المشتركة هو نموذج اتصال أسرع بين العمليات.
  • تسمح الذاكرة المشتركة للعمليات المتعاونة بالوصول إلى نفس أجزاء البيانات بشكل متزامن.
  • باستخدام الذاكرة المشتركة، يعمل أيضًا على تسريع عملية الحوسبة للنظام حيث يمكن تقسيم المهمة الطويلة إلى مهام فرعية أصغر ويمكن تنفيذها بشكل متوازٍ.
  • يمكن أيضًا تحقيق نمطية إذا قسمنا وظائف النظام إلى عمليات أو مؤشرات ترابط منفصلة.
  • باستخدام الذاكرة المشتركة يمكن للمستخدم أداء مهام متعددة في وقت واحد، كما يمكن للمستخدم الطباعة، وإنشاء مستند، وتشغيل (MP3) في نفس الوقت.

المصدر: Shared Memory System in IPCIPC through shared memoryInterprocess communication(IPC) using shared memoryShared Memory


شارك المقالة: