
Linux Kernel โ 1 Linux Kernel Overview ๐ง
์ปค๋์ ์ ์์ ์ญํ
์ปค๋์ ์ด์์ฒด์ ์ ํต์ฌ ๋ถ๋ถ ์ค ํ๋๋ค.
ํญ์ ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผํ๋ฉด์ ํ๋์จ์ด์ ์์ฉ ํ๋ก๊ทธ๋จ ์ฌ์ด์์ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ์ญํ ์ ํ๋ค.
ํ๋ก๊ทธ๋จ์ด ์คํ๋๊ธฐ ์ํด ํ์ํ ๋ค์ํ ์์คํ ์์๋ค์ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ๋ ๋ด๋นํ๋ค.
์ฆ, ์ปค๋์ ์ค๊ฐ ๋งค๊ฐ์ฒด์ฒ๋ผ ๋์ํ๋ค.
์์ฉ ํ๋ก๊ทธ๋จ์ด ๋ณต์กํ ํ๋์จ์ด๋ฅผ ์ง์ ์ ์ดํ์ง ์๋๋ก ๋์์ฃผ๊ณ , ๊ทธ ์ฌ์ด์์ ์ผ๊ด๋ ์๋น์ค์ ์์์ ์ ๊ณตํ๋ค.
์คํ์์ค ๊ธฐ๋ฐ์ ํ์ต์ฑ๊ณผ ์ ์ฐ์ฑ
๋ฆฌ๋ ์ค ์ปค๋์ ์คํ์์ค๋ก ๊ณต๊ฐ๋์ด ์๋ค.
์ปค๋ ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ๋๊ตฌ๋ ํ์ธํ๊ณ , ์์ ํ๊ฑฐ๋ ๋ถ์ํ ์ ์๋ ํํ๋ค.
์ด๋ฐ ํน์ง์ ์์คํ ํ๋ก๊ทธ๋๋ฐ์ด๋ ๋ณด์ ๋ถ์, ์๋ฒ ๋๋ ์์คํ ๊ฐ๋ฐ์ฒ๋ผ
๋ฎ์ ์์ค์ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ํฐ ์ฅ์ ์ผ๋ก ์์ฉํ๋ค.
์ค์ ๋ก ๋ง์ ์๋ฒ์ ํด๋ผ์ฐ๋ ์์คํ ์ด ๋ฆฌ๋ ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์๋๊ณ ์๋ค.
์์ ๊ด๋ฆฌ์ ์ค์ฌ
์ปดํจํฐ๋ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ ๋์์ ์คํํด์ผ ํ๋ค.
์ด๋ CPU ์ฌ์ฉ ์๊ฐ, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ, ๋์คํฌ ์ ๊ทผ ์์ ๋ฑ์ ํจ์จ์ ์ผ๋ก ๋๋ ์ผ ํ๋ค.
์ปค๋์ ์ด๋ฌํ ์์ ๋ถ๋ฐฐ๋ฅผ ์ง์ ์ํํ๋ ์ค์ฌ ์ญํ ์ ๋งก๊ณ ์๋ค.
์ ์ ํ ๋ถ๋ฐฐ ์์ด๋ ์์คํ ์ด ๋๋ ค์ง๊ฑฐ๋ ์ถฉ๋์ด ๋ฐ์ํ ์๋ฐ์ ์๋ค.
๋ฉํฐํ์คํน ํ๊ฒฝ์ด ์์ ์ ์ผ๋ก ์ ์ง๋๋ ๊ฒ๋ ์ปค๋ ๋๋ถ์ด๋ค.
์์คํ ๋ณด์๊ณผ ์์ ์ฑ ํ๋ณด
๋ชจ๋ ํ๋ก๊ทธ๋จ์ด ์์ ๋กญ๊ฒ ํ๋์จ์ด์ ์ ๊ทผํ๋ค๋ฉด, ์์คํ ์ ์ฝ๊ฒ ๋ฌด๋์ง ์ ์๋ค.
ํนํ ์ ์ฑ ์ฝ๋๋ ์ค๋ฅ๋ก ์ธํด ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ด๋ ์ด์์ฒด์ ์์ญ์ ์นจ๋ฒํ ์ ์๋ค.
์ปค๋์ ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ ํ๋ ๋ฐฉ์์ผ๋ก๋ง ์ ๊ทผ์ ํ์ฉํ๋ค.
์์คํ ์ฝ์ด๋ผ๋ ํต๋ก๋ฅผ ํตํด์๋ง ์ปค๋ ๊ธฐ๋ฅ์ ์ ๊ทผํ ์ ์๋๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
์ด๋ฐ ๊ตฌ์กฐ๋ ์์คํ ์ ์์ ์ฑ๊ณผ ๋ณด์์ ์ ์งํ๋ ๋ฐ ํต์ฌ์ ์ธ ์ญํ ์ ํ๋ค.
๋ํ ๊ฐ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ถ๋ฆฌํ์ฌ, ์ํธ ์นจ๋ฒ์ ์ฐจ๋จํ๋ค.
์ฅ์น ์ถ์ํ์ ํ์ฅ์ฑ
์ปค๋์ ๋ค์ํ ์ฅ์น๋ฅผ ์ถ์ํํ๋ค.
์ฅ์น๋ง๋ค ์ ์ด ๋ฐฉ์์ ๋ค๋ฅด์ง๋ง, ์ปค๋์ด ์ค๊ฐ์์ ์ฒ๋ฆฌํจ์ผ๋ก์จ ํ๋ก๊ทธ๋จ์ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ฅ์น๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์๋ฅผ ๋ค์ด, ํ๋๋์คํฌ๋ SSD๋ , ํ๋ก๊ทธ๋จ์ ๊ฐ์ API๋ก ํ์ผ์ ์ฝ๊ณ ์ธ ์ ์๋ค.
์ด์ฒ๋ผ ์ปค๋์ ์ฅ์น์ ์ฐจ์ด๋ฅผ ๊ฐ์ถ๊ณ , ์ผ๊ด๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค.
๋ํ ๋๋ผ์ด๋ฒ๋ฅผ ํตํด ์๋ก์ด ์ฅ์น๋ฅผ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋๋ก ์ค๊ณ๋์ด ์๋ค.
์ด ๋๋ถ์ ์์คํ
์ ํ์ฅ์ฑ๋ ์์ฐ์ค๋ฝ๊ฒ ํ๋ณด๋๋ค.
์ฌ์ฉ์์์ ์ง์ ์ํธ์์ฉ ๋ถ์ฌ
์ปค๋์ ์ปดํจํฐ ์์์ ๊ด๋ฆฌํ๋ ๋ฐ ์ง์คํ๋ ๊ตฌ์กฐ๋ค.
๋ฐ๋ผ์ ์ฌ์ฉ์์์ ์ง์ ์ ์ธ ์ํธ์์ฉ์ ํ์ง ์๋๋ค.
์ฌ์ฉ์๊ฐ ๋ช
๋ น์ ์
๋ ฅํ๊ฑฐ๋ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๊ธฐ ์ํด์๋ ๋ณ๋์ ์ธํฐํ์ด์ค๊ฐ ํ์ํ๋ค.
๋ํ์ ์ผ๋ก ์(Shell) ๊ฐ์ ๋ช
๋ น์ด ํด์๊ธฐ๊ฐ ์ด๋ฐ ์ญํ ์ ๋งก๋๋ค.
์์ ์ฌ์ฉ์์ ์
๋ ฅ์ ๋ฐ์ ์ปค๋์ด ์ดํดํ ์ ์๋ ํํ๋ก ์ ๋ฌํ๋ค.
์ปค๋์ ์ด๋ฅผ ์ฒ๋ฆฌํ ๋ค ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์ฌ์ฉ์์๊ฒ ๋ฐํํ๋ค.
์ด ๊ณผ์ ์ ํตํด ์ฌ์ฉ์์ ์์คํ
๊ฐ์ ์ํต์ด ์ด๋ฃจ์ด์ง๋ค.
๋๊ธฐ
๋๋ผ์ด๋ฒ ๊ธฐ๋ฐ ๊ตฌ์กฐ๋ฅผ ํตํด ์๋ก์ด ํ๋์จ์ด๋ฅผ ์์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋๋ก ์ค๊ณ๋จ
์ฅ์น ๋ ๋ฆฝ์ฑ๊ณผ ์์คํ ํ์ฅ์ฑ์ ๊ณ ๋ คํ ์ ์ฐํ ์ปค๋ ๊ตฌ์กฐ ํํ๋ก ์ด์
๐ง ์ปค๋(Kernel)์ด๋?
์ปค๋์ ์ปดํจํฐ์ ํ๋์จ์ด์ ์ํํธ์จ์ด ์ฌ์ด๋ฅผ ์ค์ฌํ๋ ์ด์์ฒด์ ์ ํต์ฌ ๊ตฌ์ฑ ์์์ด๋ค.
ํ๋ก์ธ์ค, ๋ฉ๋ชจ๋ฆฌ, ํ์ผ, ์ ์ถ๋ ฅ ์ฅ์น ๋ฑ์ ๊ด๋ฆฌํ๋ฉฐ ์์คํ ์ ์์ ์ฑ๊ณผ ์์ ๊ด๋ฆฌ๋ฅผ ๋ด๋นํ๋ค.
์๋ฒ ๋ฐ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์์ ํ์ ์ด์์ฒด์
๋๋ถ๋ถ์ ์น ์๋ฒ์ ํด๋ผ์ฐ๋ ์ธํ๋ผ(AWS, Azure, GCP)๋ ๋ฆฌ๋ ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ค.
์๋ฒ ์ด์, ๋ฐฑ์๋ ๊ฐ๋ฐ, ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ํ๊ฒฝ ๋์์ ์ํด ๋ฆฌ๋ ์ค ๋ช ๋ น์ด์ ์์คํ ๊ตฌ์กฐ์ ๋ํ ์ดํด๊ฐ ๋ฐ๋์ ํ์ํ๋ค.
์คํ์์ค ๊ธฐ๋ฐ์ผ๋ก ํ์ต ๋ฐ ์ปค์คํฐ๋ง์ด์ง ์ฉ์ด
๋ฆฌ๋ ์ค๋ ์ปค๋๋ถํฐ ์ฌ์ฉ์ ๊ณต๊ฐ๊น์ง ์ ์ฒด ๊ตฌ์กฐ๊ฐ ๊ณต๊ฐ๋์ด ์๋ค.
์ง์ ์ปค์คํฐ๋ง์ด์งํ๊ฑฐ๋ ๊ตฌ์กฐ๋ฅผ ๋ถ์ํ๋ ๋ฐ ์ ๋ฆฌํ๋ฉฐ, ๋ณด์ ๋ถ์, ์์คํ
ํ๋ก๊ทธ๋๋ฐ, ์๋ฒ ๋๋ ์์คํ
๋ฑ
์ ์์ค ๊ฐ๋ฐ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฐ์ด ๋๋ค.
๋ช ๋ น์ด ๊ธฐ๋ฐ ์๋ํ ๋ฐ ๊ณ ๊ธ ์ด์ ๊ธฐ๋ฅ ์ ๊ณต
Bash, crontab, systemd, ํจํค์ง ๋งค๋์ ๋ฑ์ ๋๊ตฌ๋ฅผ ํตํด ์๋ํ๋ ์์ ํ๋ฆ์ ๊ตฌ์ถํ ์ ์๋ค.
๋ํ, ๋คํธ์ํฌ ๋ถ์, ์์คํ ๋ชจ๋ํฐ๋ง, ๋ก๊ทธ ๋ถ์ ๋ฑ ๊ณ ๊ธ ์ด์์ ํ์ํ ๊ธฐ๋ฅ๋ค์ CLI ๊ธฐ๋ฐ์ผ๋ก ์ ๊ณตํ๋ค.
๐งฉ ์ปค๋๊ณผ ์ด์์ฒด์ ์ ์ฐจ์ด
์ด์์ฒด์ ๋ ๋ ํฐ ๊ฐ๋ ์ด๋ค
์ด์์ฒด์ ๋ ์ปค๋, ๋๋ฐ์ด์ค ๋๋ผ์ด๋ฒ, ์์คํ
์ ํธ๋ฆฌํฐ, ์์ฉ ํ๋ก๊ทธ๋จ ๋ฑ์ ๋ชจ๋ ํฌํจํ๋ ์์ ๊ฐ๋
์ด๋ค.
ํ๋์จ์ด์ ์ฌ์ฉ์ ๊ฐ์ ์ฐ๊ฒฐ์ ๋ด๋นํ๋ ์ ์ฒด ์์คํ
๊ตฌ์ฑ ์์๋ค.
์ปค๋์ ์ด์์ฒด์ ์ ํต์ฌ์ด๋ค
์ปค๋์ ์ด์์ฒด์ ์ ๊ฐ์ฅ ์ค์ฌ์ ์ธ ๋ถ๋ถ์ผ๋ก,
ํ๋์จ์ด์ ์ํํธ์จ์ด ๊ฐ์ ํต์ ์ ์ค๊ฐํ๋ ์ญํ ์ ์ํํ๋ค.
๐ ์ปค๋์ ์ ์กด์ฌํ๋๊ฐ?
1. ํ๋์จ์ด์ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ ์ฌ์ด์ ๋ค๋ฆฌ
์ปดํจํฐ๋ ๋ค์ํ ํ๋์จ์ด ์ฅ์น๋ก ๊ตฌ์ฑ๋๋ค.
CPU, ๋ฉ๋ชจ๋ฆฌ, ์ ์ฅ์ฅ์น, ๋คํธ์ํฌ ์นด๋, ํค๋ณด๋, ๋ง์ฐ์ค ๋ฑ ๊ฐ๊ฐ์ ๋์ ๋ฐฉ์์ ๋ชจ๋ ๋ค๋ฅด๋ค.
์ด ๋ณต์กํ ํ๋์จ์ด๋ฅผ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ด ์ง์ ๋ค๋ฃจ๊ธฐ๋ ์ด๋ ต๋ค.
๊ทธ๋์ ์ปค๋์ด ์ค๊ฐ์์ ์ค์ฌ์ ์ญํ ์ ํ๋ค.
์ปค๋์ ํ๋์จ์ด ์์์ ์ถ์ํํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ํต์ผ๋ ๋ฐฉ์์ผ๋ก ํ๋ก๊ทธ๋จ์ ์ ๊ณตํ๋ค.
๋๋ถ์ ํ๋ก๊ทธ๋จ์ ํ๋์จ์ด์ ๋ณต์กํจ์ ๋ชฐ๋ผ๋ ๋์ํ ์ ์๋ค.
2. ์์ ๊ด๋ฆฌ์ ํต์ฌ
์ด์์ฒด์ ๋ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๋์์ ์คํ๋ ์ ์๊ฒ ํด์ผ ํ๋ค.
์ด๋ CPU, ๋ฉ๋ชจ๋ฆฌ, ์ ์ฅ์, ์
์ถ๋ ฅ ์ฅ์น ๊ฐ์ ์์์ ์ด๋ป๊ฒ ๋๋์ง๊ฐ ์ค์ํ๋ค.
์ปค๋์ ์์์ ๋ฐฐ๋ถ์ ๋งก๋๋ค.
์๋ฅผ ๋ค์ด, ์ด๋ค ํ๋ก๊ทธ๋จ์ด CPU๋ฅผ ๋จผ์ ์ธ์ง, ๋ฉ๋ชจ๋ฆฌ๋ ์ด๋์ ๋ฐฐ์ ํ ์ง ๊ฒฐ์ ํ๋ค.
์ด๋ฐ ์์ ๊ด๋ฆฌ๋ ์ด์์ฒด์ ์ ํต์ฌ ๊ธฐ๋ฅ์ด๋ค.
์ปค๋์ด ์๋ค๋ฉด ๋ฉํฐํ์คํน์ด๋ ๋ฉ๋ชจ๋ฆฌ ๋ณดํธ๋ ๋ถ๊ฐ๋ฅํ๋ค.
3. ์์คํ ์ ์์ ์ฑ๊ณผ ๋ณด์ ์ ์ง
๋ง์ฝ ํ๋ก๊ทธ๋จ์ด ์ง์ ํ๋์จ์ด์ ์ ๊ทผํ ์ ์๋ค๋ฉด ํฐ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค.
์ค์๋ ์
์ฑ ์ฝ๋๋ก ์ธํด ์์คํ
์ ์ฒด๊ฐ ๋ฌด๋์ง ์๋ ์๋ค.
์ปค๋์ ์ด๋ฌํ ์ํ์ ๋ง๊ธฐ ์ํด ์ ๊ทผ์ ํต์ ํ๋ค.
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์ปค๋์ ํตํด์๋ง ํ๋์จ์ด ์์์ ์ ๊ทผํ ์ ์๋ค.
์ด๋ฐ ๋ฐฉ์์ ์์คํ
์ฝ
์ด๋ผ๊ณ ํ๋ค.
์๋ฅผ ๋ค์ด, ํ ํ๋ก๊ทธ๋จ์ด ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๋ ๊ฒ์ ๊ธ์ง๋๋ค.
์ด๋ฌํ ๊ฒฉ๋ฆฌ ๋๋ถ์ ๋ณด์ ์ฌ๊ณ ๋ ์ถฉ๋์ ์๋ฐฉํ ์ ์๋ค.
4. ์ฅ์น ๋ ๋ฆฝ์ฑ๊ณผ ํ์ฅ์ฑ ์ ๊ณต
์ปค๋์ ๋ค์ํ ํ๋์จ์ด ์ฅ์น๋ฅผ ์ถ์ํํ๋ค.
๊ทธ๋์ ํ๋ก๊ทธ๋จ์ ํ๋๋์คํฌ๋ SSD๋ ์๊ด์์ด ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ์ผ์ ๋ค๋ฃฐ ์ ์๋ค.
์ฅ์น๊ฐ ๋ฌ๋ผ๋ ๋ด๋ถ์ ์ผ๋ก ์ปค๋์ด ์์์ ์ฒ๋ฆฌํด์ค๋ค.
์ด ๋๋ถ์ ์ฅ์น ๋
๋ฆฝ์ฑ์ด ํ๋ณด๋๋ค.
๋ํ ๋๋ผ์ด๋ฒ๋ฅผ ํตํด ์๋ก์ด ์ฅ์น๋ฅผ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์๋ค.
์ปค๋ ๊ตฌ์กฐ๋ ์ด๋ฐ ํ์ฅ์ฑ์ ๊ณ ๋ คํด ์ค๊ณ๋์ด ์๋ค.
์ปค๋ ๋ด๋ถ์ ๊ตฌํ๋ ์ฃผ์ ๊ธฐ๋ฅ ํญ๋ชฉ
์๋ ๊ธฐ๋ฅ๋ค์ ์ปค๋ ์์ค์ฝ๋๋ก ๊ตฌํ๋์ด ์์ผ๋ฉฐ, ๋ถ์ ๋์์ด ๋จ
Task(Process) Management
CPU๋ฅผ ์ถ์ํํ์ฌ Task ๋จ์๋ก ์์ ์ ๊ณต
Memory Management
๋ฉ๋ชจ๋ฆฌ๋ฅผ Page, Segment๋ก ์ถ์ํํ์ฌ ์์ ์ ๊ณต
File System
๋์คํฌ๋ฅผ File๋ก ์ถ์ํํ์ฌ ์์ ์ ๊ณต
Network Management
๋คํธ์ํฌ ์ฅ์น๋ฅผ Socket์ผ๋ก ์ถ์ํ
Device Driver Management
๋ค์ํ ์ธ๋ถ ์ฅ์น์ ๋ํ ์ ๊ทผ ๊ธฐ๋ฅ ์ ๊ณต
Interrupt Handling
ํ๋์จ์ด ์ธํฐ๋ฝํธ ์์ฒญ ์ฒ๋ฆฌ
I/O Communication
์ ์ถ๋ ฅ ์ฅ์น์์ ์ค๊ฐ ๊ธฐ๋ฅ ์ํ
์ปค๋ ์์คํ ๊ตฌ์กฐ
์์คํ ์ ๊ณ์ธต์ ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๊ฐ ๊ณ์ธต์ ์ญํ ์ ๋ค์๊ณผ ๊ฐ์

User Space (Application)
์ฌ์ฉ์๊ฐ ์ง์ ์คํํ๋ ์์ฉ ํ๋ก๊ทธ๋จ ์์ญ
Kernel
ํ๋ก์ธ์ค, ๋ฉ๋ชจ๋ฆฌ, ์ฅ์น ๊ด๋ฆฌ ๋ฑ ํต์ฌ ๊ธฐ๋ฅ ๋ด๋น
Hardware
์ค์ ์ฅ์น(CPU, ๋ฉ๋ชจ๋ฆฌ, ๋๋ฐ์ด์ค)๋ก ๊ตฌ์ฑ๋ ๋ฌผ๋ฆฌ์ ์์
– User Space์ Kernel ๊ฐ์๋ System Call์ ํตํด ์ํธ์์ฉ์ด ์ด๋ฃจ์ด์ง
– ์์ฉ ํ๋ก๊ทธ๋จ์ด ํ๋์จ์ด ์์์ ์ง์ ์ ์ดํ์ง ์๊ณ ์ปค๋์ ํตํด ๊ฐ์ ์ ์ผ๋ก ์์ฒญ