ํ•˜์ดํผ๋ฐ”์ด์ € ์œ„์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋žซํผ์ธ MirageOS 3.6 ์ถœ์‹œ

์ผ์–ด๋‚ฌ๋‹ค ํ”„๋กœ์ ํŠธ ๋ฆด๋ฆฌ์Šค ๋ฏธ๋ผ์ง€OS 3.6๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹จ์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์šด์˜ ์ฒด์ œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์šด์˜ ์ฒด์ œ, ๋ณ„๋„์˜ OS ์ปค๋„ ๋ฐ ๋ ˆ์ด์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ๋…๋ฆฝํ˜• "์œ ๋‹ˆ์ปค๋„"๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. OCaml ์–ธ์–ด๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ ๋ฐฐํฌ์ž ๋ฌด๋ฃŒ ISC ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ.

์šด์˜ ์ฒด์ œ์— ๋‚ด์žฌ๋œ ๋ชจ๋“  ํ•˜์œ„ ์ˆ˜์ค€ ๊ธฐ๋Šฅ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์—ฐ๊ฒฐ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜•ํƒœ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋ชจ๋“  OS์—์„œ ๊ฐœ๋ฐœ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ทธ ํ›„์—๋Š” ํŠน์ˆ˜ ์ปค๋„๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค(๊ฐœ๋… ์œ ๋‹ˆ ์ปค๋„)๋Š” Xen, KVM, BHyve ๋ฐ VMM(OpenBSD) ํ•˜์ดํผ๋ฐ”์ด์ €, ๋ชจ๋ฐ”์ผ ํ”Œ๋žซํผ, POSIX ํ˜ธํ™˜ ํ™˜๊ฒฝ ๋˜๋Š” Amazon Elastic Compute Cloud ๋ฐ Google Compute Engine ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์˜ ํ”„๋กœ์„ธ์Šค๋กœ ์ง์ ‘ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์„ฑ๋œ ํ™˜๊ฒฝ์€ ๋ถˆํ•„์š”ํ•œ ๊ฒƒ์„ ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋“œ๋ผ์ด๋ฒ„๋‚˜ ์‹œ์Šคํ…œ ๊ณ„์ธต ์—†์ด ํ•˜์ดํผ๋ฐ”์ด์ €์™€ ์ง์ ‘ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋ฏ€๋กœ ๊ฐ„์ ‘๋น„๋ฅผ ํฌ๊ฒŒ ์ค„์ด๊ณ  ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. MirageOS ์ž‘์—…์€ ์„ธ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„์–ด์ง‘๋‹ˆ๋‹ค. ์ฆ‰, ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ์„ฑ์„ ์‹๋ณ„ํ•˜์—ฌ ๊ตฌ์„ฑ์„ ์ค€๋น„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. OPAM ํŒจํ‚ค์ง€, ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ํ™˜๊ฒฝ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. Xen ์œ„์—์„œ ์‹คํ–‰๋˜๋Š” ๋Ÿฐํƒ€์ž„์€ ์ œ๊ฑฐ๋œ ์ปค๋„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ๋‹ˆ OS, ๊ธฐํƒ€ ํ•˜์ดํผ๋ฐ”์ด์ € ๋ฐ ์ปค๋„ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์šฉ Solo5.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ณ ๊ธ‰ OCaml ์–ธ์–ด๋กœ ์ƒ์„ฑ๋˜์—ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ๊ฒฐ๊ณผ ํ™˜๊ฒฝ์€ ์ƒ๋‹นํžˆ ์šฐ์ˆ˜ํ•œ ์„ฑ๋Šฅ๊ณผ ์ตœ์†Œ ํฌ๊ธฐ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค(์˜ˆ: DNS ์„œ๋ฒ„๋Š” 200KB๋งŒ ์ฐจ์ง€ํ•จ). ํ”„๋กœ๊ทธ๋žจ์„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ƒˆ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๊ณ  ์‹œ์ž‘ํ•˜๋ฉด ์ถฉ๋ถ„ํ•˜๋ฏ€๋กœ ํ™˜๊ฒฝ ์œ ์ง€ ๊ด€๋ฆฌ๋„ ๋‹จ์ˆœํ™”๋ฉ๋‹ˆ๋‹ค. ์ง€์›๋จ ์ˆ˜์‹ญ ๊ฐœ์˜ ๋„์„œ๊ด€ OCaml ์–ธ์–ด๋กœ ๋„คํŠธ์›Œํฌ ์ž‘์—…(DNS, SSH, OpenFlow, HTTP, XMPP ๋“ฑ)์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์Šคํ† ๋ฆฌ์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ๋ณ‘๋ ฌ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ๋ฆด๋ฆฌ์Šค์˜ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ํˆดํ‚ท์—์„œ ์ œ๊ณต๋˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ง€์› ์ œ๊ณต๊ณผ ๊ด€๋ จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์†”๋กœ5 0.6.0 (์œ ๋‹ˆ์ปค๋„ ์‹คํ–‰์„ ์œ„ํ•œ ์ƒŒ๋“œ๋ฐ•์Šค ํ™˜๊ฒฝ):

  • ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ Unikernel MirageOS๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. spt ('์ƒŒ๋“œ๋ฐ•์Šค ํ”„๋กœ์„ธ์Šค ์ž…์ฐฐ') ํˆดํ‚ท์—์„œ ์ œ๊ณต Solo5. spt ๋ฐฑ์—”๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ MirageOS ์ปค๋„์€ seccomp-BPF๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ตœ์†Œํ•œ์˜ ๊ฒฉ๋ฆฌ๊ฐ€ ์ ์šฉ๋˜๋Š” Linux ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ์ง€์› ๊ตฌํ˜„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งค๋‹ˆํŽ˜์ŠคํŠธ Solo5 ํ”„๋กœ์ ํŠธ์—์„œ hvt, spt ๋ฐ muen ๋ฐฑ์—”๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ๋‹จ์ผ ์ปค๋„์— ์—ฐ๊ฒฐ๋œ ์—ฌ๋Ÿฌ ๋„คํŠธ์›Œํฌ ์–ด๋Œ‘ํ„ฐ ๋ฐ ์ €์žฅ ์žฅ์น˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(genode ๋ฐ virtio ๋ฐฑ์—”๋“œ์— ๋Œ€ํ•œ ์‚ฌ์šฉ์€ ํ˜„์žฌ ํ•˜๋‚˜์˜ ์žฅ์น˜๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค).
  • Solo5(hvt, spt) ๊ธฐ๋ฐ˜ ๋ฐฑ์—”๋“œ ๋ณดํ˜ธ๊ฐ€ ๊ฐ•ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด SSP(Stack Smashing Protection) ๋ชจ๋“œ๋กœ ๊ตฌ์ถ•์ด ์ œ๊ณต๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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