مائیکروسافٹ نے MIT لائسنس کے تحت ایک لائبریری کھولی ہے۔
mimalloc کی اہم خصوصیت اس کا کمپیکٹ نفاذ (3500 لائنز کوڈ سے کم) اور بہت اعلی کارکردگی ہے۔ میں
کارکردگی کا اندازہ کرنے کے لیے، موجودہ کا ایک سیٹ
اعلی کارکردگی بنیادی طور پر مفت فہرست کی شارڈنگ کے استعمال سے حاصل کی جاتی ہے۔ ایک بڑی فہرست کے بجائے، mimalloc چھوٹی فہرستوں کا ایک سلسلہ استعمال کرتا ہے، جن میں سے ہر ایک میموری کے صفحے سے منسلک ہوتا ہے۔ یہ نقطہ نظر ٹکڑے ٹکڑے کو کم کرتا ہے اور میموری میں ڈیٹا لوکلٹی کو بڑھاتا ہے۔ میموری کا صفحہ ایک جیسے سائز کے بلاکس کا ایک گروپ کردہ سیٹ ہے۔ 64 بٹ سسٹمز پر، صفحہ کا سائز عام طور پر 64 KB ہوتا ہے۔ اگر صفحہ میں کوئی قبضہ شدہ بلاکس باقی نہیں ہیں، تو اسے مکمل طور پر آزاد کر دیا جاتا ہے اور میموری آپریٹنگ سسٹم میں واپس آ جاتی ہے، جس سے طویل عرصے تک چلنے والے پروگراموں میں میموری کی لاگت اور ٹکڑے ٹکڑے ہونے میں کمی آتی ہے۔
لائبریری کو لنک کرنے کے مرحلے پر شامل کیا جا سکتا ہے یا پہلے سے جمع شدہ پروگرام ("LD_PRELOAD=/usr/bin/libmimalloc.so myprogram") کے لیے لوڈ کیا جا سکتا ہے۔ لائبریری بھی فراہم کرتی ہے۔
لائبریری کو محفوظ موڈ میں بنانا ممکن ہے، جس میں خصوصی میموری چیک پیجز (گارڈ پیجز) کو بلاک باؤنڈری پر تبدیل کیا جاتا ہے، اور بلاک کی تقسیم کی بے ترتیبی اور آزاد شدہ بلاکس کی فہرستوں کی خفیہ کاری کا استعمال کیا جاتا ہے۔ اس طرح کے اقدامات ڈھیر پر مبنی بفر اوور فلو کے استحصال کے لیے سب سے عام تکنیکوں کو روکنا ممکن بناتے ہیں۔ جب آپ سیف موڈ کو فعال کرتے ہیں، تو کارکردگی تقریباً 3% کم ہو جاتی ہے۔
mimalloc کی خصوصیات میں سے، یہ بھی نوٹ کیا جاتا ہے کہ یہ بڑے ٹکڑے ہونے کی وجہ سے اپھارہ کے ساتھ مسائل کے لئے حساس نہیں ہے. بدترین صورت حال میں، میٹا ڈیٹا کے لیے میموری کی کھپت میں 0.2% اضافہ ہوتا ہے اور تقسیم شدہ میموری کے لیے 16.7% تک پہنچ سکتا ہے۔ وسائل تک رسائی کے دوران تنازعات سے بچنے کے لیے، mimalloc صرف ایٹم آپریشنز کا استعمال کرتا ہے۔
ماخذ: opennet.ru