ืคืจื•ื™ืงื˜ NetBSD ืžืคืชื— ื”ื™ืคืจื•ื•ื™ื–ืจ NVMM ื—ื“ืฉ

ืžืคืชื—ื™ ืคืจื•ื™ืงื˜ื™ื ืฉืœ NetBSD ื”ื•ื›ืจื– ืขืœ ื™ืฆื™ืจืช ื”ื™ืคืจื•ื•ื™ื–ืจ ื—ื“ืฉ ื•ืขืจื™ืžืช ื”ื•ื•ื™ืจื˜ื•ืืœื™ื–ืฆื™ื” ื”ืžืฉื•ื™ื›ืช, ืฉื›ื‘ืจ ื ื›ืœืœื™ื ื‘ืกื ื™ืฃ ื”ื ื™ืกื™ื•ื ื™ NetBSD-current ื•ื™ื•ืฆืขื• ื‘ืžื”ื“ื•ืจื” ื”ื™ืฆื™ื‘ื” ืฉืœ NetBSD 9. NVMM ืžื•ื’ื‘ืœ ื›ืจื’ืข ืœืชืžื™ื›ื” ื‘ืืจื›ื™ื˜ืงื˜ื•ืจืช x86_64 ื•ืžืกืคืง ืฉื ื™ ืงืฆื” ืื—ื•ืจื™ื™ื ืขื‘ื•ืจ ื”ืžืืคืฉืจื™ื ืžื ื’ื ื•ื ื™ ื•ื™ืจื˜ื•ืืœื™ื–ืฆื™ื” ืฉืœ ื—ื•ืžืจื”: x86-SVM ืขื ืชืžื™ื›ื” ื‘ื”ืจื—ื‘ื•ืช ื•ื™ืจื˜ื•ืืœื™ื–ืฆื™ื” ืฉืœ AMD ื•-x86-VMX ืœืžืขื‘ื“ื™ ืื™ื ื˜ืœ. ื‘ืžืชื›ื•ื ืชื• ื”ื ื•ื›ื—ื™ืช, ื ื™ืชืŸ ืœื”ืคืขื™ืœ ืขื“ 128 ืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช ืขืœ ืžืืจื— ืื—ื“, ืฉืœื›ืœ ืื—ืช ืžื”ืŸ ื ื™ืชืŸ ืœื”ืงืฆื•ืช ืขื“ 256 ืœื™ื‘ื•ืช ืžืขื‘ื“ ื•ื™ืจื˜ื•ืืœื™ (VCPU) ื•-128 GB ืฉืœ ื–ื™ื›ืจื•ืŸ RAM.

NVMM ื›ื•ืœืœ ื“ืจื™ื™ื‘ืจ ื”ืคื•ืขืœ ื‘ืจืžืช ืœื™ื‘ืช ื”ืžืขืจื›ืช ื•ืžืชืื ื’ื™ืฉื” ืœืžื ื’ื ื•ื ื™ ื•ื™ืจื˜ื•ืืœื™ื–ืฆื™ื” ืฉืœ ื”ื—ื•ืžืจื”, ื•ืขืจื™ืžืช Libnvmm ืฉืคื•ืขืœืช ื‘ืžืจื—ื‘ ื”ืžืฉืชืžืฉ. ื”ืื™ื ื˜ืจืืงืฆื™ื” ื‘ื™ืŸ ืจื›ื™ื‘ื™ ื”ืœื™ื‘ื” ื•ืžืจื—ื‘ ื”ืžืฉืชืžืฉ ืžืชื‘ืฆืขืช ื‘ืืžืฆืขื•ืช IOCTL. ืชื›ื•ื ื” ืฉืœ NVMM ืฉืžื‘ื“ื™ืœื” ืื•ืชื• ืž-hypervisors ื›ื’ื•ืŸ KVM is HAXM ื•-Bhyve, ื”ื•ื ืฉื‘ืจืžืช ื”ืœื™ื‘ื” ืžื‘ื•ืฆืขืช ืจืง ื”ืกื˜ ื”ืžื™ื ื™ืžืœื™ ื”ื ื“ืจืฉ ืฉืœ bindings ืกื‘ื™ื‘ ืžื ื’ื ื•ื ื™ ื•ื™ืจื˜ื•ืืœื™ื–ืฆื™ื” ืฉืœ ื—ื•ืžืจื”, ื•ื›ืœ ืงื•ื“ ืืžื•ืœืฆื™ื™ืช ื”ื—ื•ืžืจื” ืžื•ืขื‘ืจ ืžื”ืงืจื ืœ ืืœ ืžืจื—ื‘ ื”ืžืฉืชืžืฉ. ื’ื™ืฉื” ื–ื• ืžืืคืฉืจืช ืœื”ืคื—ื™ืช ืืช ื›ืžื•ืช ื”ืงื•ื“ ื”ืžื•ืคืขืœ ืขื ื”ืจืฉืื•ืช ื’ื‘ื•ื”ื•ืช ื•ืœื”ืคื—ื™ืช ืืช ื”ืกื™ื›ื•ืŸ ืœืคื’ื™ืขื” ื‘ืžืขืจื›ืช ื›ื•ืœื” ื‘ืžืงืจื” ืฉืœ ื”ืชืงืคื•ืช ืขืœ ืคืจืฆื•ืช ื‘-hypervisor. ื‘ื ื•ืกืฃ, ืื™ืชื•ืจ ื‘ืื’ื™ื ื•ื‘ื“ื™ืงื•ืช ื˜ืฉื˜ื•ืฉ ืฉืœ ื”ืคืจื•ื™ืงื˜ ืžืคื•ืฉื˜ื•ืช ื‘ืื•ืคืŸ ื ื™ื›ืจ.

ืขื ื–ืืช, Libnvmm ืขืฆืžื• ืื™ื ื• ืžื›ื™ืœ ืคื•ื ืงืฆื™ื•ืช ืืžื•ืœื˜ื•ืจ, ืืœื ืžืกืคืง ืจืง API ื”ืžืืคืฉืจ ืœืฉืœื‘ ืชืžื™ื›ืช NVMM ื‘ืืžื•ืœื˜ื•ืจื™ื ืงื™ื™ืžื™ื, ืœืžืฉืœ, QEMU. ื”-API ืžื›ืกื” ืคื•ื ืงืฆื™ื•ืช ื›ืžื• ื™ืฆื™ืจื” ื•ื”ืฉืงื” ืฉืœ ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช, ื”ืงืฆืืช ื–ื™ื›ืจื•ืŸ ืœืžืขืจื›ืช ื”ืื•ืจื—ืช ื•ื”ืงืฆืืช VCPUs. ื›ื“ื™ ืœืฉืคืจ ืืช ื”ืื‘ื˜ื—ื” ื•ืœื”ืคื—ื™ืช ืืช ื•ืงื˜ื•ืจื™ ื”ื”ืชืงืคื” ื”ืืคืฉืจื™ื™ื, libnvmm ืžืกืคืง ืจืง ืคื•ื ืงืฆื™ื•ืช ืฉืžืชื‘ืงืฉื•ืช ื‘ืžืคื•ืจืฉ - ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืžื˜ืคืœื™ื ืžื•ืจื›ื‘ื™ื ืื™ื ื ื ืงืจืื™ื ืื•ื˜ื•ืžื˜ื™ืช ื•ื™ื™ืชื›ืŸ ืฉืœื ื™ื”ื™ื” ื‘ื”ื ืฉื™ืžื•ืฉ ื›ืœืœ ืื ื ื™ืชืŸ ืœื”ื™ืžื ืข ืžื”ื. NVMM ืžื ืกื” ืœืฉืžื•ืจ ืขืœ ื“ื‘ืจื™ื ืคืฉื•ื˜ื™ื, ืžื‘ืœื™ ืœื”ืกืชื‘ืš ื™ื•ืชืจ ืžื“ื™, ื•ืœืืคืฉืจ ืœืš ืœืฉืœื•ื˜ ื‘ื›ืžื” ืฉื™ื•ืชืจ ื”ื™ื‘ื˜ื™ื ืฉืœ ื”ืขื‘ื•ื“ื” ืฉืœืš.

ืคืจื•ื™ืงื˜ NetBSD ืžืคืชื— ื”ื™ืคืจื•ื•ื™ื–ืจ NVMM ื—ื“ืฉ

ื”ื—ืœืง ื‘ืจืžืช ื”ืœื™ื‘ื” ืฉืœ NVMM ืžืฉื•ืœื‘ ื‘ืฆื•ืจื” ื”ื“ื•ืงื” ืœืžื“ื™ ืขื ืœื™ื‘ืช NetBSD, ื•ืžืืคืฉืจ ื‘ื™ืฆื•ืขื™ื ืžืฉื•ืคืจื™ื ืขืœ ื™ื“ื™ ื”ืคื—ืชืช ืžืกืคืจ ื‘ื•ืจืจื™ ื”ื”ืงืฉืจ ื‘ื™ืŸ ืžืขืจื›ืช ื”ื”ืคืขืœื” ื”ืื•ืจื—ืช ืœืกื‘ื™ื‘ืช ื”ืžืืจื—ืช. ื‘ืฆื“ ืžืจื—ื‘ ื”ืžืฉืชืžืฉ, libnvmm ืžื ืกื” ืœืฆื‘ื•ืจ ืคืขื•ืœื•ืช I/O ื ืคื•ืฆื•ืช ื•ืœื”ื™ืžื ืข ืžื‘ื™ืฆื•ืข ืงืจื™ืื•ืช ืžืขืจื›ืช ืฉืœื ืœืฆื•ืจืš. ืžืขืจื›ืช ื”ืงืฆืืช ื”ื–ื™ื›ืจื•ืŸ ืžื‘ื•ืกืกืช ืขืœ ืชืช-ื”ืžืขืจื›ืช pmap, ื”ืžืืคืฉืจืช ืœืคื ื•ืช ื“ืคื™ ื–ื™ื›ืจื•ืŸ ืื•ืจื—ื™ื ืœืžื—ื™ืฆืช ื”ื”ื—ืœืคื” ื‘ืžืงืจื” ืฉืœ ืžื—ืกื•ืจ ื‘ื–ื™ื›ืจื•ืŸ ื‘ืžืขืจื›ืช. NVMM ื ืงื™ ืžืžื ืขื•ืœื™ื ื’ืœื•ื‘ืœื™ื™ื ื•ืžืืคืฉืจื™ื ืœืš ืœื”ืฉืชืžืฉ ื‘ื•-ื–ืžื ื™ืช ื‘ืœื™ื‘ื•ืช CPU ืฉื•ื ื•ืช ื›ื“ื™ ืœื”ืคืขื™ืœ ืžื›ื•ื ื•ืช ื•ื™ืจื˜ื•ืืœื™ื•ืช ืื•ืจื—ื•ืช ืฉื•ื ื•ืช.

ื”ื•ื›ืŸ ืคืชืจื•ืŸ ืžื‘ื•ืกืก QEMU ื”ืžืฉืชืžืฉ ื‘-NVMM ื›ื“ื™ ืœืืคืฉืจ ืžื ื’ื ื•ื ื™ ื•ื™ืจื˜ื•ืืœื™ื–ืฆื™ื” ืฉืœ ื—ื•ืžืจื”. ืžืชื‘ืฆืขืช ืขื‘ื•ื“ื” ืœื›ืœื•ืœ ืืช ื”ืชื™ืงื•ื ื™ื ื”ืžื•ื›ื ื™ื ื‘ืžื‘ื ื” ื”ืจืืฉื™ ืฉืœ QEMU. ื”ืฉื™ืœื•ื‘ ืฉืœ QEMU+NVMM ื›ื‘ืจ ืงื™ื™ื ื”ื™ื ืžืืคืฉืจืช ืœื”ืจื™ืฅ ื‘ื”ืฆืœื—ื” ืžืขืจื›ื•ืช ืื•ืจื—ื™ื ืขื FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 ื•ืžืขืจื›ื•ืช ื”ืคืขืœื” ืื—ืจื•ืช ื‘ืžืขืจื›ื•ืช x86_64 ืขื ืžืขื‘ื“ื™ AMD ื•-Intel (NVMM ืขืฆืžื” ืื™ื ื” ืงืฉื•ืจื” ืœืืจื›ื™ื˜ืงื˜ื•ืจื” ืกืคืฆื™ืคื™ืช, ืœืžืฉืœ, ืื ื ื•ืฆืจ ื”-backend ื”ืžืชืื™ื , ื”ื•ื ื™ื•ื›ืœ ืœืขื‘ื•ื“ ืขืœ ืžืขืจื›ื•ืช ARM64 ). ื‘ื™ืŸ ืชื—ื•ืžื™ ื”ื™ื™ืฉื•ื ื”ื ื•ืกืฃ ืฉืœ NVMM, ืžืฆื•ื™ืŸ ื’ื ื‘ื™ื“ื•ื“ ืืจื’ื– ื—ื•ืœ ืฉืœ ื™ื™ืฉื•ืžื™ื ื‘ื•ื“ื“ื™ื.

ืคืจื•ื™ืงื˜ NetBSD ืžืคืชื— ื”ื™ืคืจื•ื•ื™ื–ืจ NVMM ื—ื“ืฉ

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”