Linux Kernel ๋ฆฌ๋ ์ค ์ปค๋ ๊ฐ์
Linux Kernel ๋ฆฌ๋ ์ค ์ปค๋
I. Linux Kernel ๊ฐ์
์ด์์ฒด์ ์ ํต์ฌ ๊ธฐ๋ฅ์ ๋ชจ์๋์ ์ปค๋์ด ์ฃผ๋ก ํ๋ ์ผ์ ์์คํ ์ ๋ฐ์ ๋ํ ๋ก์ฐ ๋ ๋ฒจ(low-level) ์ ์ด, ์ฆ ๋ฉ๋ชจ๋ฆฌ, ํ๋ก์ธ์ค, ๋๋ฐ์ด์ค, ํ์ผ์์คํ , ์ ์ถ๋ ฅ, ํ๋ก์ธ์ค ๊ฐ ํต์ ๊ด๋ฆฌ ๋ฐ ๋ณด์ ๋ฑ์ด๋ค. ์ด๋ฌํ ์ปค๋์ ํต์ฌ ๊ธฐ๋ฅ์ ์ ๊ธฐ์ ์ผ๋ก ์๋ก ๋ณต์กํ๊ฒ ์ฝํ์์ผ๋ฉฐ, ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ๊ตฌํํ์๋๋์ ๋ฐ๋ผ ๋จ์ผํ ๊ตฌ์กฐ ์ปค๋, ๊ณ์ธตํ ๊ตฌ์กฐ ์ปค๋, ๋ง์ดํฌ๋ก ๊ตฌ์กฐ ์ปค๋๋ก ๊ตฌ๋ถ๋๋ค.
II. ์ปค๋์ ๊ธฐ๋ฅ
- Memory Management
- ํ๋ก์ธ์ค๋ณ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํฌํจํ ์์คํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
- Process Management
- ํ๋ก์ธ์ค ์์ฑ, ์ข ๋ฃ, ์ค์ผ์ฅด๋ง, ์ฐ์ ์์ ๋ณ๊ฒฝ, ํ๋ก์ธ์ค๊ฐ ํต์ ์ ํฌํจํ ํ๋ก์ธ์ค ๊ด๋ฆฌ
- Device Management
- ๋๋ฐ์ด์ค ๋๋ผ์ด๋ฒ๋ฅผ ํฌํจํ ํ๋์จ์ด ๋๋ฐ์ด์ค ๋ฐ ์ ์ถ๋ ฅ ์์ ๊ด๋ฆฌ
- File System Management
- ํ์ผ์ ์ฝ๊ธฐ/์ฐ๊ธฐ/์์ฑ/์ญ์ /๊ถํ ๊ด๋ฆฌ
- Security and Protection
- ๊ถํ์ด ์๋/์ธ์ฆ๋ ์ ์ ๋ง ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์๋๋ก ๋ณด์ ๊ด๋ฆฌ
III. ์ปค๋ ํ์
- ๋จ์ผํ ์ปค๋(Monolithic Kernel)
๋จ์ผํ ์ปค๋(๋ชจ๋๋ฆฌ์ ์ปค๋)์ ์ด๊ธฐ ์ด์์ฒด์ ๊ตฌ์กฐ๋ก ์ปค๋์ ํต์ฌ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ชจ๋๋ค์ด ๊ตฌ๋ถ ์์ด ํ๋์ ํฐ ํ๋ก๊ทธ๋จ์ผ๋ก ๊ตฌ์ฑ๋์ด์๋ค. ๋ชจ๋๋ฆฌ์ ์ปค๋์ ๋ํ์ ์์๋ MS-DOS, VMS, ์ด๊ธฐ์ ์ ๋์ค ์ด์์ฒด์ ์ด๋ฉฐ ์ด ๋์ ์ปค๋์ ๋ชจ๋ ๊ฐ ํต์ ๋น์ฉ์ด ์ค์ด๋ค์ด ํจ์จ์ ์ธ ์ฑ๋ฅ์ ๋ฐํํ ์ ์์์ง๋ง ๋ชจ๋ ๋ชจ๋์ด ํ๋๋ก ๋ฌถ์ฌ์๊ธฐ ๋๋ฌธ์ ๋ถ๋ถ ๋ฒ๊ทธ๋ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ด๋ ค์ด ๋จ์ ์ด ์๋ค. ๋ํ ๋ค์ํ ํ๊ฒฝ์ ์์คํ
์์ ์ด์์ฑ์ด ๋ฎ๊ณ , ์ด์์ฒด์ ์ ์ฌ๋ฌ ๊ธฐ๋ฅ์ด ์๋ก ์ฐ๊ฒฐ๋์ด ์์ด ์ํธ ์์กด์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ฅ์์ ์์ ๊ฒฐํจ์ด ์์คํ
์ ์ฒด๋ก ํ์ฐ๋ ์ฐ๋ ค๊ฐ ์๋ค.
- ๋ง์ดํฌ๋ก ์ปค๋(Microkernel)
๋ง์ดํฌ๋ก ์ปค๋์ ์ด์์ฒด์ ๋ ํ๋ก์ธ์ค,๋ฉ๋ชจ๋ฆฌ,ํ๋ก์ธ์ค ๊ฐ ํต์ ๊ด๋ฆฌ์ ๊ฐ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ปค๋ ๊ธฐ๋ฅ๋ง ์ ๊ณตํ๋ค. ์ปค๋์ ๊ตฌ์กฐ์ ๊ด์ ์์๋ ๋ค๋ฅธ ์ปค๋์ ๋นํด ์ด์์ฒด์ ์ ๋ง์ ๋ถ๋ถ์ด ์ฌ์ฉ์ ์์ญ์ ๊ตฌํ๋์ด์๋ค. ๋ง์ดํฌ๋ก ๊ตฌ์กฐ์์ ๊ฐ ๋ชจ๋์ ๋
๋ฆฝ์ ์ผ๋ก ์๋ํ๊ธฐ ๋๋ฌธ์ ํ๋์ ๋ชจ๋์ด ์คํจํ๋๋ผ๋ ์ ์ฒด ์ด์์ฒด์ ๊ฐ ๋ฉ์ถ์ง ์์ผ๋ฉฐ ๋ํ ๋ค์ํ ์์คํ
ํ๊ฒฝ์์ ์ด์์ฑ์ด ๋๊ณ ์ปค๋์ด ๊ฐ๋ฒผ์ CPU ์ฉ๋์ด ์์ ์์คํ
์๋ ์ ์ฉ ๊ฐ๋ฅํ๋ค.(i.e ๋ชจ๋ฐ์ผ)
- ๊ณ์ธตํ ์ปค๋(Layered Kernel)
๊ณ์ธตํ ์ปค๋์ ๋จ์ผํ ์ปค๋์ด ๋ฐ์ ๋ ํํ๋ก ๋น์ทํ ๊ธฐ๋ฅ์ ๊ฐ์ง ๋ชจ๋์ ๋ฌถ์ด ํ๋์ ๊ณ์ธต(Layer)์ ๋ง๋ค๊ณ ๊ณ์ธต ๊ฐ์ ํต์ ์ ์ํด ์ด์์ฒด์ ๋ฅผ ๊ตฌํํ๋ ๋ฐฉ์์ด๋ค. ๋น์ทํ ๊ธฐ๋ฅ์ ๋ชจ์ ๋ชจ๋ํํ๊ธฐ ๋๋ฌธ์ ๋จ์ผํ ๊ตฌ์กฐ๋ณด๋ค ๋ฒ๊ทธ๋ ์ค๋ฅ๋ฅผ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๊ณ ์ด์ ๋ฐ์ ์ ์ ์ฒด ์ปค๋์ ๊ณ ์น๋ ๊ฒ์ด ์๋๋ผ ํด๋น ๊ณ์ธต๋ง ์ ๋ณด๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋๋ฒ๊น
๋ ์ฉ์ดํ๋ค.
IV. ์ปค๋ ๋์ ๊ตฌ์กฐ
- User Mode vs. Kernel Mode
์ปค๋์ ์ปค๋๋ชจ๋(Kernel Mode)๋ก ์๋ ค์ง Privileged Mode ์์ ๋์ํ๋ค. ๋ฐ๋์ Non-Privileged Mode๋ ์ ์ ๋ชจ๋(User Mode)์ด๋ค. ์ด๋ฌํ ๋ชจ๋์ ๊ตฌ๋ถ์ ์ปค๋๋ก ํ์ฌ๊ธ ์์คํ
๋ฆฌ์์ค ์ ๋ฐ์ ๋ํ ์ ์ด ๊ถํ์ ์ฃผ๊ณ , ์ก์ธ์ค ๊ถํ์ด ์๋ ์ ๊ทผ์ ์ฐจ๋จํ๋ ๋ฉ์ปค๋์ฆ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
- Kernel Data Structures
์ปค๋์ ํ๋ก์ธ์ค ํ
์ด๋ธ, ํ์ด์ง ํ
์ด๋ธ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ ์์คํ
๋ฆฌ์์ค๋ฅผ ๊ด๋ฆฌํ๋ค.
- Interrupt Handling
์ปค๋์ ํ๋์จ์ด ๋๋ฐ์ด์ค ๋ฐ ์์คํ
ํธ์ถ๊ณผ ๊ฐ์ ์ํํธ์จ์ด exception ๋ฑ์ ์ธํฐ๋ฝํธ๋ฅผ ํธ๋คํ๋ ์ญํ ์ ํ๋ค.
V. ๋ง๋ฌด๋ฆฌ
์ด์์ฒด์ ๋ ์ปค๋๊ณผ ์ธํฐํ์ด์ค๋ฅผ ๋ถ๋ฆฌํ์ฌ ๊ฐ์ ์ปค๋์ ์ฌ์ฉํ๋๋ผ๋ ๋ค๋ฅธ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง ํํ๋ก ์ ์ํ ์ ์๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ ์ปค๋์ด๋ผ๋ ๋ค๋ฅธ ์ธํฐํ์ด์ค๊ฐ ์ฅ์ฐฉ๋๋ฉด ์ฌ์ฉ์์๊ฒ๋ ๋ค๋ฅธ ์ด์์ฒด์ ๋ก ๋ณด์ด๊ฒ ๋๋ค. ์ ์ ์ ์ฅ์์๋ ์ปค๋๋ณด๋ค ์ธํฐํ์ด์ค๊ฐ ๋จผ์ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์ข์ ์ปค๋์ ์ปดํจํฐ๋ณด๋ค ์ข์ ์ธํฐํ์ด์ค์ ์ปดํจํฐ๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฒฝํฅ์ด ์๋ค.
์ถ๊ฐ๋ก ์ปค๋ ๊ฐ๋ฐ์ C ์ธ์ด ๋ฐ ์ด์ ๋ธ๋ฆฌ์ด๋ฅผ ์ด์ฉํ๋ฉฐ ์ปค๋์ ์์ค ์ฝ๋๋ฅผ ํตํด ํน์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐ, ์ฑ๋ฅ ์ต์ ํ, ํน์ ํ๋์จ์ด๋ ์ํํธ์จ์ด ์๊ตฌ์ฌํญ์ ๋ง๋ ์ปค์คํฐ๋ง์ด์ง์ด ๊ฐ๋ฅํด์ง๋ค.