Linux

Linux Kernel ๋ฆฌ๋ˆ…์Šค ์ปค๋„ ๊ฐœ์š”

๐Ÿง Yon 2023. 3. 8. 07:00
๋ฐ˜์‘ํ˜•

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 ์–ธ์–ด ๋ฐ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๋ฅผ ์ด์šฉํ•˜๋ฉฐ ์ปค๋„์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ํŠน์ • ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐ, ์„ฑ๋Šฅ ์ตœ์ ํ™”, ํŠน์ • ํ•˜๋“œ์›จ์–ด๋‚˜ ์†Œํ”„ํŠธ์›จ์–ด ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๋Š” ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. 

๋ฐ˜์‘ํ˜•