مجمع الذاكرة

تُعرف مجمعات الذاكرة ، أو تخصيص الكتل ذات الحجم الثابت ، بأنها استخدام مجمعات لإدارة الذاكرة ، مما يسمح بتخصيص الذاكرة ديناميكيًا . ويمكن تحقيق تخصيص الذاكرة الديناميكي، وقد تم تحقيقه بالفعل، باستخدام تقنيات مثل malloc وعامل new في لغة C++ . ورغم أن هذه التطبيقات راسخة وموثوقة، إلا أنها تعاني من التجزئة بسبب أحجام الكتل المتغيرة، لذا لا يُنصح باستخدامها في أنظمة الوقت الحقيقي نظرًا لتأثيرها على الأداء. ويُعدّ تخصيص عدد من كتل الذاكرة ذات الحجم نفسه مسبقًا، والتي تُسمى مجمع الذاكرة ، حلاً أكثر كفاءة . ويمكن للتطبيق تخصيص الكتل، والوصول إليها، وتحريرها، وهي مُمثلة بمقابض، أثناء التشغيل .
تستخدم العديد من أنظمة التشغيل في الوقت الحقيقي مجموعات الذاكرة، مثل مرفق معالجة المعاملات . يوفر POCO فئة مجموعة الذاكرة Poco::MemoryPool.
تستخدم بعض الأنظمة، مثل خادم الويب Nginx ، مصطلح " مجمع الذاكرة" للإشارة إلى مجموعة من تخصيصات الذاكرة ذات الأحجام المتغيرة والتي يمكن تحريرها لاحقًا دفعة واحدة. يُعرف هذا أيضًا باسم " المنطقة" ؛ انظر إدارة الذاكرة القائمة على المناطق .
تنفيذ بسيط لمجمع الذاكرة
يمكن لوحدة إدارة الذاكرة البسيطة تخصيص، على سبيل المثال، ثلاث مجموعات من الذاكرة أثناء عملية الترجمة ، مع أحجام كتل مُحسَّنة للتطبيق الذي يستخدم هذه الوحدة. ويمكن للتطبيق تخصيص الذاكرة والوصول إليها وتحريرها من خلال الواجهة التالية:
- تُخصّص الذاكرة من مجموعات التخزين. ستحدد الدالة مجموعة التخزين التي تتسع للكتلة المطلوبة. إذا كانت جميع كتل تلك المجموعة محجوزة بالفعل، فستحاول الدالة العثور على واحدة في مجموعة التخزين الأكبر التالية. تُمثّل كتلة الذاكرة المُخصّصة بمعرّف .
- احصل على مؤشر وصول إلى الذاكرة المخصصة.
- قم بتحرير كتلة الذاكرة التي تم تخصيصها سابقاً.
- يمكن تنفيذ المقبض، على سبيل المثال، باستخدام وحدة نمطية
unsigned int. تستطيع الوحدة تفسير المقبض داخليًا بتقسيمه إلى فهرس المجمع، وفهرس كتلة الذاكرة، وإصدار. يتيح فهرس المجمع وفهرس كتلة الذاكرة الوصول السريع إلى الكتلة المقابلة باستخدام المقبض، بينما يسمح الإصدار، الذي يتم زيادته عند كل تخصيص جديد، بالكشف عن المقابض التي تم تحرير كتلة الذاكرة الخاصة بها بالفعل (نتيجة احتفاظ المقابض لفترة طويلة جدًا).
مقارنة بين مجمع الذاكرة و malloc
فوائد
- تتيح مجمعات الذاكرة تخصيص الذاكرة بوقت تنفيذ ثابت. فتحرير الذاكرة لآلاف الكائنات في المجمع يتم بعملية واحدة، وليس بشكل فردي كما هو الحال عند استخدام دالة malloc لتخصيص الذاكرة لكل كائن.
- يمكن تجميع مجموعات الذاكرة في هياكل شجرية هرمية، وهو أمر مناسب لهياكل البرمجة الخاصة مثل الحلقات والتكرارات .
- لا تحتاج مجموعات ذاكرة الكتل ذات الحجم الثابت إلى تخزين بيانات تعريف التخصيص لكل عملية تخصيص، والتي تصف خصائص مثل حجم الكتلة المخصصة. وهذا يوفر مساحة تخزين كبيرة، خاصةً بالنسبة لعمليات التخصيص الصغيرة.
- يسمح بالسلوك الحتمي في الأنظمة التي تعمل في الوقت الحقيقي عن طريق تجنب أخطاء نفاد الذاكرة.
- تقضي الكتل ذات الحجم الثابت على مشكلة التجزئة الخارجية - وهي عبارة عن أجزاء صغيرة من المساحة الحرة أصغر من أن تُستخدم. [ 1 ]
- تدعم الكتل ذات الحجم الثابت عملية جمع البيانات المهملة غير المتحركة [ 1 ]
العيوب
- قد يلزم ضبط مجموعات الذاكرة للتطبيق الذي يقوم بنشرها.
- قد يؤدي تخزين مصفوفات بيانات كبيرة الحجم تتجاوز كتلة واحدة إلى إجبار النظام على توزيع المصفوفة على العديد من كتل الذاكرة، مما يجعل عمليات القراءة والكتابة لعناصر المصفوفة أبطأ مما لو كانت المصفوفة متصلة. [ 1 ]
انظر أيضاً
مراجع
- 1 2 3 فريدتجوف سيبرت. "التخلص من التجزئة الخارجية في جامع القمامة غير المتحرك لجافا" .
روابط خارجية
- إدارة الذاكرة
