์ด์ ๊ธ์์ ๊ฐ์ํ์ ํ์ดํผ๋ฐ์ด์ ์ ๋ํด์ ์์๋ณด์๋ค.
ํ์ดํผ๋ฐ์ด์ ๋ ๋ค์ ๊ฐ์ํ ๋ฐฉ์์ ๋ฐ๋ผ Full Virtualization๊ณผ Para Virtaulization์ผ๋ก ๋ถ๋ฅ๋๋ค.
Full Virtualization (์ ๊ฐ์ํ)
ํ๋์จ์ด๋ฅผ ์์ ํ ๊ฐ์ํํ๋ ๋ฐฉ์์ด๋ค. ์ ๋ถ ๊ฐ์ํํ๊ธฐ ๋๋ฌธ์ Guest OS๊ฐ Host ์์คํ ๊ณผ ์์ ํ ๋ถ๋ฆฌ๋์ด ์คํ๋๋ค. ๋ฐ๋ผ์ Guest OS๋ ์์ ์ด VM์ OS์ธ์ง ์ธ์งํ์ง ๋ชปํ๋ค. ๊ทธ๋ฌ๋ฏ๋ก Guest OS๋ ํ์ดํผ๋ฐ์ด์ ์ ์กด์ฌ๋ฅผ ์ ํ์๊ฐ ์๋ค.
Hardware์ Guest OS ์ฌ์ด์ Hypervisor๊ฐ ๋ถ๋ช ์กด์ฌํ์ง๋ง, VM ์ ์ฅ์์๋ ๊ฐ์ํ๋ ํ๋์จ์ด๋ฅผ ์ง์ง(๋ฌผ๋ฆฌ) ํ๋์จ์ด๋ก ์๊ฐํ๊ณ ์๊ธฐ ๋๋ฌธ์, ์ค์ ๋ฌผ๋ฆฌ ์์์ ๋ํด ์์ฒญ์ ๋ณด๋ธ๋ค๊ณ ์๊ฐํ๊ฒ ๋๋ค. ์๋ system call์ ์ํด App → Kernel → Hardware ์์๋ก ์๋น์ค๋ฅผ ์์ฒญํ๋๋ฐ, ์ด ๊ณผ์ ์ ํ์ดํผ๋ฐ์ด์ ๋จ์์ ์ฒ๋ฆฌํด ์ฃผ๋ ๊ฒ์ด๋ค. ํ์ดํผ๋ฐ์ด์ ๊ด๋ฆฌ์ฉ ๊ฐ์๋จธ์ ์ด ์คํ๋๋ฉฐ, ๋ชจ๋ ๊ฐ์๋จธ์ ๋ค์ ํ๋์จ์ด ์ ๊ทผ์ด ํด๋น ๊ด๋ฆฌ ๋จธ์ ์ ํตํด ์ด๋ฃจ์ด์ง๋ค.
Hardware Assisted Full Virtualization vs Software Assisted Full Virtualization
Full Virtualization์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ํ๋์จ์ด ์ง์ ์ ๊ฐ์ํ์ ์ํํธ์จ์ด์ ์ ๊ฐ์ํ๋ก ๋๋๋ค. ์ฌ์ค ์ ๊ฐ์ํ๋ ํ๋์จ์ด ์ง์ ์ ๊ฐ์ํ์ ๋์ผํ ๊ฐ๋ ์ผ๋ก ์ธ๊ธ๋๋ค.
ํ๋์จ์ด ์ง์ ์ ๊ฐ์ํ์ ๊ฒฝ์ฐ, Trap๊ณผ Emulation์ ์ด์ฉํด Guest OS์ Application์ด ์ง์ ํ๋์จ์ด์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํด ์ฌ์ฉํ๋ ๊ตฌ์กฐ์ด๋ค.
์ํํธ์จ์ด์ ์ ๊ฐ์ํ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ, Binary Translation์ ์ด์ฉํด ๊ฐ ๋จ๊ณ์์ ๋ชจ๋ ๋ช ๋ น์ ๋ํด ์ผ์ผํ ๊ฐ์ํํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์งํ๋๋ค.
Dual-mode operation
OS๋ Dual-mode operation(์ด์ค ๋์ ๋ชจ๋)๋ผ๋ ๊ฒ์ ์ง์ํ๋ค. ์ฌ์ฉ์์ OS๋ ์์คํ ์์์ ๊ณต์ ํ๋๋ฐ, ์ฌ์ฉ์๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์ฃผ์ ์์๋ค์ ๋ง๊ฐ๋จ๋ฆด ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋ณดํธํ๊ณ ์ ๋ง๋ จ๋ ์ฅ์น์ด๋ค.
์ด์ค ๋์ ๋ชจ๋๋ ์ฌ์ฉ์๋ชจ๋์ ์ปค๋๋ชจ๋๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๋ application์ด ์ฌ์ฉ์๋ชจ๋์์ ์๋๋๊ฑฐ๋ OS์๊ฒ system call์ ํ๋ ๊ฒฝ์ฐ, ์ปค๋๋ชจ๋๋ก ๋ฐ๊ฟ ์์ฒญ๋ ์๋น์ค๋ฅผ ์คํํ ํ์ ๋ค์ ์ฌ์ฉ์๋ชจ๋๋ก ์ ํ๋๋ ๊ตฌ์กฐ์ด๋ค.
Trap & Emulation
์ผ๋จ pass
Binary Translation
Guest OS๋ ๋ค์ํ ์ข ๋ฅ์ OS๊ฐ ์ฌ๋ผ๊ฐ ์ ์๊ธฐ์, ๊ฐ์ํ๋ ํ๋์จ์ด ์์ฒญ์ ํ ๋ OS๋ง๋ค ์ธํฐํ์ด์ค๊ฐ ๊ฐ๊ธฐ ๋ค๋ฅด๋ค. ์ด๋ฐ ๋ค์ํ ํ์์ ํ๋์ ํ์์ผ๋ก ๋ฒ์ญํด์ฃผ๋ ์์ Binary Translation์ด๋ผ๊ณ ํ๋ค. ๋น์ฐํ ์ด ๊ณผ์ ์์๋ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค.
Para Virtualization (๋ฐ๊ฐ์ํ)
Full Virtualization์ ๊ฒฝ์ฐ ๊ฑฐ์ณ์ผ ํ ๋จ๊ณ๊ฐ ๋ง์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ฉฐ, ์ฑ๋ฅ์ด ๋๋ ค์ง๋ค. ๊ทธ๋์ ์ด๋ฅผ ํด๊ฒฐํ๊ณ ์ Para Virtualization์ด ๋ฑ์ฅํ๋ค.
๋ฐ๊ฐ์ํ์ ํต์ฌ์ Hypercall์ด๋ค. ๋ฐ๊ฐ์ํ์ ์ฌ์ฉ๋๋ Guest OS๋ Hypercall์ด๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ํตํด ํ์ดํผ๋ฐ์ด์ ์๊ฒ ์ง์ ์์ฒญ์ ๋ ๋ฆฐ๋ค. ๋ฐฉ์์ ์ฌ์ค OS์์ application์ด kernel์๊ฒ system call๋ก ์๋น์ค๋ฅผ ์์ฒญํ๋ ๋ฐฉ์๊ณผ ๋์ผํ๋ค. ์์ฒญ์ ๋ ๋ฆฌ๋ ์ฃผ์ฒด๊ฐ Guest OS์ด๊ณ , ๋ฐ๋ ๋์์ด ํ์ดํผ๋ฐ์ด์ ๋ผ๋ ์ ์ด ๋ค๋ฅผ ๋ฟ์ด๋ค.
์ ๊ฐ์ํ์์ Guest OS๋ ์์ ์ด Guest OS์ธ์ง ๋ชจ๋ฅธ๋ค. ํ์ง๋ง ๋ฐ๊ฐ์ํ์์๋ Guest OS๊ฐ Hypervisor์ ์ง์ Hypercall์ ๋ ๋ ค์ผ ๋๋ฏ๋ก, ์์ ์ด Guest OS๋ผ๋ ์ฌ์ค์ ์ธ์งํด์ผ ํ๋ค. ๋ฐ๋ผ์ ๋ฐ๊ฐ์ํ ํ์ดํผ๋ฐ์ด์ ์ ์ฌ๋ผ๊ฐ๋ Guest OS๋ ์ปค๋์ ์์ ํด, Guest์ฉ OS๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด์ผ ํ๋ค.
์ ๋ฆฌ
ํ์ดํผ๋ฐ์ด์ ๊ฐ์ํ(Type1)
- ์ ๊ฐ์ํ : Guest OS์ ์์ ์ด ํ์์๋๋ก ํ๋์จ์ด ์ ์ฒด๋ฅผ ๊ฐ์ํํ๋ ๊ธฐ์
- ๋ฐ๊ฐ์ํ : Guest OS๋ฅผ ์์ ํ์ฌ ํน์ ๋ช ๋ น์ด ์ํ๋ ๋ Hypercall์ ํธ์ถํ์ฌ ํ์ดํผ๋ฐ์ด์ ๊ฐ ์คํ๋๋๋ก ํ๋ ๊ธฐ์
์ฐธ๊ณ ๋งํฌ