افتتحت Microsoft مكتبة بموجب ترخيص MIT
الميزة الرئيسية لبرنامج mimalloc هي تنفيذه المدمج (أقل من 3500 سطر من التعليمات البرمجية) والأداء العالي جدًا. في
لتقييم الأداء، مجموعة من القائمة
يتم تحقيق الأداء العالي بشكل رئيسي من خلال استخدام تقسيم القائمة المجانية. بدلاً من قائمة واحدة كبيرة، يستخدم mimalloc سلسلة من القوائم الأصغر، كل واحدة منها مرتبطة بصفحة الذاكرة. يقلل هذا الأسلوب من التجزئة ويزيد من مكانة البيانات في الذاكرة. صفحة الذاكرة عبارة عن مجموعة مجمعة من الكتل ذات الحجم المماثل. في أنظمة 64 بت، يكون حجم الصفحة عادةً 64 كيلو بايت. إذا لم تكن هناك كتل مشغولة متبقية في الصفحة، فسيتم تحريرها بالكامل وإعادة الذاكرة إلى نظام التشغيل، مما يقلل من تكاليف الذاكرة والتجزئة في البرامج طويلة التشغيل.
يمكن تضمين المكتبة في مرحلة الارتباط أو تحميلها لبرنامج تم تجميعه بالفعل ("LD_PRELOAD=/usr/bin/libmimalloc.so myprogram"). كما توفر المكتبة
من الممكن إنشاء المكتبة في الوضع الآمن، حيث يتم استبدال صفحات فحص الذاكرة الخاصة (صفحات الحماية) عند حدود الكتلة، ويتم استخدام التوزيع العشوائي للكتل وتشفير قوائم الكتل المحررة. تتيح مثل هذه الإجراءات حظر الأساليب الأكثر شيوعًا لاستغلال تجاوزات المخزن المؤقت المستندة إلى الكومة. عند تمكين الوضع الآمن، ينخفض الأداء بنسبة 3% تقريبًا.
ومن بين ميزات mimalloc أيضًا أنه غير معرض لمشاكل الانتفاخ بسبب التفتت الكبير. في أسوأ السيناريوهات، يزيد استهلاك الذاكرة بنسبة 0.2% للبيانات التعريفية ويمكن أن يصل إلى 16.7% للذاكرة الموزعة. لتجنب التعارضات عند الوصول إلى الموارد، يستخدم mimalloc العمليات الذرية فقط.
المصدر: opennet.ru