ذاكرة مشتركة

من ويكيبيديا، الموسوعة الحرة

الذاكرة المشتركة هي ذاكرة يمكن لعدة برمجيات الوصول إليها في نفس الوقت بغية التواصل فيما بينها أو تفادي تكرار النسخ.[1][2][3] البرمجيات قد تشتغل في أوساط مختلفة كأن تعمل على معالج واحد أو عدة معالجات. كما أن استعمال الذاكرة للتواصل يمكن أن يكون داخل برنامج واحد يدير عدة خيوط.

في العتاد[عدل]

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

المشكلة الرئيسية مع الذاكرة المشتركة هو أن المعالجات تريد الوصول بسرعة عالية للذاكرة فتلجأ لاستعمال مخازن ذاكرة الأمر الذي ينتج عنه مشكلتين فرعيتين :

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

كبدائل للذاكرة المشتركة ترشح الذاكرة الموزعة والذاكرة المشتركة الموزعة. لكليهما مجموعة من المشاكل المماثلة.

في البرمجيات[عدل]

بالنسبة للبرمجيات، الذاكرة المشتركة هي:

  • وسيلة للاتصالات بين العمليات (inter-process communication) أي طريقة لتبادل البيانات بين البرمجيات الجاري تنفيذها. كل عملية تستخدم مساحة من الذاكرة بحيث يمكن لعمليات أخرى الوصول إليها أو
  • وسيلة للحفاظ على مساحة من الذاكرة بتوجيه كل محاولة للوصول إليها إلى ما يكون عادة نسخ من البيانات، باستعمال خريطة ذاكرة افتراضية أو سند واضح للبرمجية المعنية. وهو الأمر الأكثر استعمال في المكتبات البرمجية المشتركة.

مراجع[عدل]

  1. ^ Robbins، Kay A.؛ Robbins، Steven (2003). Unix systems programming: communication, concurrency, and threads (ط. 2). Prentice Hall PTR. ص. 512. ISBN:978-0-13-042411-2. مؤرشف من الأصل في 2014-09-22. اطلع عليه بتاريخ 2011-05-13. The POSIX interprocess communication (IPC) is part of the POSIX:XSI Extension and has its origin in Unix System V interprocess communication.
  2. ^ El-Rewini، Hesham؛ Abd-El-Barr، Mostafa (2005). Advanced Computer Architecture and Parallel Processing. Wiley-Interscience. ص. 77–80. ISBN:978-0-471-46740-3.
  3. ^ Christoph Rohland؛ Hugh Dickins؛ KOSAKI Motohiro. "tmpfs.txt". kernel.org. مؤرشف من الأصل في 2018-06-29. اطلع عليه بتاريخ 2010-03-16.

وصلات خارجية[عدل]