مطورو مشروع NetBSD
يتضمن NVMM برنامج تشغيل يعمل على مستوى نواة النظام وينسق الوصول إلى آليات المحاكاة الافتراضية للأجهزة، ومكدس Libnvmm الذي يعمل في مساحة المستخدم. يتم التفاعل بين مكونات kernel ومساحة المستخدم من خلال IOCTL. إحدى ميزات NVMM التي تميزه عن برامج Hypervisor مثل KVM هي
ومع ذلك، Libnvmm نفسها لا تحتوي على وظائف المحاكي، ولكنها توفر فقط واجهة برمجة التطبيقات (API) التي تسمح لك بدمج دعم NVMM في المحاكيات الموجودة، على سبيل المثال، QEMU. تغطي واجهة برمجة التطبيقات وظائف مثل إنشاء جهاز افتراضي وتشغيله، وتخصيص الذاكرة لنظام الضيف، وتخصيص وحدات VCPU. لتحسين الأمان وتقليل نواقل الهجوم المحتملة، يوفر libnvmm فقط الوظائف المطلوبة صراحةً - افتراضيًا، لا يتم استدعاء المعالجات المعقدة تلقائيًا وقد لا يتم استخدامها على الإطلاق إذا كان من الممكن تجنبها. تحاول NVMM إبقاء الأمور بسيطة، دون أن تصبح معقدة للغاية، وتسمح لك بالتحكم في أكبر عدد ممكن من جوانب عملك.
تم دمج الجزء على مستوى النواة من NVMM بشكل محكم مع نواة NetBSD، ويسمح بتحسين الأداء عن طريق تقليل عدد مفاتيح التبديل بين نظام التشغيل الضيف والبيئة المضيفة. من ناحية مساحة المستخدم، يحاول libnvmm تجميع عمليات الإدخال/الإخراج الشائعة وتجنب إجراء مكالمات النظام دون داع. يعتمد نظام تخصيص الذاكرة على النظام الفرعي pmap، والذي يسمح لك بطرد صفحات ذاكرة الضيف إلى قسم المبادلة في حالة نقص الذاكرة في النظام. إن NVMM خالٍ من الأقفال والمقاييس العامة بشكل جيد، مما يسمح لك باستخدام نوى مختلفة لوحدة المعالجة المركزية في الوقت نفسه لتشغيل أجهزة افتراضية ضيف مختلفة.
تم إعداد حل يستند إلى QEMU يستخدم NVMM لتمكين آليات المحاكاة الافتراضية للأجهزة. يجري العمل حاليًا لإدراج التصحيحات المعدة في الهيكل الرئيسي لـ QEMU. مجموعة QEMU + NVMM موجودة بالفعل
المصدر: opennet.ru