๋ฒ ์–ดํ”Œ๋žญํฌ 3.0 ํ•˜์ดํผ๋ฐ”์ด์ € ๋ฆด๋ฆฌ์Šค

Bareflank 3.0 ํ•˜์ดํผ๋ฐ”์ด์ €๊ฐ€ ์ถœ์‹œ๋˜์–ด ์ „๋ฌธ ํ•˜์ดํผ๋ฐ”์ด์ €์˜ ์‹ ์†ํ•œ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํˆดํ‚ท์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Bareflank๋Š” C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ C++ STL์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Bareflank์˜ ๋ชจ๋“ˆ์‹ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ์กด ํ•˜์ดํผ๋ฐ”์ด์ € ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ํ™•์žฅํ•˜๊ณ  ํ•˜๋“œ์›จ์–ด(์˜ˆ: Xen)์—์„œ ์‹คํ–‰๋˜๊ณ  ๊ธฐ์กด ์†Œํ”„ํŠธ์›จ์–ด ํ™˜๊ฒฝ(์˜ˆ: VirtualBox)์—์„œ ์‹คํ–‰๋˜๋Š” ์ž์ฒด ํ•˜์ดํผ๋ฐ”์ด์ € ์˜ต์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ์˜ ์šด์˜ ์ฒด์ œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋Š” LGPL 2.1 ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

Bareflank๋Š” 64๋น„ํŠธ Intel ๋ฐ AMD CPU์—์„œ Linux, Windows ๋ฐ UEFI๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Intel VT-x ๊ธฐ์ˆ ์€ ๊ฐ€์ƒ ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค์˜ ํ•˜๋“œ์›จ์–ด ๋ถ„ํ• ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. macOS ๋ฐ BSD ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์ง€์›์€ ํ–ฅํ›„ ๊ณ„ํš๋˜์–ด ์žˆ์œผ๋ฉฐ ARM64 ํ”Œ๋žซํผ์—์„œ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ํ”„๋กœ์ ํŠธ๋Š” VMM(Virtual Machine Manager)์„ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ ์ž์ฒด ๋“œ๋ผ์ด๋ฒ„, VVM ๋ชจ๋“ˆ์„ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ ELF ๋กœ๋” ๋ฐ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์—์„œ ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ bfm ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. C++11/14 ์‚ฌ์–‘์— ์ •์˜๋œ ์š”์†Œ, ์˜ˆ์™ธ ์Šคํƒ ํ•ด์ œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(unwind), ์ƒ์„ฑ์ž/์†Œ๋ฉธ์ž ์‚ฌ์šฉ ๋ฐ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ธฐ ๋“ฑ๋ก์„ ์ง€์›ํ•˜๋Š” ์ž์ฒด ๋Ÿฐํƒ€์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์žฅ์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํˆดํ‚ท์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

Bareflank๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒŒ์ŠคํŠธ ์‹œ์Šคํ…œ์˜ ์‹œ์ž‘์„ ์ง€์›ํ•˜๊ณ  Linux ๋ฐ Unikernel๊ณผ ํ•จ๊ป˜ ๊ฒฝ๋Ÿ‰ ๊ฐ€์ƒ ๋จธ์‹ ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ˆ˜ ์„œ๋น„์Šค ๋˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” Boxy ๊ฐ€์ƒํ™” ์‹œ์Šคํ…œ์˜ ๊ฐœ๋ฐœ์ด ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๊ฒฉ๋ฆฌ๋œ ์„œ๋น„์Šค์˜ ํ˜•ํƒœ๋กœ ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ(ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ์ด ๋ณ„๋„์˜ ๊ฐ€์ƒ ๋จธ์‹ ์— ๊ฒฉ๋ฆฌ๋จ)์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ณ  ์ผ๋ฐ˜ ์›น ์„œ๋น„์Šค์™€ ์•ˆ์ •์„ฑ ๋ฐ ๋ณด์•ˆ์— ๋Œ€ํ•œ ํŠน๋ณ„ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋ชจ๋‘ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Bareflank๋Š” ๋˜ํ•œ KVM API๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๋ฏธ์…˜ ํฌ๋ฆฌํ‹ฐ์ปฌ ์‹œ์Šคํ…œ ๊ตฌ์ถ•์— ์ ํ•ฉํ•œ ์ตœ์†Œํ•œ์˜ ๊ฐ€์ƒ ๋จธ์‹ (๋‹จ์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ€์ƒ ๋จธ์‹ )์„ ์‹คํ–‰ํ•˜๋„๋ก ์„ค๊ณ„๋œ MicroV ํ•˜์ดํผ๋ฐ”์ด์ €์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

Bareflank 3.0์˜ ์ฃผ์š” ํ˜์‹  ์‚ฌํ•ญ:

  • ๋งˆ์ดํฌ๋กœ์ปค๋„ ๊ฐœ๋…์˜ ์‚ฌ์šฉ์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ํ•˜์ดํผ๋ฐ”์ด์ €๋Š” ๋ชจ๋†€๋ฆฌ์‹ ๊ตฌ์กฐ๋กœ ๊ธฐ๋Šฅ ํ™•์žฅ์„ ์œ„ํ•ด ์ฝœ๋ฐฑ ํ˜ธ์ถœ ๋“ฑ๋ก์„ ์œ„ํ•œ ํŠน์ˆ˜ API๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ๊ณ , C++ ์–ธ์–ด์™€ ๋‚ด๋ถ€ ๊ตฌ์กฐ์— ์–ฝ๋งค์—ฌ ํ™•์žฅ ๊ฐœ๋ฐœ์ด ์–ด๋ ค์› ๋‹ค. . ์ƒˆ๋กœ์šด ๋งˆ์ดํฌ๋กœ์ปค๋„ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋Š” ํ•˜์ดํผ๋ฐ”์ด์ €๋ฅผ ์ œ๋กœ ๋ณดํ˜ธ ๋ง์—์„œ ์‹คํ–‰๋˜๋Š” ์ปค๋„ ๊ตฌ์„ฑ ์š”์†Œ์™€ ์„ธ ๋ฒˆ์งธ ๋ง(์‚ฌ์šฉ์ž ๊ณต๊ฐ„)์—์„œ ์‹คํ–‰๋˜๋Š” ํ™•์žฅ์œผ๋กœ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ถ€๋ถ„ ๋ชจ๋‘ VMX ๋ฃจํŠธ ๋ชจ๋“œ์—์„œ ์‹คํ–‰๋˜๊ณ  ํ˜ธ์ŠคํŠธ ํ™˜๊ฒฝ์„ ํฌํ•จํ•œ ๋‹ค๋ฅธ ๋ชจ๋“  ๋ถ€๋ถ„์€ ๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ VMX ๋ชจ๋“œ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ํ™•์žฅ์€ VMM(Virtual Machine Manager) ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์ด์ „ ๋ฒ„์ „๊ณผ ํ˜ธํ™˜๋˜๋Š” ์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ํ†ตํ•ด ํ•˜์ดํผ๋ฐ”์ด์ € ์ปค๋„๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค. ํ™•์žฅ์€ Rust ์–ธ์–ด ์‚ฌ์šฉ์„ ํฌํ•จํ•˜์—ฌ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ libc++ ๋ฐ newlib๋ฅผ ๋Œ€์ฒดํ•œ Rust ๋ฐ C++ ์ง€์›๊ณผ ํ•จ๊ป˜ ์ž์ฒด BSL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์™ธ๋ถ€ ์˜์กด์„ฑ์„ ์ œ๊ฑฐํ•จ์œผ๋กœ์จ Bareflank๋Š” ๋„ค์ดํ‹ฐ๋ธŒ Windows ์ปดํŒŒ์ผ ์ง€์›์„ ๊ตฌํ˜„ํ•˜์—ฌ ์ด ํ”Œ๋žซํผ์—์„œ ๊ฐœ๋ฐœ์„ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • AMD ํ”„๋กœ์„ธ์„œ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Bareflank์˜ ๊ฐœ๋ฐœ์€ ํ˜„์žฌ AMD CPU๊ฐ€ ์žฅ์ฐฉ๋œ ์‹œ์Šคํ…œ์—์„œ ์ˆ˜ํ–‰๋˜๊ณ  ๊ทธ ํ›„์—์•ผ Intel CPU๋กœ ํฌํŒ…๋ฉ๋‹ˆ๋‹ค.
  • ARMv8 ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์ง€์›์ด ๋ถ€ํŠธ๋กœ๋”์— ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ, ์ด์— ๋Œ€ํ•œ ํ•˜์ดํผ๋ฐ”์ด์ € ์ ์‘์€ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค ์ค‘ ํ•˜๋‚˜์—์„œ ์™„๋ฃŒ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.
  • AUTOSAR ๋ฐ MISRA ์กฐ์ง์—์„œ ๊ณต์‹ํ™”ํ•œ ์ค‘์š” ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ค€์ˆ˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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