เป‚เบ„เบ‡เบเบฒเบ™ NetBSD เบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒ hypervisor NVMM เปƒเบซเบกเปˆ

เบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ„เบ‡เบเบฒเบ™ NetBSD เบ›เบฐโ€‹เบเบฒเบ” เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡ hypervisor เปƒเปเปˆ เปเบฅเบฐ stack virtualization เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡, เป€เบŠเบดเปˆเบ‡เป„เบ”เป‰เบ–เบทเบเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเปƒเบ™เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡ NetBSD-current เบชเบฒเบ‚เบฒเปเบฅเบฐเบˆเบฐเบ–เบทเบเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเบ—เบตเปˆเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบ‚เบญเบ‡ NetBSD 9. NVMM เบ›เบฐเบˆเบธเบšเบฑเบ™เบˆเปเบฒเบเบฑเบ”เป€เบžเบทเปˆเบญเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐ x86_64 เปเบฅเบฐเบชเบฐเบซเบ™เบญเบ‡เบชเบญเบ‡ backends เบชเปเบฒเบฅเบฑเบš เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบปเบ™เป„เบ virtualization เบฎเบฒเบ”เปเบง: x86-SVM เบฎเบญเบ‡เบฎเบฑเบš AMD เปเบฅเบฐ x86-VMX CPU virtualization extensions เบชเปเบฒเบฅเบฑเบš Intel CPUs. เปƒเบ™เบฎเบนเบšเปเบšเบšเบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบกเบฑเบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเปเบฅเปˆเบ™เป€เบ–เบดเบ‡ 128 เป€เบ„เบทเปˆเบญเบ‡ virtual เปƒเบ™เบซเบ™เบถเปˆเบ‡เป€เบˆเบปเป‰เบฒเบžเบฒเบš, เปเบ•เปˆเบฅเบฐเบ„เบปเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบชเบฑเบ™เป„เบ”เป‰เป€เบ–เบดเบ‡ 256 เปเบเบ™เป‚เบ›เป€เบŠเบ”เป€เบŠเบต virtual (VCPU) เปเบฅเบฐ 128 GB เบ‚เบญเบ‡ RAM.

NVMM เบ›เบฐเบเบญเบšเบกเบตเป„เบ”เป€เบงเบตเบ—เบตเปˆเปเบฅเปˆเบ™เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบš kernel เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเปเบฅเบฐเบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบปเบ™เป„เบ virtualization เบฎเบฒเบ”เปเบง, เปเบฅเบฐ stack Libnvmm เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰. เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เปเบเปˆเบ™เปเบฅเบฐเบžเบทเป‰เบ™เบ—เบตเปˆเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เป‚เบ”เบเบœเปˆเบฒเบ™ IOCTL. เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡ NVMM เบ—เบตเปˆเบˆเปเบฒเปเบ™เบเบกเบฑเบ™เบˆเบฒเบ hypervisors เป€เบŠเบฑเปˆเบ™ KVM เปเบกเปˆเบ™ HAXM เปเบฅเบฐ Bhyve, เปเบกเปˆเบ™เบงเปˆเบฒเบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบš kernel เบžเบฝเบ‡เปเบ•เปˆเบเปเบฒเบ™เบปเบ”เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰เบ‚เบญเบ‡เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบ›เบฐเบกเบฒเบ™เบเบปเบ™เป„เบ virtualization เบฎเบฒเบ”เปเบงเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เปเบฅเบฐเบฅเบฐเบซเบฑเบ” emulation เบฎเบฒเบ”เปเบงเบ—เบฑเบ‡เบซเบกเบปเบ”เบ–เบทเบเบเป‰เบฒเบเบญเบญเบเบˆเบฒเบ kernel เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰. เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบซเบผเบธเบ”เบœเปˆเบญเบ™เบˆเปเบฒเบ™เบงเบ™เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบ”เป‰เบงเบเบชเบดเบ”เบ—เบดเบžเบดเป€เบชเบ”เบ—เบตเปˆเบชเบนเบ‡เปเบฅเบฐเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ•เปเปˆเบเบฒเบ™เบ›เบฐเบ™เบตเบ›เบฐเบ™เบญเบกเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบกเบตเบเบฒเบ™เป‚เบˆเบกเบ•เบตเบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบญเปˆเบญเบ™เปเบญเปƒเบ™ hypervisor. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš debugging เปเบฅเบฐ fuzzing เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, Libnvmm เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบšเปเปˆเบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆ emulator, เปเบ•เปˆเบžเบฝเบ‡เปเบ•เปˆเบชเบฐเบซเบ™เบญเบ‡ API เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ NVMM เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ emulators เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง, เบ•เบปเบงเบขเปˆเบฒเบ‡, QEMU. API เบเบงเบกเป€เบญเบปเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบชเป‰เบฒเบ‡เปเบฅเบฐเป€เบ›เบตเบ”เบ•เบปเบงเป€เบ„เบทเปˆเบญเบ‡ virtual, เบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปƒเบซเป‰เบเบฑเบšเบฅเบฐเบšเบปเบšเปเบ‚เบ, เปเบฅเบฐเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™ VCPUs. เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเปเบฅเบฐเบซเบผเบธเบ”เบœเปˆเบญเบ™ vectors เบเบฒเบ™เป‚เบˆเบกเบ•เบตเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, libnvmm เปƒเบซเป‰เบžเบฝเบ‡เปเบ•เปˆเบซเบ™เป‰เบฒเบ—เบตเปˆเบ–เบทเบเบฎเป‰เบญเบ‡เบ‚เปเบขเปˆเบฒเบ‡เบŠเบฑเบ”เป€เบˆเบ™ - เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™เบšเปเปˆเป„เบ”เป‰เบ–เบทเบเป€เบญเบตเป‰เบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบšเปเปˆเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบซเบผเบตเบเป€เบงเบฑเป‰เบ™เป„เบ”เป‰. NVMM เบžเบฐเบเบฒเบเบฒเบกเบฎเบฑเบเบชเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบ, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบชเบฑเบšเบชเบปเบ™เป€เบเบตเบ™เป„เบ›, เปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ„เบงเบšเบ„เบธเบกเบซเบผเบฒเบเบ”เป‰เบฒเบ™เบ‚เบญเบ‡เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰.

เป‚เบ„เบ‡เบเบฒเบ™ NetBSD เบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒ hypervisor NVMM เปƒเบซเบกเปˆ

เบžเบฒเบเบชเปˆเบงเบ™เบฅเบฐเบ”เบฑเบš kernel เบ‚เบญเบ‡ NVMM เปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เปเบซเบ™เป‰เบ™เปเบซเบ™เป‰เบ™เบเบฑเบš NetBSD kernel, เปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡ OS เปเบ‚เบเปเบฅเบฐเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเป€เบˆเบปเป‰เบฒเบžเบฒเบš. เปƒเบ™เบ”เป‰เบฒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰, libnvmm เบžเบฐเบเบฒเบเบฒเบกเบฅเบงเบšเบฅเบงเบกเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™ I/O เบ—เบปเปˆเบงเป„เบ›เปเบฅเบฐเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เป‚เบ—เบซเบฒเบฅเบฐเบšเบปเบšเป‚เบ”เบเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™. เบฅเบฐเบšเบปเบšเบเบฒเบ™เบˆเบฑเบ”เบชเบฑเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบฅเบฐเบšเบปเบšเบเปˆเบญเบ pmap, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฑเบšเป„เบฅเปˆเบซเบ™เป‰เบฒเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบ‚เบญเบ‡เปเบ‚เบเป„เบ›เบซเบฒเบšเปˆเบญเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบ„เบงเบฒเบกเบˆเปเบฒเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบฒเบ”เปเบ„เบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเปƒเบ™เบฅเบฐเบšเบปเบš. NVMM เปเบกเปˆเบ™เบšเปเปˆเบกเบต locks เบ—เบปเปˆเบงเป‚เบฅเบเปเบฅเบฐเบ‚เบฐเบซเบ™เบฒเบ”เป„เบ”เป‰เบ”เบต, เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบžเป‰เบญเบกเบเบฑเบ™เบ™เปเบฒเปƒเบŠเป‰เปเบเบ™ CPU เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบžเบทเปˆเบญเปเบฅเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual เปเบ‚เบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

เบเบฒเบ™เปเบเป‰เป„เบ‚เบ—เบตเปˆเบญเบตเบ‡เปƒเบชเปˆ QEMU เป„เบ”เป‰เบ–เบทเบเบเบฐเบเบฝเบกเบ—เบตเปˆเปƒเบŠเป‰ NVMM เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เบเบปเบ™เป„เบเบเบฒเบ™ virtualization เบฎเบฒเบ”เปเบง. เบงเบฝเบเบ‡เบฒเบ™เบเปเบฒเบฅเบฑเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบขเบนเปˆเป€เบžเบทเปˆเบญเบ›เบฐเบเบญเบšเปเบœเปˆเบ™เบ—เบตเปˆเบเบฝเบกเป„เบงเป‰เบขเบนเปˆเปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ•เบปเป‰เบ™เบ•เปเบ‚เบญเบ‡ QEMU. เบเบฒเบ™เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™ QEMU+NVMM เปเบกเปˆเบ™เปเบฅเป‰เบง เบญเบฐเบ™เบธเบเบฒเบ” เบชเบณเป€เบฅเบฑเบ”เบเบฒเบ™เบ”เบณเป€เบ™เบตเบ™เบฅเบฐเบšเบปเบšเปเบ‚เบเบ”เป‰เบงเบ FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 เปเบฅเบฐ OS เบญเบทเปˆเบ™เป†เปƒเบ™เบฅเบฐเบšเบปเบš x86_64 เบ”เป‰เบงเบเป‚เบ›เป€เบŠเบ”เป€เบŠเบต AMD เปเบฅเบฐ Intel (NVMM เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบšเปเปˆเป„เบ”เป‰เบœเบนเบเบกเบฑเบ”เบเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณเบชเบฐเป€เบžเบฒเบฐ, เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒ backend เป€เปเบฒเบฐเบชเบปเบกเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™. , เบกเบฑเบ™เบˆเบฐเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบš ARM64 ). เปƒเบ™เบšเบฑเบ™เบ”เบฒเบ‚เบปเบ‡เป€เบ‚เบ”เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ‚เบญเบ‡ NVMM, เบเบฒเบ™เปเบเบ sandbox เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™เปเบกเปˆเบ™เบเบฑเบ‡เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™.

เป‚เบ„เบ‡เบเบฒเบ™ NetBSD เบเปเบฒเบฅเบฑเบ‡เบžเบฑเบ”เบ—เบฐเบ™เบฒ hypervisor NVMM เปƒเบซเบกเปˆ

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™