نیٹ بی ایس ڈی پروجیکٹ ڈویلپرز
NVMM میں ایک ڈرائیور شامل ہے جو سسٹم کرنل کی سطح پر چلتا ہے اور ہارڈویئر ورچوئلائزیشن میکانزم تک رسائی کو مربوط کرتا ہے، اور ایک Libnvmm اسٹیک جو صارف کی جگہ پر چلتا ہے۔ دانا کے اجزاء اور صارف کی جگہ کے درمیان تعامل IOCTL کے ذریعے کیا جاتا ہے۔ NVMM کی ایک خصوصیت جو اسے KVM جیسے ہائپر وائزرز سے ممتاز کرتی ہے۔
تاہم، Libnvmm بذات خود ایمولیٹر فنکشنز پر مشتمل نہیں ہے، لیکن صرف ایک API فراہم کرتا ہے جو آپ کو NVMM سپورٹ کو موجودہ ایمولیٹرز میں ضم کرنے کی اجازت دیتا ہے، مثال کے طور پر، QEMU۔ API میں ایک ورچوئل مشین بنانا اور لانچ کرنا، گیسٹ سسٹم میں میموری مختص کرنا، اور VCPUs مختص کرنا شامل ہے۔ سیکیورٹی کو بہتر بنانے اور ممکنہ حملے کے ویکٹر کو کم کرنے کے لیے، libnvmm صرف ایسے فنکشن فراہم کرتا ہے جن کی واضح طور پر درخواست کی جاتی ہے — پہلے سے طے شدہ طور پر، پیچیدہ ہینڈلرز کو خود بخود نہیں بلایا جاتا ہے اور اگر ان سے بچا جا سکتا ہے تو بالکل بھی استعمال نہیں کیا جا سکتا۔ NVMM چیزوں کو آسان رکھنے کی کوشش کرتا ہے، بہت زیادہ پیچیدہ ہوئے بغیر، اور آپ کو اپنے کام کے زیادہ سے زیادہ پہلوؤں کو کنٹرول کرنے کی اجازت دیتا ہے۔
NVMM کا کرنل لیول کا حصہ NetBSD کرنل کے ساتھ کافی مضبوطی سے مربوط ہے، اور مہمان OS اور میزبان ماحول کے درمیان سیاق و سباق کے سوئچز کی تعداد کو کم کر کے بہتر کارکردگی کی اجازت دیتا ہے۔ صارف کی جگہ کی طرف، libnvmm عام I/O آپریشنز کو جمع کرنے کی کوشش کرتا ہے اور غیر ضروری طور پر سسٹم کال کرنے سے گریز کرتا ہے۔ میموری ایلوکیشن سسٹم pmap سب سسٹم پر مبنی ہے، جو آپ کو سسٹم میں میموری کی کمی کی صورت میں گیسٹ میموری پیجز کو سویپ پارٹیشن میں نکالنے کی اجازت دیتا ہے۔ NVMM عالمی تالے اور ترازو سے پاک ہے، جو آپ کو مختلف مہمان ورچوئل مشینوں کو چلانے کے لیے بیک وقت مختلف CPU کور استعمال کرنے کی اجازت دیتا ہے۔
ایک QEMU پر مبنی حل تیار کیا گیا ہے جو ہارڈویئر ورچوئلائزیشن میکانزم کو فعال کرنے کے لیے NVMM کا استعمال کرتا ہے۔ QEMU کے مرکزی ڈھانچے میں تیار شدہ پیچ کو شامل کرنے کے لیے کام جاری ہے۔ QEMU+NVMM مجموعہ پہلے سے ہی ہے۔
ماخذ: opennet.ru