# ذاكرة مشتركة

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

## في العتاد

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

## في البرمجيات

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

## مراجع

* ↑ 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.
* ↑ El-Rewini، Hesham؛ Abd-El-Barr، Mostafa (2005). Advanced Computer Architecture and Parallel Processing. Wiley-Interscience. ص. 77–80. ISBN:978-0-471-46740-3.
* ↑ Christoph Rohland؛ Hugh Dickins؛ KOSAKI Motohiro. "tmpfs.txt". kernel.org. مؤرشف من الأصل في 2018-06-29. اطلع عليه بتاريخ 2010-03-16.

## وصلات خارجية

* (بالإنجليزية)Shared Memory Allocation
* (بالإنجليزية)Shared Memory Interface
* (بالإنجليزية)Shared Memory Library FAQ by Márcio Serolli Pinho
* (بالإنجليزية)Shared Memory Block FIFO Pipe Implementation Library
* (بالإنجليزية)Article "IPC:Shared Memory" by Dave Marshall
* (بالإنجليزية)shared memory facility from the Single UNIX® Specification
* (بالإنجليزية)shm_open - POSIX
* (بالإنجليزية)shmop - documentation from SunOS 5.9
* (بالإنجليزية)CreateSharedMemory function from Win32-SDK
* (بالإنجليزية)Functions in PHP-API
* (بالإنجليزية)Paper "A C++ Pooled, Shared Memory Allocator For The Standard Template Library" by Marc Ronell
* (بالإنجليزية)Citations from CiteSeer
* (بالإنجليزية)Linux Shared Memory Allocation with example
* بوابة تقانة المعلومات
* بوابة علم الحاسوب