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