์ง๋ฉ์ค ํ์ฌ ๋ฌด๋ฃ ํ์ดํผ๋ฐ์ด์ ๋ฆด๋ฆฌ์ค . ํ์ดํผ๋ฐ์ด์ ๋ VMX+EPT ๋๋ SVM+NPT(AMD-V) ํ์ฅ์ด ์๋ x86_64 ์์คํ ๋ฟ๋ง ์๋๋ผ ๊ฐ์ํ ํ์ฅ์ด ์๋ ARMv7 ๋ฐ ARMv8/ARM64 ํ๋ก์ธ์๋ ์ง์ํฉ๋๋ค. ๊ฐ๋ผ์ ธ ะณะตะฝะตัะฐัะพั ะพะฑัะฐะทะพะฒ ะดะปั ะณะธะฟะตัะฒะธะทะพัะฐ Jailhouse, ัะพัะผะธััะตะผัั ะฝะฐ ะพัะฝะพะฒะต ะฟะฐะบะตัะพะฒ Debian ะดะปั ะฟะพะดะดะตัะถะธะฒะฐะตะผัั ััััะพะนััะฒ. ะะพะด ะฟัะพะตะบัะฐ GPLv2์ ๋ฐ๋ผ ๋ผ์ด์ผ์ค๊ฐ ๋ถ์ฌ๋์์ต๋๋ค.
ะะธะฟะตัะฒะธะทะพั ัะตะฐะปะธะทะพะฒะฐะฝ ะฒ ะฒะธะดะต ะผะพะดัะปั ะดะปั ัะดัะฐ Linux ะธ ะพะฑะตัะฟะตัะธะฒะฐะตั ะฒะธัััะฐะปะธะทะฐัะธั ะฝะฐ ััะพะฒะฝะต ัะดัะฐ. ะะพะผะฟะพะฝะตะฝัั ะดะปั ะณะพััะตะฒัั ัะธััะตะผ ัะถะต ะฒะบะปััะตะฝั ะฒ ัะพััะฐะฒ ะพัะฝะพะฒะฝะพะณะพ ัะดัะฐ Linux. ะะปั ัะฟัะฐะฒะปะตะฝะธั ะธะทะพะปััะธะตะน ะธัะฟะพะปัะทััััั ะฟัะตะดะพััะฐะฒะปัะตะผัะต ัะพะฒัะตะผะตะฝะฝัะผะธ CPU ะฐะฟะฟะฐัะฐัะฝัะต ะผะตั ะฐะฝะธะทะผั ะฒะธัััะฐะปะธะทะฐัะธะธ. ะัะปะธัะธัะตะปัะฝัะผะธ ะพัะพะฑะตะฝะฝะพัััะผะธ Jailhouse ัะฒะปััััั ะปะตะณะบะพะฒะตัะฝะฐั ัะตะฐะปะธะทะฐัะธั ะธ ะพัะธะตะฝัะฐัะธั ะฝะฐ ะฟัะธะฒัะทะบั ะฒะธัััะฐะปัะฝัั ะผะฐัะธะฝ ะบ ัะธะบัะธัะพะฒะฐะฝะฝะพะผั CPU, ะพะฑะปะฐััะธ ะะะฃ ะธ ะฐะฟะฟะฐัะฐัะฝัะผ ััััะพะนััะฒะฐะผ. ะขะฐะบะพะน ะฟะพะดั ะพะด ะฟะพะทะฒะพะปัะตั ะฝะฐ ะพะดะฝะพะผ ัะธะทะธัะตัะบะพะผ ะผะฝะพะณะพะฟัะพัะตััะพัะฝะพะผ ัะตัะฒะตัะต ะพะฑะตัะฟะตัะธัั ัะฐะฑะพัั ะฝะตัะบะพะปัะบะธั ะฝะตะทะฐะฒะธัะธะผัั ะฒะธัััะฐะปัะฝัั ะพะบััะถะตะฝะธะน, ะบะฐะถะดะพะต ะธะท ะบะพัะพััั ะทะฐะบัะตะฟะปะตะฝะพ ะทะฐ ัะฒะพะธะผ ะฟัะพัะตััะพัะฝัะผ ัะดัะพะผ.
CPU์ ๊ธด๋ฐํ๊ฒ ์ฐ๊ฒฐ๋๋ฉด ๋ณต์กํ ๋ฆฌ์์ค ํ ๋น ์ค์ผ์ค๋ฌ๋ฅผ ์คํํ ํ์๊ฐ ์์ผ๋ฏ๋ก ํ์ดํผ๋ฐ์ด์ ์ ์ค๋ฒํค๋๊ฐ ์ต์ํ๋๊ณ ๊ตฌํ์ด ํฌ๊ฒ ๋จ์ํ๋ฉ๋๋ค. ๋ณ๋์ CPU ์ฝ์ด๋ฅผ ํ ๋นํ๋ฉด ์ด CPU์์ ๋ค๋ฅธ ์์ ์ด ์คํ๋์ง ์์ต๋๋ค. . ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฅ์ ์ ๋ฆฌ์์ค์ ๋ํ ์ก์ธ์ค๋ฅผ ๋ณด์ฅํ๊ณ ์ฑ๋ฅ์ ์์ธกํ ์ ์๋ค๋ ์ ์ ๋๋ค. ๋ฐ๋ผ์ Jailhouse๋ ์ค์๊ฐ์ผ๋ก ์ํ๋๋ ์์ ์ ์์ฑํ๋ ๋ฐ ์ ํฉํ ์๋ฃจ์ ์ ๋๋ค. ๋จ์ ์ CPU ์ฝ์ด ์์ ๋ฐ๋ผ ํ์ฅ์ฑ์ด ์ ํ๋๋ค๋ ๊ฒ์ ๋๋ค.
๊ฐ์ฅ ์ฉ์ด์์๋ ๊ฐ์ ํ๊ฒฝ์ "์นด๋ฉ๋ผ"(๊ต๋์ ๋งฅ๋ฝ์์๋ ์ )๋ผ๊ณ ํฉ๋๋ค. ์นด๋ฉ๋ผ ๋ด๋ถ์ ์์คํ ์ ์ฑ๋ฅ์ ๋ณด์ฌ์ฃผ๋ ๋จ์ผ ํ๋ก์ธ์ ์๋ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ์ ์ฉ CPU ์ฝ์ด์ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์นด๋ฉ๋ผ๋ ์์์ ์ด์ ์ฒด์ ํ๊ฒฝ์ ์คํํ ์ ์์ ๋ฟ๋ง ์๋๋ผ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์ ๋๋ ์ค์๊ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ก ํน๋ณํ ์ค๋น๋ ๊ฐ๋ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํ ๊ฐ๋จํ ํ๊ฒฝ๋ ์คํํ ์ ์์ต๋๋ค. ๊ตฌ์ฑ์ ๋ค์์์ ์ค์ ๋ฉ๋๋ค. , ํ๊ฒฝ์ ํ ๋น๋ CPU, ๋ฉ๋ชจ๋ฆฌ ์์ญ ๋ฐ I/O ํฌํธ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.

์ ๋ฆด๋ฆฌ์ค์์
- Raspberry Pi 4 Model B ๋ฐ Texas Instruments J721E-EVM ํ๋ซํผ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ivshmem ์ฅ์น๋ ์
๊ฐ์ ์ํธ ์์ฉ์ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ก์ด ivshmem ์์ VIRTIO์ฉ ์ ์ก์ ๊ตฌํํ ์ ์์ต๋๋ค.
- ์ทจ์ฝ์ ์ฐจ๋จ์ ์ํด ๋์ฉ๋ ๋ฉ๋ชจ๋ฆฌ ํ์ด์ง(hugepage) ์์ฑ์ ๋นํ์ฑํํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํ์ต๋๋ค. Intel ํ๋ก์ธ์์์๋ ๊ถํ์ด ์๋ ๊ณต๊ฒฉ์๊ฐ ์๋น์ค ๊ฑฐ๋ถ๋ฅผ ์์ํ์ฌ "๋จธ์ ๊ฒ์ฌ ์ค๋ฅ" ์ํ์์ ์์คํ ์ด ์ ์ง๋๋๋ก ํ ์ ์์ต๋๋ค.
- ARM64 ํ๋ก์ธ์๊ฐ ํ์ฌ๋ ์์คํ ์ ๊ฒฝ์ฐ SMMUv3(์์คํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ฅ์น) ๋ฐ TI PVU(์ฃผ๋ณ ์ฅ์น ๊ฐ์ํ ์ฅ์น)์ ๋ํ ์ง์์ด ๊ตฌํ๋ฉ๋๋ค. ํ๋์จ์ด ์์์ ์คํ๋๋ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ(๋ฒ ์ด๋ฉํ)์ ๋ํ PCI ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ๋ฃจํธ ์นด๋ฉ๋ผ์ฉ x86 ์์คํ ์์๋ Intel ํ๋ก์ธ์๊ฐ ์ ๊ณตํ๋ CR4.UMIP(์ฌ์ฉ์ ๋ชจ๋ ๋ช ๋ น์ด ๋ฐฉ์ง) ๋ชจ๋๋ฅผ ํ์ฑํํ์ฌ SGDT, SLDT, SIDT์ ๊ฐ์ ํน์ ๋ช ๋ น์ด์ ์ฌ์ฉ์ ๊ณต๊ฐ ์คํ์ ๊ธ์งํ ์ ์์ต๋๋ค. , ๊ณต๊ฒฉ์ ์ฌ์ฉ๋ ์ ์๋ SMSW ๋ฐ STR์ ์์คํ ์ ๊ถํ์ ๋์ด๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
์ถ์ฒ : opennet.ru
