Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° NetBSD ΠΏΡΠΎΠ΅ΠΊΡΠΈ
NVMM Π²ΠΊΠ»ΡΡΠ²Π° Π΄ΡΠ°ΠΉΠ²Π΅Ρ, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎ ΡΠ΄ΡΠΎ ββΠΈ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠ° Π΄ΠΎΡΡΡΠΏΠ° Π΄ΠΎ Ρ
Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΈ ΡΡΠ΅ΠΊ Libnvmm, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Π² ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ. ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΡΡΠ΅Π· IOCTL. Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° Π½Π° NVMM, ΠΊΠΎΡΡΠΎ Π³ΠΎ ΠΎΡΠ»ΠΈΡΠ°Π²Π° ΠΎΡ Ρ
ΠΈΠΏΠ΅ΡΠ²Π°ΠΉΠ·ΠΎΡΠΈ ΠΊΠ°ΡΠΎ KVM, Π΅
Π‘Π°ΠΌΠΈΡΡ Libnvmm ΠΎΠ±Π°ΡΠ΅ Π½Π΅ ΡΡΠ΄ΡΡΠΆΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° Π΅ΠΌΡΠ»Π°ΡΠΎΡ, Π° ΡΠ°ΠΌΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ API, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° NVMM Π² ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ Π΅ΠΌΡΠ»Π°ΡΠΎΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ QEMU. API ΠΏΠΎΠΊΡΠΈΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ°ΡΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΊΡΠΌ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° Π³ΠΎΡΡΠΈ ΠΈ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° VCPU. ΠΠ° Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° ΠΈ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈΡΠ΅ Π²Π΅ΠΊΡΠΎΡΠΈ Π½Π° Π°ΡΠ°ΠΊΠ°, libnvmm ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΠ°ΠΌΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΈΠ·ΡΠΈΡΠ½ΠΎ ΠΏΠΎΠΈΡΠΊΠ°Π½ΠΈ β ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΈΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ Π½Π΅ ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΈ ΠΌΠΎΠΆΠ΅ ΠΈΠ·ΠΎΠ±ΡΠΎ Π΄Π° Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ, Π°ΠΊΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΈΠ·Π±Π΅Π³Π½Π°ΡΠΈ. NVMM ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π½Π΅ΡΠ°ΡΠ° ΠΏΡΠΎΡΡΠΈ, Π±Π΅Π· Π΄Π° ΡΡΠ°Π²Π° ΡΠ²ΡΡΠ΄Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ Π°ΡΠΏΠ΅ΠΊΡΠΈ ΠΎΡ Π²Π°ΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ°.
Π§Π°ΡΡΡΠ° Π½Π° Π½ΠΈΠ²ΠΎ ΡΠ΄ΡΠΎ ββΠ½Π° NVMM Π΅ Π΄ΠΎΡΡΠ° ΡΡΡΠ½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π° Ρ ΡΠ΄ΡΠΎΡΠΎ Π½Π° NetBSD ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ ΡΡΠ΅Π· Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° Π±ΡΠΎΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΈΡΠ΅ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π³ΠΎΡΡ OS ΠΈ Ρ ΠΎΡΡ ΡΡΠ΅Π΄Π°ΡΠ°. ΠΡ ΡΡΡΠ°Π½Π° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, libnvmm ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° Π°Π³ΡΠ΅Π³ΠΈΡΠ° ΠΎΠ±ΡΠΈ I/O ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ Π΄Π° ΠΈΠ·Π±ΡΠ³Π²Π° Π½Π΅Π½ΡΠΆΠ½ΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ. Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° pmap, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·Π³ΠΎΠ½Π²Π°ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅ Ρ ΠΏΠ°ΠΌΠ΅Ρ Π·Π° Π³ΠΎΡΡΠΈ Π² ΡΡΠ°ΠΏ Π΄ΡΠ»Π° Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° Π½Π΅Π΄ΠΎΡΡΠΈΠ³ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. NVMM Π΅ Π±Π΅Π· Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ΅ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ° Π΄ΠΎΠ±ΡΠ΅, ΠΊΠΎΠ΅ΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ CPU ΡΠ΄ΡΠ°, Π·Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ Π·Π° Π³ΠΎΡΡΠΈ.
ΠΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΎ Π΅ Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Π½Π° QEMU ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° NVMM Π·Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° Ρ
Π°ΡΠ΄ΡΠ΅ΡΠ½Π° Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. Π Π°Π±ΠΎΡΠΈ ΡΠ΅ ΠΏΠΎ Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠΎΠ²Π΅ Π² ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π½Π° QEMU. ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΡΠ° QEMU+NVMM Π΅ Π²Π΅ΡΠ΅
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru