NetBSD ํ๋ก์ ํธ ๊ฐ๋ฐ์
NVMM์๋ ์์คํ
์ปค๋ ์์ค์์ ์คํ๋๊ณ ํ๋์จ์ด ๊ฐ์ํ ๋ฉ์ปค๋์ฆ์ ๋ํ ์ก์ธ์ค๋ฅผ ์กฐ์ ํ๋ ๋๋ผ์ด๋ฒ์ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ์คํ๋๋ Libnvmm ์คํ์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ปค๋ ๊ตฌ์ฑ ์์์ ์ฌ์ฉ์ ๊ณต๊ฐ ๊ฐ์ ์ํธ ์์ฉ์ IOCTL์ ํตํด ์ํ๋ฉ๋๋ค. KVM๊ณผ ๊ฐ์ ํ์ดํผ๋ฐ์ด์ ์ ๊ตฌ๋ณ๋๋ NVMM์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ทธ๋ฌ๋ Libnvmm ์์ฒด์๋ ์๋ฎฌ๋ ์ดํฐ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์์ง ์์ผ๋ฉฐ, NVMM ์ง์์ ๊ธฐ์กด ์๋ฎฌ๋ ์ดํฐ(์: QEMU)์ ํตํฉํ ์ ์๋ API๋ง ์ ๊ณตํฉ๋๋ค. API๋ ๊ฐ์ ๋จธ์ ์์ฑ ๋ฐ ์คํ, ๊ฒ์คํธ ์์คํ ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น, VCPU ํ ๋น๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๋ค๋ฃน๋๋ค. ๋ณด์์ ๊ฐํํ๊ณ ๊ฐ๋ฅํ ๊ณต๊ฒฉ ๋ฒกํฐ๋ฅผ ์ค์ด๊ธฐ ์ํด libnvmm์ ๋ช ์์ ์ผ๋ก ์์ฒญ๋ ๊ธฐ๋ฅ๋ง ์ ๊ณตํฉ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณต์กํ ์ฒ๋ฆฌ๊ธฐ๋ ์๋์ผ๋ก ํธ์ถ๋์ง ์์ผ๋ฉฐ ํผํ ์ ์๋ ๊ฒฝ์ฐ ์ ํ ์ฌ์ฉ๋์ง ์์ ์ ์์ต๋๋ค. NVMM์ ๋๋ฌด ๋ณต์กํด์ง์ง ์๊ณ ๋จ์ํจ์ ์ ์งํ๊ณ ์์ ์ ๋ง์ ์ธก๋ฉด์ ์ต๋ํ ์ ์ดํ ์ ์๋๋ก ๋ ธ๋ ฅํฉ๋๋ค.
NVMM์ ์ปค๋ ์์ค ๋ถ๋ถ์ NetBSD ์ปค๋๊ณผ ๊ธด๋ฐํ๊ฒ ํตํฉ๋์ด ์์ผ๋ฉฐ ๊ฒ์คํธ OS์ ํธ์คํธ ํ๊ฒฝ ๊ฐ์ ์ปจํ ์คํธ ์ ํ ์๋ฅผ ์ค์ฌ ์ฑ๋ฅ์ ํฅ์์ํต๋๋ค. ์ฌ์ฉ์ ๊ณต๊ฐ ์ธก๋ฉด์์ libnvmm์ ์ผ๋ฐ์ ์ธ I/O ์์ ์ ์ง๊ณํ๊ณ ๋ถํ์ํ๊ฒ ์์คํ ํธ์ถ์ ๋ฐฉ์งํ๋ ค๊ณ ์๋ํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์์คํ ์ ์์คํ ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ๊ฒฝ์ฐ ๊ฒ์คํธ ๋ฉ๋ชจ๋ฆฌ ํ์ด์ง๋ฅผ ์ค์ ํํฐ์ ์ผ๋ก ์ ๊ฑฐํ ์ ์๋ pmap ํ์ ์์คํ ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. NVMM์ ์ ์ญ ์ ๊ธ์ด ์๊ณ ํ์ฅ์ฑ์ด ๋ฐ์ด๋๋ฏ๋ก ์๋ก ๋ค๋ฅธ CPU ์ฝ์ด๋ฅผ ๋์์ ์ฌ์ฉํ์ฌ ์๋ก ๋ค๋ฅธ ๊ฒ์คํธ ๊ฐ์ ๋จธ์ ์ ์คํํ ์ ์์ต๋๋ค.
NVMM์ ์ฌ์ฉํ์ฌ ํ๋์จ์ด ๊ฐ์ํ ๋ฉ์ปค๋์ฆ์ ํ์ฑํํ๋ QEMU ๊ธฐ๋ฐ ์๋ฃจ์
์ด ์ค๋น๋์์ต๋๋ค. ์ค๋น๋ ํจ์น๋ฅผ QEMU์ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ ํฌํจ์ํค๋ ์์
์ด ์งํ ์ค์
๋๋ค. QEMU+NVMM ์กฐํฉ์ ์ด๋ฏธ
์ถ์ฒ : opennet.ru