์๋๋ผ๋ฉด ํ๋์ ๊ธ์ ๋ฐ๋ก ํ์ ๋ด์ฉ์ ์ ์ผ๋ ค ํ๊ฒ ์ง๋ง, ๋๋ฌด ๊ท์ฐฎ๊ธฐ๋ ํ๊ณ ๊ทธ๋ฐ ํ์ธ์ด ๋ชฉํ ๋ฌ์ฑ์ ๋ฐฉํด๊ฐ ๋๋ ๊ฑฐ ๊ฐ์์ ์๋์ ์ผ๋ก ์ข ํ์ ๋ ๋ค์ด๊ณ ๊ธ์ ์จ ๋ณด๋ ค๊ณ ํ๋ค.
์ต๊ทผ ์ด์์ฒด์ ๊ณต๋ถ๋ฅผ ํ๊ณ ์๋ค. ๊ทธ๋ฅ ์์ ์ฒ๋ผ ํ๋ฉด ๋๋ฌด ์ฌ๋ฏธ๊ฐ ์์ ๊ฑฐ ๊ฐ์ ์ง์ ๊ตฌํ ํด ๋ณด๋ ์์ผ๋ก ๊ฐํผ๋ฅผ ์ก์๋ค. ๊ตฌํ ์ ์๋ ๊ตฌํ ๊ด๋ จ ์์ ์ด ์ด ์ฑ ๋ฐ์ ์์ด์ ํด๋น ์ฑ ์ ๋ฐ๋ผ๊ฐ๋, ์ค๋ช ์ด ๋ถ์กฑํ ๋ด์ฉ์ ๋ณด์ถฉํ๊ณ Rust๋ก ์ฝ๋ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค. Rust๋ก ๊ตฌํํ๊ธฐ๋ก ๊ฒฐ์ ํ ์ด์ ๋ ๋ฑํ ์๊ณ ๊ทธ๋ฅ ํ๋ฉด ์ฌ๋ฏธ์์ ๊ฑฐ ๊ฐ์์ ์น๊ตฌ์ ์์ ๋์ ๊ฒฐ์ ํ๋ค.
์ฑํฐ๋ณ๋ก ๋ฐฐ์ด ๋ด์ฉ๋ค์ ์ ์ ์ด๋ณด๋ ค๊ณ ํ๋๋ฐ, ์ด๋ฐ ์ง๋๊ณ ๋์๋ถํฐ ๊ฐ๋ฐ ๊ด๋ จ๋ ์ด์ผ๊ธฐ๊ฐ ์์ฐฝ ๋์ค์ง ์์๊น ์๊ฐํ๋ค. ์ด๋ฐ์๋ ์ผ๋จ ์ฑ ์ ์๋ ๋ด์ฉ์ ์ ์ ํ ์ ์ ๋ฆฌํ๋ ๊ฑธ๋ก.
์ด ์ฑ ์์๋ ์ธํ x86-64๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๊ธฐ๋ ํ๊ณ , ๋ด ๋ ธํธ๋ถ๋ ์ธํ ํ๋ก์ธ์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ ๊ทธ๋๋ก ๋ณด๊ธฐ๋ก ํ๋ค.
์ธํ 64๋นํธ ํ๋ก์ธ์์๋ ํฌ๊ฒ 5๊ฐ์ง์ ์ด์ ๋ชจ๋๊ฐ ์์ผ๋ฉฐ, ๊ฐ ๋ชจ๋๋ ์ธํฐ๋ฝํธ์ ์ปจํธ๋กค ๋ ์ง์คํฐ๋ฅผ ์ด์ฉํด ์ ํ์ด ๊ฐ๋ฅํ๋ค. ์ด ์ค OS ๊ตฌํ ์ ๊ผญ ํ์ํ ์ด์ ๋ชจ๋๋ 3๊ฐ์ง์ด๋ค.
OS ๊ฐ๋ฐ์ ํ์ํ ๋ ์ง์คํฐ๋ ๋ฒ์ฉ ๋ ์ง์คํฐ, ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ, ์ปจํธ๋กค ๋ ์ง์คํฐ ๊ฐ ์๋ค.
๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ์ง์ ์ด๋ ์์ ์ ์ฅ ๊ณต๊ฐ ๋ฑ์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๋ค. x86์๋ 8๊ฐ, x86-64์๋ 16๊ฐ๊ฐ ์์. ๋ฒ์ฉ ๋ ์ง์คํฐ์๋ ๊ฐ๋ณ์ ์ธ ์ด๋ฆ์ด ์๋๋ฐ, ์ด ์ด๋ฆ์ ํตํด ๊ฐ ๋ ์ง์คํฐ์ ํน์ ์ฉ๋๋ฅผ ์ ์ ์์. 64๋นํธ์๋ ์์ R, 32๋นํธ์๋ ์์ E ํน์ ๋ค์ D, 16๋นํธ์๋ ๋ค์ W๊ฐ ๋ถ๋๋ค.
๋ฆฌ์ผ ๋ชจ๋์์ 32๋นํธ ๋ ์ง์คํฐ์ ์ ๊ทผํ ์ ์๋ ๊ฑฑใด ์๋์ง๋ง, ๋ณดํธ๋ชจ๋ ์ ํ๊ณผ ๊ฐ์ ํน์ ์ํฉ์์๋ง ์ฌ์ฉํ ์ ์์. ๊ณ ๋ก ๊ทธ๋ฅ 16๋นํธ๋ง ๊ฐ๋ฅํ๋ค ๋ด๋ ๋ฌด๋ฐฉ.
๋, IA-32e
๋ชจ๋์์ ๋ณผ ์ ์๋ ํน์ํ ์ํฉ์ด ์๋๋ฐ, ์ด๋๋ ์ค ํฌ๊ธฐ๊ฐ ์์๋ ์คํผ๋๋ ํฌ๊ธฐ๊ฐ 32๋นํธ๋ผ ์ด๋๋ ์ค ์ ์ฒด๋ฅผ ์ด๋ํ์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ์๋ค. ์ด๋ฅผ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐํ๋๋ฐ
JMP
๋ช
๋ น์ด์ ์คํผ๋๋๋ง 64๋นํธ๋ก ๋ฐ์ ์ ์๋๋ก ์์ธ๋ฅผ ์ค์ ํ๋ค.16๋นํธ์ ๋ ์ง์คํฐ๋ก, ์ด๋๋ ์ค ์์ญ์ ๋ค์ํ ํฌ๊ธฐ๋ก ๊ตฌ๋ถํ๋ ์ญํ ์ ํ๋ค.
MOV
๋ช
๋ น์ด๋ก๋ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ JMP
๋ ์ธํฐ๋ฝํธ๋ฅผ ํตํด ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋ค.์ด์ ๋ชจ๋๋ฅผ ๋ณ๊ฒฝํ๊ณ , ํ์ฌ ์ด์ ๋ชจ๋๋ฅผ ์ ์ดํ๋ ๋ ์ง์คํฐ์ด๋ค.
์ปจํธ๋กค ๋ ์ง์คํฐ๋ ํ์ฌ ์ด์ ๋ชจ๋์ ๋ฐ๋ผ ํ์ ํ๋์ ์ต์ ํ๋๊ฐ ๋ฌ๋ผ์ง๊ณค ํ๋๋ฐ, ์ด๋ ๋์ค์ ์ ๋๋ก ๋ค๋ฃฐ ์์ ์ด๋ค.
์ธ๊ทธ๋ฉํ ์ด์ ๊ณผ ํ์ด์ง์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ค๋นํด์ผ ํ๋ ๊ฒ์ด ๋ค๋ฅด๋ค. ์ธ๊ทธ๋จผํ ์ด์ ์ ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ์ ์ธ๊ทธ๋จผํธ์ ์์ ์ฃผ์ ํน์ Descriptor๋ผ๊ณ ๋ถ๋ฆฌ๋ ์๋ฃ๊ตฌ์กฐ ์์น๋ฅผ ์ค์ ํด์ผ ํ๋ค. ํ์ด์ง์ ์ปจํธ๋กค ๋ ์ง์คํฐ ์ค์ CR3 ๋ ์ง์คํฐ์ Page Directory๋ผ๊ณ ๋ถ๋ฆฌ๋ ์๋ฃ๊ตฌ์กฐ ์์น๋ฅผ ์ค์ ํด์ผ ํ๋ค.
์ด์ ๋ชจ๋์ ๋ฐ๋ผ ์ง์ํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ๋ค๋ฅธ๋ฐ, ๊ฐ ๋ชจ๋๋ณ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ์์ ๋ํด ์์๋ณด๊ฒ ๋ค.
์ต๋ 1MB์ ์ฃผ์ ๊ณต๊ฐ์ ์ฌ์ฉํ๊ณ , ์ธ๊ทธ๋จผํ ์ด์ ๋ง ์ง์ํ๋ค. ๊ฐ ์ธ๊ทธ๋จผํ ์ด์ ์ 64KB๋ก ๊ณ ์ ๋์ด ์๋ค. ์์ ์ด๋๋ ์ค๋ ๊ฐ ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ์ ์ง์ ์ค์ ๋๋ค.
๋ฆฌ์ผ ๋ชจ๋์ ๋ ์ง์คํฐ ํฌ๊ธฐ๋ 16๋นํธ๋ก 1MiB์ ์ฃผ์๋ฅผ ๋ชจ๋ ๋ํ๋ผ ์ ์๋ค. ๊ทธ๋์ ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ์ ๊ฐ์ ์ ๊ณฑํ๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก ์ด ์ด์ ๋๋ฌธ์ ์ธ๊ทธ๋จผํธ์ ํฌ๊ธฐ๊ฐ 64KiB์ด๋ค.
๋ณดํธ๋ชจ๋ ๋ํ ๊ธฐ๋ณธ์ ์ผ๋ก ์ธ๊ทธ๋จผํธ๊ฐ ํน์ ์ฃผ์๋ฅผ ์ฐธ์กฐํ์ฌ ์ค์ ์ฃผ์๋ฅผ ๊ณ์ฐํ๋ ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ค. ํ์ง๋ง ํ์ด์ง ๊ธฐ๋ฅ๊น์ง ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์กฐ๊ธ ๋ ๋ณต์กํ๋ค. ๋ณดํธ ๋ชจ๋์์๋ ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ๊ฐ ์ธ๊ทธ๋จผํธ ๋์คํฌ๋ฆฝํฐ์ ์์น๋ฅผ ์ง์ ํ๋ค. ์ด ๋๋ฌธ์ ์ธ๊ทธ๋จผํธ ๋ ์ง์คํฐ๋ ์ธ๊ทธ๋จผํธ ์ ๋ ํฐ๋ก ๋ช ์นญ์ด ๋ฐ๋๋ค.
๋์คํฌ๋ฆฝํฐ (์์ ์) ๋ ๋ฉ๋ชจ๋ฆฌ ์ ์ฅ๊ณต๊ฐ์ ์์ ํ๋ ์๋ก๊ตฌ์กฐ๋ก, ๊ฐ์ค ์ธ๊ทธ๋จผํธ๋ฅผ ์์ ํ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ธ๊ทธ๋จผํธ ๋์คํฌ๋ฆฝํฐ๋ผ๊ณ ํ๋ค.
(์ถ์ฒ: ์ํค๋ฐฑ๊ณผ ์ธ๊ทธ๋จผํธ ๊ธฐ์ ์)
์ฌ๊ธฐ์๋ ์์ ์ฃผ์ / ํฌ๊ธฐ / ๊ถํ / ํ์ ๋ฑ์ด ์กด์ฌํ๋ค. ์ฅ๋น ์์์ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ ๊ธฐ๋ฅ์ด ์๋ค๋ ์ด์ผ๊ธฐ๋ฅผ ์ํด์ ํ๋๋ฐ, ์ด ์ญํ ์ ์ํํ๋ ๊ฒ์ด DPL ( Descriptor Privilege Level ) ํ๋์ด๋ค. ํด๋น ํ๋๊ฐ CPL (Current Privilege Level) ๋ณด๋ค ๋ฎ๋ค๋ฉด ( ์ซ์๊ฐ ํฌ๋ค๋ฉด ) ์ ๊ทผํ์ง ์๊ณ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ๋ค.
์ธ๊ทธ๋จผํธ ๋์คํฌ๋ฆฝํฐ๋ ๋ฉ๋ชจ๋ฆฌ ์์ GDT (Global Descriptor Table) ๊ณต๊ฐ์ ๋ชจ์ฌ์๋ค. GDT๋ ์ฐ์๋ ์๋ฃ๊ตฌ์กฐ์ด๋ฉฐ ์ต๋ ๊ฐ์ ๋์คํฌ๋ฆฝํฐ๋ฅผ ํฌํจํ ์ ์๋ ํ ์ด๋ธ ๊ตฌ์กฐ. ์ด ์ญ์ ์๋ฃ๊ตฌ์กฐ๋ผ ๋ ์ง์คํฐ์ ํฌํจ๋์ด ์์ด์ผ ํ๊ณ ์ด๋ฅผ GDTR์ ์ ์ฅํจ. 16๋นํธ GDT ํฌ๊ธฐ ํ๋ + 32๋นํธ Base Address ํ๋๋ก ๊ตฌ์ฑ๋๋ค.
์ด๋ ๊ฒ ๊ณ์ฐ๋ ๊ฒฐ๊ณผ๋ ๋ฌผ๋ฆฌ ์ฃผ์๊ฐ ์๋ ์ ํ ์ฃผ์. ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ ๋ฌผ๋ฆฌ ์ฃผ์๋ก ๋ณ๊ฒฝํ์ฌ ์ฌ์ฉํ๋ค. ์ ํ ์ฃผ์๋ ๋ฌผ๋ฆฌ ์ฃผ์์ 1:1 ๋์ํ ์๋ ์๊ณ ์๋์๋ ์๋ค. ํฐ ๊ท๋ชจ์ ์ด์์ฒด์ ๋ฅผ ๋ง๋ค์ง ์์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํ์ด์ง์ ์ด์ฉํ์ง ์๊ณ ์ ํ ์ฃผ์์ ๋ฌผ๋ฆฌ ์ฃผ์๋ฅผ 1:1 ๋์ํ๊ฒ ํ ์์ ์ด์ง๋ง, ์ด๋ป๊ฒ ๊ตด๋ฌ๊ฐ๋์ง๋ ์์๋๋ ๊ฒ์ด ์ข์ผ๋ ์ ์ด๋๋ค.
์ธ๊ทธ๋ฉํ ์ด์ ๊ณผ ํ์ด์ง์ ๊ฐ์ด ์ฐ๊ธฐ
์ธ๊ทธ๋ฉํ ์ด์ ์ ๋ ผ๋ฆฌ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ๋๋๋ ๊ฒ์ด๊ณ , ํ์ด์ง์ ์ผ์ ํ ํฌ๊ธฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๋๋๋ ๊ฒ์ด๋ค. ๋ ๋ค ํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ ๋, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋์ฑ ํจ์จ์ ์ผ๋ก ์ฐ๊ธฐ ์ํด ๊ณ ์๋ ๊ธฐ๋ฒ์ด๋ค.
๋ฌผ๋ฆฌ ๊ณต๊ฐ์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ค์ ์ ์ฌ๋๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ ๋จ์๋ก ํ ํ์๊ฐ ์๋ค. ํ์ฌ ์ค์ ๋ฌผ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ ํ์ด์ง๋ฅผ ๋จ์๋ก ์ ์ฅํ๊ณ , ์ด ํ์ด์ง๋ค์ ๋ชจ์ ์ธ๊ทธ๋จผํธ๋ก ์ ์ฅํ๋ค. ๋ค๋ฅธ ๊ณณ์์๋ ์ฃผ๋ก ๋ฐ๋๋ก ์์ ํ๋๋ฐ, ์ธ๊ทธ๋จผํธ๋ฅผ ํ์ด์ง ๋จ์๋ก ๋ค์ ์ชผ๊ฐ ๋ค ์ดํดํด๋ ๋ฌด๋ฐฉํ๋ค.
์ฆ, ์ธ๊ทธ๋จผํธ ์ ๋ ํฐ์์ ๋ฌผ๋ฆฌ ์ฃผ์๋ฅผ ๊ตฌํ ๋ ๊น์ง๋ ๋ค์๊ณผ ๊ฐ์ ํ๋ก์ฐ๊ฐ ์ด์ด์ง๋ค.
์ด ์ดํ๋ถํฐ๋ ํ์ด์ง์ ์์ญ์ด๋ค. ์ฃผ๋ก ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ 4KB๋ก ๋๋๊ณ ์ ํ ์ฃผ์๋ฅผ 3๋จ๊ณ๋ก ๋ถ๋ฆฌํ๋ 3๋จ๊ณ ํ์ด์ง๊ณผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ 4MB ๋จ์๋ก ๋๋๊ณ ์ ํ ์ฃผ์๋ฅผ 2๋จ๊ณ๋ก ๋ถ๋ฆฌํ๋ 2๋จ๊ณ ํ์ด์ง. ๊ธฐ๋ณธ ์๋ฆฌ๋ ๋น์ทํ๋ 3๋จ๊ณ ํ์ด์ง์ผ๋ก ์์๋ฅผ ๋ค๊ฒ ๋ค.
์ ํ ์ฃผ์๋ ๋๋ ํฐ๋ฆฌ / ํ ์ด๋ธ / ์คํ์ ์ผ๋ก ๊ตฌ์ฑ๋๋๋ฐ, ๋์คํฌ๋ฆฝํฐ ํ ์ด๋ธ์ฒ๋ผ ํ์ด์ง ๋๋ ํฐ๋ฆฌ๋ ๋ฉ๋ชจ๋ฆฌ ํ ๊ตฌ์์ ๋ชจ์ฌ์๋ค.
ํ์ด์ง ๋๋ ํฐ๋ฆฌ์ ํ ์ด๋ธ ์ํธ๋ฆฌ๋ ๋ชจ๋ ํฌ๊ธฑ๊ฐ 4๋ฐ์ดํธ. ํ์ด์ง ํฌ๊ธฐ๊ฐ 4K์ด๋ฏ๋ก ๋นํธ 12 ~ 31๋ง ์ฌ์ฉํ๊ณ ๋๋จธ์ง๋ฅผ ์์ฑ ํ๋๋ก ์ด๋ค. ์ฌ๊ธฐ์๋ ์ ๊ทผ๊ถํ ๊ด๋ จํ ๋นํธ๊ฐ ์์ด์ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ์ ์ ์ ์งํ๋ฉด์ ์ปค๋๊ณผ ์ฌ์ฉ์ ์์ญ์ ๋ถ๋ฆฌํ ์ ์๋ค.
์ด๋ ๊ฒ ์ค์ ์ฃผ์๊ฐ ์๋ ์ฃผ์๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ตฌํํ๋ฉด, ์ข ๋ ๋์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ ์ฌ์ฉํ ์ ์์ ๋ฟ๋๋ฌ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์์ ๊ฐ์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ณต๊ฐ์ ์ฌ์ฉํ ๋๋ ์ฉ์ดํ๋ค.
๋ณดํธ ๋ชจ๋์ ๋น์ทํ๋ฏ๋ก ์ค์ํ ์ฐจ์ด์ ๋ง ์์ ํ๊ฒ ๋ค.
IA-32e
๋ชจ๋์์๋ ๊ธฐ์ค ์ฃผ์๊ฐ ๋ค๋ฅธ ์ฌ๋ฌ ๊ฐ์ ์ธ๊ทธ๋จผํธ๋ก ๊ตฌ๋ถ๋ ์ ์๋ค.