นักพัฒนาโครงการ NetBSD
NVMM มีไดรเวอร์ที่ทำงานในระดับเคอร์เนลของระบบและประสานการเข้าถึงกลไกการจำลองเสมือนของฮาร์ดแวร์ และสแต็ก Libnvmm ที่ทำงานในพื้นที่ผู้ใช้ การโต้ตอบระหว่างส่วนประกอบเคอร์เนลและพื้นที่ผู้ใช้ดำเนินการผ่าน IOCTL คุณลักษณะของ NVMM ที่แตกต่างจากไฮเปอร์ไวเซอร์เช่น KVM คือ
อย่างไรก็ตาม Libnvmm เองไม่มีฟังก์ชันอีมูเลเตอร์ แต่มีเพียง API ที่ให้คุณรวมการรองรับ NVMM เข้ากับอีมูเลเตอร์ที่มีอยู่ เช่น QEMU API ครอบคลุมฟังก์ชันต่างๆ เช่น การสร้างและเปิดใช้เครื่องเสมือน การจัดสรรหน่วยความจำให้กับระบบเกสต์ และการจัดสรร VCPU เพื่อปรับปรุงความปลอดภัยและลดเวกเตอร์การโจมตีที่เป็นไปได้ libnvmm จัดเตรียมเฉพาะฟังก์ชันที่ได้รับการร้องขออย่างชัดเจน โดยค่าเริ่มต้น ตัวจัดการที่ซับซ้อนจะไม่ถูกเรียกโดยอัตโนมัติและอาจไม่สามารถใช้ได้เลยหากสามารถหลีกเลี่ยงได้ NVMM พยายามทำให้สิ่งต่าง ๆ เรียบง่ายโดยไม่ซับซ้อนเกินไป และช่วยให้คุณควบคุมงานของคุณในหลาย ๆ ด้านได้มากที่สุดเท่าที่จะเป็นไปได้
ส่วนระดับเคอร์เนลของ NVMM ค่อนข้างจะผสานรวมกับเคอร์เนล NetBSD ค่อนข้างแน่นหนา และช่วยให้ปรับปรุงประสิทธิภาพโดยการลดจำนวนการสลับบริบทระหว่างระบบปฏิบัติการเกสต์และสภาพแวดล้อมของโฮสต์ ในด้านพื้นที่ผู้ใช้ libnvmm พยายามรวมการดำเนินการ I/O ทั่วไป และหลีกเลี่ยงการเรียกระบบโดยไม่จำเป็น ระบบการจัดสรรหน่วยความจำจะขึ้นอยู่กับระบบย่อย pmap ซึ่งช่วยให้คุณสามารถนำเพจหน่วยความจำของแขกออกไปยังพาร์ติชันสลับได้ในกรณีที่หน่วยความจำในระบบขาดแคลน NVMM ไม่มีการล็อกและปรับขนาดส่วนกลางอย่างดี ช่วยให้คุณสามารถใช้คอร์ CPU ที่แตกต่างกันเพื่อรันเครื่องเสมือนของแขกที่แตกต่างกันได้
มีการเตรียมโซลูชันที่ใช้ QEMU ซึ่งใช้ NVMM เพื่อเปิดใช้งานกลไกการจำลองเสมือนสำหรับฮาร์ดแวร์ งานอยู่ระหว่างดำเนินการเพื่อรวมแพตช์ที่เตรียมไว้ในโครงสร้างหลักของ QEMU ชุดค่าผสม QEMU+NVMM มีอยู่แล้ว
ที่มา: opennet.ru