NetBSD ํ๋ก์ ํธ ๊ฐ๋ฐ์ ์คํ์ ์ธ NetBSD-current ๋ธ๋์น์ ์ด๋ฏธ ํฌํจ๋์ด ์์ผ๋ฉฐ NetBSD 9์ ์์ ๋ฆด๋ฆฌ์ค์์ ์ ๊ณต๋ ์๋ก์ด ํ์ดํผ๋ฐ์ด์ ๋ฐ ๊ด๋ จ ๊ฐ์ํ ์คํ์ ์์ฑ์ ๋ํด ์ค๋ช ํฉ๋๋ค. NVMM์ ํ์ฌ x86_64 ์ํคํ ์ฒ ์ง์์ผ๋ก ์ ํ๋์ด ์์ผ๋ฉฐ ๋ค์์ ์ํ ๋ ๊ฐ์ ๋ฐฑ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ๋์จ์ด ๊ฐ์ํ ๋ฉ์ปค๋์ฆ ํ์ฑํ: AMD๋ฅผ ์ง์ํ๋ x86-SVM ๋ฐ Intel CPU์ฉ x86-VMX CPU ๊ฐ์ํ ํ์ฅ. ํ์ฌ ํํ์์๋ ํ๋์ ํธ์คํธ์์ ์ต๋ 128๊ฐ์ ๊ฐ์ ๋จธ์ ์ ์คํํ ์ ์์ผ๋ฉฐ, ๊ฐ ๊ฐ์ ๋จธ์ ์๋ ์ต๋ 256๊ฐ์ VCPU(๊ฐ์ ํ๋ก์ธ์ ์ฝ์ด) ๋ฐ 128GB RAM์ด ํ ๋น๋ ์ ์์ต๋๋ค.
NVMM์๋ ์์คํ ์ปค๋ ์์ค์์ ์คํ๋๊ณ ํ๋์จ์ด ๊ฐ์ํ ๋ฉ์ปค๋์ฆ์ ๋ํ ์ก์ธ์ค๋ฅผ ์กฐ์ ํ๋ ๋๋ผ์ด๋ฒ์ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ์คํ๋๋ Libnvmm ์คํ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ปค๋ ๊ตฌ์ฑ ์์์ ์ฌ์ฉ์ ๊ณต๊ฐ ๊ฐ์ ์ํธ ์์ฉ์ IOCTL์ ํตํด ์ํ๋ฉ๋๋ค. KVM๊ณผ ๊ฐ์ ํ์ดํผ๋ฐ์ด์ ์ ๊ตฌ๋ณ๋๋ NVMM์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. Bhyve๋ ์ปค๋ ์์ค์์ ํ๋์จ์ด ๊ฐ์ํ ๋ฉ์ปค๋์ฆ์ ํ์ํ ์ต์ํ์ ๋ฐ์ธ๋ฉ ์ธํธ๋ง ์ํ๋๊ณ ๋ชจ๋ ํ๋์จ์ด ์๋ฎฌ๋ ์ด์ ์ฝ๋๋ ์ปค๋์์ ์ฌ์ฉ์ ๊ณต๊ฐ์ผ๋ก ์ด๋๋๋ค๋ ๊ฒ์ ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์์น๋ ๊ถํ์ผ๋ก ์คํ๋๋ ์ฝ๋์ ์์ ์ค์ด๊ณ ํ์ดํผ๋ฐ์ด์ ์ ์ทจ์ฝ์ ์ ๋ํ ๊ณต๊ฒฉ์ด ๋ฐ์ํ ๊ฒฝ์ฐ ์ ์ฒด ์์คํ ์ด ์์๋ ์ํ์ ์ค์ผ ์ ์์ต๋๋ค. ๋ํ ํ๋ก์ ํธ์ ๋๋ฒ๊น ๋ฐ ํผ์ง ํ ์คํธ๊ฐ ๋์ ๋๊ฒ ๋จ์ํ๋์์ต๋๋ค.
๊ทธ๋ฌ๋ Libnvmm ์์ฒด์๋ ์๋ฎฌ๋ ์ดํฐ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์์ง ์์ผ๋ฉฐ, NVMM ์ง์์ ๊ธฐ์กด ์๋ฎฌ๋ ์ดํฐ(์: QEMU)์ ํตํฉํ ์ ์๋ API๋ง ์ ๊ณตํฉ๋๋ค. API๋ ๊ฐ์ ๋จธ์ ์์ฑ ๋ฐ ์คํ, ๊ฒ์คํธ ์์คํ ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น, VCPU ํ ๋น๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๋ค๋ฃน๋๋ค. ๋ณด์์ ๊ฐํํ๊ณ ๊ฐ๋ฅํ ๊ณต๊ฒฉ ๋ฒกํฐ๋ฅผ ์ค์ด๊ธฐ ์ํด libnvmm์ ๋ช ์์ ์ผ๋ก ์์ฒญ๋ ๊ธฐ๋ฅ๋ง ์ ๊ณตํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณต์กํ ์ฒ๋ฆฌ๊ธฐ๋ ์๋์ผ๋ก ํธ์ถ๋์ง ์์ผ๋ฉฐ ํผํ ์ ์๋ ๊ฒฝ์ฐ ์ ํ ์ฌ์ฉ๋์ง ์์ ์ ์์ต๋๋ค. NVMM์ ๋๋ฌด ๋ณต์กํด์ง์ง ์๊ณ ๋จ์ํจ์ ์ ์งํ๊ณ ์์ ์ ๋ง์ ์ธก๋ฉด์ ์ต๋ํ ์ ์ดํ ์ ์๋๋ก ๋ ธ๋ ฅํฉ๋๋ค.
NVMM์ ์ปค๋ ์์ค ๋ถ๋ถ์ NetBSD ์ปค๋๊ณผ ๊ธด๋ฐํ๊ฒ ํตํฉ๋์ด ์์ผ๋ฉฐ ๊ฒ์คํธ OS์ ํธ์คํธ ํ๊ฒฝ ๊ฐ์ ์ปจํ ์คํธ ์ ํ ์๋ฅผ ์ค์ฌ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค. ์ฌ์ฉ์ ๊ณต๊ฐ ์ธก๋ฉด์์ libnvmm์ ์ผ๋ฐ์ ์ธ I/O ์์ ์ ์ง๊ณํ๊ณ ๋ถํ์ํ๊ฒ ์์คํ ํธ์ถ์ ๋ฐฉ์งํ๋ ค๊ณ ์๋ํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์์คํ ์ ์์คํ ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ๊ฒฝ์ฐ ๊ฒ์คํธ ๋ฉ๋ชจ๋ฆฌ ํ์ด์ง๋ฅผ ์ค์ ํํฐ์ ์ผ๋ก ์ ๊ฑฐํ ์ ์๋ pmap ํ์ ์์คํ ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. NVMM์ ์ ์ญ ์ ๊ธ์ด ์๊ณ ํ์ฅ์ฑ์ด ๋ฐ์ด๋๋ฏ๋ก ์๋ก ๋ค๋ฅธ CPU ์ฝ์ด๋ฅผ ๋์์ ์ฌ์ฉํ์ฌ ์๋ก ๋ค๋ฅธ ๊ฒ์คํธ ๊ฐ์ ๋จธ์ ์ ์คํํ ์ ์์ต๋๋ค.
NVMM์ ์ฌ์ฉํ์ฌ ํ๋์จ์ด ๊ฐ์ํ ๋ฉ์ปค๋์ฆ์ ํ์ฑํํ๋ QEMU ๊ธฐ๋ฐ ์๋ฃจ์ ์ด ์ค๋น๋์์ต๋๋ค. ์ค๋น๋ ํจ์น๋ฅผ QEMU์ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ ํฌํจ์ํค๋ ์์ ์ด ์งํ ์ค์ ๋๋ค. QEMU+NVMM ์กฐํฉ์ ์ด๋ฏธ FreeBSD, OpenBSD์์ ๊ฒ์คํธ ์์คํ ์ ์ฑ๊ณต์ ์ผ๋ก ์คํํ ์ ์์ต๋๋ค. Linux, Windows XP/7/8.1/10 ๋ฐ AMD ๋ฐ Intel ํ๋ก์ธ์๊ฐ ํ์ฌ๋ x86_64 ์์คํ ์ ๊ธฐํ ์ด์ ์ฒด์ ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค(NVMM ์์ฒด๋ ํน์ ์ํคํ ์ฒ์ ์ข ์๋์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ์ ํ ๋ฐฑ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ARM64 ์์คํ ์์๋ ์คํ๋ ์ ์์ต๋๋ค). NVMM์ ๊ฐ๋ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋๋ฐ์ฑํ๋ ๋ฐ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru
