NetBSD ํ”„๋กœ์ ํŠธ๋Š” ์ƒˆ๋กœ์šด NVMM ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค.

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์˜ ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. HAXM Bhyve๋Š” ์ปค๋„ ์ˆ˜์ค€์—์„œ ํ•˜๋“œ์›จ์–ด ๊ฐ€์ƒํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ๋ฐ”์ธ๋”ฉ ์„ธํŠธ๋งŒ ์ˆ˜ํ–‰๋˜๊ณ  ๋ชจ๋“  ํ•˜๋“œ์›จ์–ด ์—๋ฎฌ๋ ˆ์ด์…˜ ์ฝ”๋“œ๋Š” ์ปค๋„์—์„œ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์œผ๋กœ ์ด๋™๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์ƒ์Šน๋œ ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ์˜ ์–‘์„ ์ค„์ด๊ณ  ํ•˜์ดํผ๋ฐ”์ด์ €์˜ ์ทจ์•ฝ์ ์— ๋Œ€ํ•œ ๊ณต๊ฒฉ์ด ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ์ „์ฒด ์‹œ์Šคํ…œ์ด ์†์ƒ๋  ์œ„ํ—˜์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ”„๋กœ์ ํŠธ์˜ ๋””๋ฒ„๊น… ๋ฐ ํผ์ง• ํ…Œ์ŠคํŠธ๊ฐ€ ๋ˆˆ์— ๋„๊ฒŒ ๋‹จ์ˆœํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ Libnvmm ์ž์ฒด์—๋Š” ์—๋ฎฌ๋ ˆ์ดํ„ฐ ๊ธฐ๋Šฅ์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉฐ, NVMM ์ง€์›์„ ๊ธฐ์กด ์—๋ฎฌ๋ ˆ์ดํ„ฐ(์˜ˆ: QEMU)์— ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” API๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. API๋Š” ๊ฐ€์ƒ ๋จธ์‹  ์ƒ์„ฑ ๋ฐ ์‹คํ–‰, ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์— ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น, VCPU ํ• ๋‹น๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜๊ณ  ๊ฐ€๋Šฅํ•œ ๊ณต๊ฒฉ ๋ฒกํ„ฐ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด libnvmm์€ ๋ช…์‹œ์ ์œผ๋กœ ์š”์ฒญ๋œ ๊ธฐ๋Šฅ๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณต์žกํ•œ ์ฒ˜๋ฆฌ๊ธฐ๋Š” ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋˜์ง€ ์•Š์œผ๋ฉฐ ํ”ผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์ „ํ˜€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. NVMM์€ ๋„ˆ๋ฌด ๋ณต์žกํ•ด์ง€์ง€ ์•Š๊ณ  ๋‹จ์ˆœํ•จ์„ ์œ ์ง€ํ•˜๊ณ  ์ž‘์—…์˜ ๋งŽ์€ ์ธก๋ฉด์„ ์ตœ๋Œ€ํ•œ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

NetBSD ํ”„๋กœ์ ํŠธ๋Š” ์ƒˆ๋กœ์šด NVMM ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค.

NVMM์˜ ์ปค๋„ ์ˆ˜์ค€ ๋ถ€๋ถ„์€ NetBSD ์ปค๋„๊ณผ ๊ธด๋ฐ€ํ•˜๊ฒŒ ํ†ตํ•ฉ๋˜์–ด ์žˆ์œผ๋ฉฐ ๊ฒŒ์ŠคํŠธ OS์™€ ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ ๊ฐ„์˜ ์ปจํ…์ŠคํŠธ ์ „ํ™˜ ์ˆ˜๋ฅผ ์ค„์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ์ธก๋ฉด์—์„œ libnvmm์€ ์ผ๋ฐ˜์ ์ธ I/O ์ž‘์—…์„ ์ง‘๊ณ„ํ•˜๊ณ  ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ๋ฐฉ์ง€ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์‹œ์Šคํ…œ์€ ์‹œ์Šคํ…œ์— ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ ๊ฒŒ์ŠคํŠธ ๋ฉ”๋ชจ๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ์Šค์™‘ ํŒŒํ‹ฐ์…˜์œผ๋กœ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” pmap ํ•˜์œ„ ์‹œ์Šคํ…œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. NVMM์€ ์ „์—ญ ์ž ๊ธˆ์ด ์—†๊ณ  ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚˜๋ฏ€๋กœ ์„œ๋กœ ๋‹ค๋ฅธ CPU ์ฝ”์–ด๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒŒ์ŠคํŠธ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

NVMM์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋“œ์›จ์–ด ๊ฐ€์ƒํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ํ™œ์„ฑํ™”ํ•˜๋Š” QEMU ๊ธฐ๋ฐ˜ ์†”๋ฃจ์…˜์ด ์ค€๋น„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ค€๋น„๋œ ํŒจ์น˜๋ฅผ QEMU์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ์— ํฌํ•จ์‹œํ‚ค๋Š” ์ž‘์—…์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. QEMU+NVMM ์กฐํ•ฉ์€ ์ด๋ฏธ ๊ทธ๊ฒƒ์€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค AMD ๋ฐ Intel ํ”„๋กœ์„ธ์„œ๊ฐ€ ํƒ‘์žฌ๋œ x7_8.1 ์‹œ์Šคํ…œ์—์„œ FreeBSD, OpenBSD, Linux, Windows XP/10/86/64 ๋ฐ ๊ธฐํƒ€ OS๊ฐ€ ํฌํ•จ๋œ ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์„ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ ์ ˆํ•œ ๋ฐฑ์—”๋“œ๊ฐ€ ์ƒ์„ฑ๋œ ๊ฒฝ์šฐ NVMM ์ž์ฒด๋Š” ํŠน์ • ์•„ํ‚คํ…์ฒ˜์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. , ARM64 ์‹œ์Šคํ…œ์—์„œ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). NVMM์˜ ์ถ”๊ฐ€ ์ ์šฉ ์˜์—ญ ์ค‘์—๋Š” ๊ฐœ๋ณ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒŒ๋“œ๋ฐ•์Šค ๊ฒฉ๋ฆฌ๋„ ์ฃผ๋ชฉ๋ฉ๋‹ˆ๋‹ค.

NetBSD ํ”„๋กœ์ ํŠธ๋Š” ์ƒˆ๋กœ์šด NVMM ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€