ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ NetBSD Ρ€Π°Π·Π²ΠΈΠ²Π° Π½ΠΎΠ² NVMM Ρ…ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈ Π½Π° NetBSD ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ објавија Π·Π° создавањС Π½Π° Π½ΠΎΠ² Ρ…ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ ΠΈ ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈΠΎΡ‚ стСк Π·Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°, ΠΊΠΎΠΈ сС вСќС Π²ΠΊΠ»ΡƒΡ‡Π΅Π½ΠΈ Π²ΠΎ СкспСримСнталната NetBSD-Ρ‚Π΅ΠΊΠΎΠ²Π½Π° Π³Ρ€Π°Π½ΠΊΠ° ΠΈ ќС Π±ΠΈΠ΄Π°Ρ‚ ΠΏΠΎΠ½ΡƒΠ΄Π΅Π½ΠΈ Π²ΠΎ стабилното ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° NetBSD 9. NVMM ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° x86_64 ΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° Π΄Π²Π° ΠΏΠΎΠ·Π°Π΄ΠΈΠ½ΠΈ Π·Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°ΡšΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° Ρ…Π°Ρ€Π΄Π²Π΅Ρ€ΠΎΡ‚: x86-SVM со ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° СкстСнзии Π·Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° процСсорот AMD ΠΈ x86-VMX Π·Π° процСсоритС Π½Π° Intel. Π’ΠΎ Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° сСгашна Ρ„ΠΎΡ€ΠΌΠ°, ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ Π΄ΠΎ 128 Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ машини Π½Π° Π΅Π΄Π΅Π½ хост, ΠΎΠ΄ ΠΊΠΎΠΈ Π½Π° сСкоја ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π΄ΠΎΠ΄Π΅Π»Π°Ρ‚ Π΄ΠΎ 256 Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ процСсорски Ρ˜Π°Π΄Ρ€Π° (VCPU) ΠΈ 128 GB RAM.

NVMM Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π° Π΄Ρ€Π°Ρ˜Π²Π΅Ρ€ кој Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ Π½Π° систСмот ΠΈ Π³ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€Π° пристапот Π΄ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈΡ‚Π΅ Π·Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° Ρ…Π°Ρ€Π΄Π²Π΅Ρ€ΠΎΡ‚ ΠΈ стСк Libnvmm ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²ΠΎ корисничкиот простор. Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ ΠΈ корисничкиот простор сС Π²Ρ€ΡˆΠΈ ΠΏΡ€Π΅ΠΊΡƒ IOCTL. ΠšΠ°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΡΡ‚ΠΈΠΊΠ° Π½Π° NVMM ΡˆΡ‚ΠΎ Π³ΠΎ Ρ€Π°Π·Π»ΠΈΠΊΡƒΠ²Π° ΠΎΠ΄ Ρ…ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ KVM Π΅ HAXM ΠΈ Bhyve, Π΅ Π΄Π΅ΠΊΠ° Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ сС Π²Ρ€ΡˆΠΈ само ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΠΎΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±Π΅Π½ сСт Π½Π° Π²Ρ€Π·ΡƒΠ²Π°ΡšΠ° ΠΎΠΊΠΎΠ»Ρƒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈΡ‚Π΅ Π·Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° Ρ…Π°Ρ€Π΄Π²Π΅Ρ€ΠΎΡ‚ ΠΈ Ρ†Π΅Π»ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ Π·Π° Π΅ΠΌΡƒΠ»Π°Ρ†ΠΈΡ˜Π° Π½Π° Ρ…Π°Ρ€Π΄Π²Π΅Ρ€ΠΎΡ‚ сС прСмСстува Π½Π°Π΄Π²ΠΎΡ€ ΠΎΠ΄ ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ Π²ΠΎ корисничкиот простор. Овој пристап Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ја Π½Π°ΠΌΠ°Π»ΠΈΡ‚Π΅ ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ΄ ΠΈΠ·Π²Ρ€ΡˆΠ΅Π½ со Π·Π³ΠΎΠ»Π΅ΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΠΈ Π΄Π° Π³ΠΎ Π½Π°ΠΌΠ°Π»ΠΈΡ‚Π΅ Ρ€ΠΈΠ·ΠΈΠΊΠΎΡ‚ ΠΎΠ΄ Π·Π°Π³Ρ€ΠΎΠ·ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ†Π΅Π»ΠΈΠΎΡ‚ систСм Π²ΠΎ ΡΠ»ΡƒΡ‡Π°Ρ˜ Π½Π° Π½Π°ΠΏΠ°Π΄ΠΈ Π½Π° пропусти Π²ΠΎ Ρ…ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ΠΎΡ‚. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΅ поСдноставСно Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π·Π° Π΄Π΅Π±Π°Π³ΠΈΡ€Π°ΡšΠ΅ ΠΈ Π·Π°ΠΌΠ°Ρ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚.

Π‘Π΅ΠΏΠ°ΠΊ, самиот Libnvmm Π½Π΅ содрТи Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€, Ρ‚ΡƒΠΊΡƒ само ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° API ΡˆΡ‚ΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Ρ‚Π΅ NVMM ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π²ΠΎ постоСчкитС Π΅ΠΌΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, QEMU. API ΠΎΠΏΡ„Π°ΡœΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС ΠΊΡ€Π΅ΠΈΡ€Π°ΡšΠ΅ ΠΈ ΡΡ‚Π°Ρ€Ρ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½Π° машина, Π΄ΠΎΠ΄Π΅Π»ΡƒΠ²Π°ΡšΠ΅ ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° Π½Π° систСмот Π·Π° гости ΠΈ Π΄ΠΎΠ΄Π΅Π»ΡƒΠ²Π°ΡšΠ΅ Π½Π° VCPU. Π—Π° Π΄Π° сС ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ бСзбСдноста ΠΈ Π΄Π° сС Π½Π°ΠΌΠ°Π»Π°Ρ‚ ΠΌΠΎΠΆΠ½ΠΈΡ‚Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΈ Π½Π° Π½Π°ΠΏΠ°Π΄, libnvmm ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡƒΠ²Π° само Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠΎΠΈ сС Сксплицитно Π±Π°Ρ€Π°Π½ΠΈ - стандардно, слоТСнитС ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Ρ‡ΠΈ Π½Π΅ сС ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π°Π°Ρ‚ автоматски ΠΈ ΠΌΠΎΠΆΠ΅ Π²ΠΎΠΎΠΏΡˆΡ‚ΠΎ Π΄Π° Π½Π΅ сС користат Π΄ΠΎΠΊΠΎΠ»ΠΊΡƒ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π°Ρ‚. NVMM сС ΠΎΠ±ΠΈΠ΄ΡƒΠ²Π° Π΄Π° Π³ΠΈ ΠΎΠ΄Ρ€ΠΆΡƒΠ²Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ Сдноставни, Π±Π΅Π· Π΄Π° Π±ΠΈΠ΄Π΅ ΠΏΡ€Π΅ΠΌΠ½ΠΎΠ³Ρƒ ΠΊΠΎΠΌΠΏΠ»ΠΈΡ†ΠΈΡ€Π°Π½ΠΎ ΠΈ Π΄Π° Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚Π΅ ΡˆΡ‚ΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ повСќС аспСкти ΠΎΠ΄ Π²Π°ΡˆΠ°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ NetBSD Ρ€Π°Π·Π²ΠΈΠ²Π° Π½ΠΎΠ² NVMM Ρ…ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€

Π”Π΅Π»ΠΎΡ‚ Π½Π° Π½ΠΈΠ²ΠΎ Π½Π° Ρ˜Π°Π΄Ρ€ΠΎΡ‚ΠΎ Π½Π° NVMM Π΅ доста цврсто ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½ со NetBSD ΠΊΠ΅Ρ€Π½Π΅Π»ΠΎΡ‚ ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈ пСрформанси со Π½Π°ΠΌΠ°Π»ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° контСкстуални ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡ΠΈ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ гостинскиот ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π΅Π½ систСм ΠΈ ΠΎΠΊΠΎΠ»ΠΈΠ½Π°Ρ‚Π° Π½Π° Π΄ΠΎΠΌΠ°ΡœΠΈΠ½ΠΎΡ‚. На страната Π½Π° корисничкиот простор, libnvmm сС ΠΎΠ±ΠΈΠ΄ΡƒΠ²Π° Π΄Π° Π³ΠΈ собСрС Π²ΠΎΠΎΠ±ΠΈΡ‡Π°Π΅Π½ΠΈΡ‚Π΅ I/O ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ Π½Π΅ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ ΠΏΡ€Π°Π²Π΅ΡšΠ΅ систСмски ΠΏΠΎΠ²ΠΈΡ†ΠΈ. БистСмот Π·Π° распрСдСлба Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π°Ρ‚Π° сС заснова Π½Π° потсистСмот pmap, кој Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° Π³ΠΈ исфрлитС страницитС Π½Π° гостинската ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° Π²ΠΎ ΠΏΠ°Ρ€Ρ‚ΠΈΡ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° Ρ€Π°Π·ΠΌΠ΅Π½Π° Π²ΠΎ ΡΠ»ΡƒΡ‡Π°Ρ˜ Π½Π° нСдостаток Π½Π° ΠΌΠ΅ΠΌΠΎΡ€ΠΈΡ˜Π° Π²ΠΎ систСмот. NVMM Π΅ Π±Π΅Π· Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ Π±Ρ€Π°Π²ΠΈ ΠΈ Π΄ΠΎΠ±Ρ€ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈ, ΡˆΡ‚ΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° истоврСмСно Π΄Π° користитС Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ˜Π°Π΄Ρ€Π° Π½Π° процСсорот Π·Π° Π΄Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Ρ‚Π΅ со Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ гостински Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ машини.

ΠŸΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΎ Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ засновано Π½Π° QEMU ΠΊΠΎΠ΅ користи NVMM Π·Π° Π΄Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° Ρ…Π°Ρ€Π΄Π²Π΅Ρ€ΠΎΡ‚. Π’ΠΎ Ρ‚Π΅ΠΊ Π΅ Ρ€Π°Π±ΠΎΡ‚Π° Π·Π° Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈΡ‚Π΅ Π·Π°ΠΊΡ€ΠΏΠΈ Π²ΠΎ Π³Π»Π°Π²Π½Π°Ρ‚Π° структура Π½Π° QEMU. ΠšΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° QEMU+NVMM Π΅ вСќС Ρ‚Π°Π° ΠΈΠΌ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ гостински систСми со FreeBSD, OpenBSD, Linux, Windows XP/7/8.1/10 ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈ систСми Π½Π° x86_64 систСми со AMD ΠΈ Intel процСсори (самиот NVMM Π½Π΅ Π΅ Π²Ρ€Π·Π°Π½ Π·Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΠΊΠΎ сС создадС соодвСтниот Π·Π°Π΄Π½ΠΈΠ½Π° , ќС ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° ARM64 систСми ). ΠœΠ΅Ρ“Ρƒ областитС Π½Π° ΠΏΠΎΠ½Π°Ρ‚Π°ΠΌΠΎΡˆΠ½Π° ΠΏΡ€ΠΈΠΌΠ΅Π½Π° Π½Π° NVMM, сС Π·Π°Π±Π΅Π»Π΅ΠΆΡƒΠ²Π° ΠΈ ΠΈΠ·ΠΎΠ»Π°Ρ†ΠΈΡ˜Π° Π½Π° пСсочник Π½Π° ΠΏΠΎΠ΅Π΄ΠΈΠ½Π΅Ρ‡Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ NetBSD Ρ€Π°Π·Π²ΠΈΠ²Π° Π½ΠΎΠ² NVMM Ρ…ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€

Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€