๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์Šคํ„ฐ๋””/์šด์˜์ฒด์ œ

[์šด์˜์ฒด์ œ์™€ ์ •๋ณด๊ธฐ์ˆ ์˜ ์›๋ฆฌ] 4์žฅ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ์กฐ์™€ ์‹คํ–‰

by moon101 2023. 3. 3.

1. ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ์กฐ์™€ ์ธํ„ฐ๋ŸฝํŠธ

ํ”„๋กœ๊ทธ๋žจ์ด CPU์—์„œ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ํ•ด๋‹น ๋ช…๋ น์„ ๋‹ด์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์ฃผ์†Œ ์˜์—ญ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. 

  • ํ”„๋กœ๊ทธ๋žจ ์ฃผ์†Œ ์˜์—ญ
    • ์ฝ”๋“œ(code) : ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ ํ•จ์ˆ˜๋“ค์˜ ์ฝ”๋“œ๊ฐ€ CPU์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์–ด ๋ช…๋ น ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜๋˜์–ด ์ €์žฅ๋จ
    • ๋ฐ์ดํ„ฐ(data) : ์ „์—ญ ๋ณ€์ˆ˜ ๋“ฑ ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ถ€๋ถ„
    • ์Šคํƒ(stack) : ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ํ˜ธ์ถœ๋œ ํ•จ์ˆ˜์˜ ์ˆ˜ํ–‰์„ ๋งˆ์น˜๊ณ  ๋ณต๊ท€ํ•  ์ฃผ์†Œ ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ

์ธํ„ฐ๋ŸฝํŠธ๋กœ ์ธํ•ด CPU๋ฅผ ๋นผ์•—๊ธด ์œ„์น˜๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ์ œ์–ด๋ธ”๋ก์— ์ €์žฅ๋œ๋‹ค. 

  • ํ”„๋กœ์„ธ์Šค ์ œ์–ด๋ธ”๋ก(PCB) : ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์‹œ์ ์—์„œ ๊ทธ ํ”„๋กœ๊ทธ๋žจ์˜ ์–ด๋Š ๋ถ€๋ถ„๊นŒ์ง€ ์ˆ˜ํ–‰ํ–ˆ๋Š”์ง€๋ฅผ ์ €์žฅํ•˜๊ณ , ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ํ›„ ํ”„๋กœ์„ธ์Šค ์ œ์–ด๋ธ”๋ก์— ์ €์žฅ๋œ ์ฃผ์†Œ๋ฅผ ๋ณต์›์‹œ์ผœ ์›๋ž˜ ์ˆ˜ํ–‰ํ•˜๋˜ ์ผ์„ ์žฌ๊ฐœํ•˜๊ฒŒ ๋œ๋‹ค. 

 

2. ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ์ž‘๋™ ๊ฐœ์š”

  • ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(Program Counter, PC) : CPU๊ฐ€ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ ˆ์ง€์Šคํ„ฐ

 

3. ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰

ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰(program execution)๋˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์€ 2๊ฐ€์ง€์˜ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. 

  • 1. ๋””์Šคํฌ์— ์กด์žฌํ•˜๋˜ ์‹คํ–‰ํŒŒ์ผ์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋œ๋‹ค๋Š” ์˜๋ฏธ์ด๊ณ ,
  • 2. ํ”„๋กœ๊ทธ๋žจ์ด CPU๋ฅผ ํ• ๋‹น๋ฐ›๊ณ  ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ๋ผ๋Š” ๋œป์ด๋‹ค. 

๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ(virtual memory) / ๋…ผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ(logical memory)

  • ํ”„๋กœ๊ทธ๋žจ๋งˆ๋‹ค ๋…์ž์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ๊ณต๊ฐ„์ด๋ฉฐ, ์‹ค์ œ ๋ฌผ๋ฆฌ์  ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ์™€ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ ํ”„๋กœ๊ทธ๋žจ๋งˆ๋‹ค ๋…์ž์ ์ธ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒ ๋ถ€๋ฅธ๋‹ค. 

์ปค๋„

  • ์ปค๋„์˜ ์ฝ”๋“œ : CPU, ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ์˜ ์ž์›์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ถ€๋ถ„๊ณผ ์‚ฌ์šฉ์ž์—๊ฒŒ ํŽธ๋ฆฌํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ถ€๋ถ„์ด ์ฃผ๋ฅผ ์ด๋ฃฌ๋‹ค. ์‹œ์Šคํ…œ ์ฝœ ๋ฐ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ถ€๋ถ„์„ ํฌํ•จํ•œ๋‹ค. 
  • ์ปค๋„์˜ ๋ฐ์ดํ„ฐ : ๊ฐ์ข… ์ž์›์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค. CPU์™€ ๋ฉ”๋ชจ๋ฆฌ์™€ ๊ฐ™์€ ํ•˜๋“œ์›จ์–ด ์ž์›์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ํ˜„์žฌ ์ˆ˜ํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. 
    • PCB๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. PCB๋Š” ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ, CPU ์‚ฌ์šฉ ์ •๋ณด, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ์ •๋ณด ๋“ฑ์„ ์œ ์ง€ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. 
  • ์ปค๋„์˜ ์Šคํƒ : ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ๋ณต๊ท€ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ํ˜„์žฌ ์ˆ˜ํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๋ณ„๋„์˜ ์Šคํƒ์„ ๋‘์–ด ๊ด€๋ฆฌํ•œ๋‹ค. 

 

4. ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜

์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜

  • ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•œ ํ•จ์ˆ˜
  • ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ ์˜์—ญ์— ๊ธฐ๊ณ„์–ด ๋ช…๋ น ํ˜•ํƒœ๋กœ ์กด์žฌํ•œ๋‹ค. 
  • ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋  ๋•Œ์— ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์— ํฌํ•จ๋˜๋ฉฐ, ํ•จ์ˆ˜ํ˜ธ์ถœ ์‹œ์—๋„ ์ž์‹ ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์— ์žˆ๋Š” ์Šคํƒ์„ ์‚ฌ์šฉํ•œ๋‹ค. 

์ปค๋„ํ•จ์ˆ˜

  • ์šด์˜์ฒด์ œ ์ปค๋„์˜ ์ฝ”๋“œ์— ์ •์˜๋œ ํ•จ์ˆ˜
  • ์‹œ์Šคํ…œ ์ฝœ ํ•จ์ˆ˜ : ์‚ฌ์šฉ์ž ํ”„๋กœ๊ทธ๋žจ์ด ์šด์˜์ฒด์ œ์˜ ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด ํ˜ธ์ถœ
  • ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ํ•จ์ˆ˜ : ๊ฐ์ข… ํ•˜๋“œ์›จ์–ด ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ CPU์˜ ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด ๋ฐœ์ƒ์‹œํ‚ค๋Š” ํ•จ์ˆ˜
  • ์šด์˜์ฒด์ œ ์ปค๋„์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์— ์ฝ”๋“œ๊ฐ€ ์ •์˜๋œ๋‹ค. 
  • printf() ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ•จ์ˆ˜์ง€๋งŒ ํŠน๊ถŒ๋ช…๋ น์ธ ์ž…์ถœ๋ ฅ์„ ํ•„์š”๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— printf()๋‚ด์—์„œ ์ปค๋„ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ์„ ํฌํ•จํ•œ๋‹ค. 

 

5. ์ธํ„ฐ๋ŸฝํŠธ

์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ์ค‘์— ๋˜ ๋‹ค๋ฅธ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ 

  • ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ ๋ฌธ์ œ๋กœ ์›์น™์ ์œผ๋กœ๋Š” ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋‚˜, ์ธํ„ฐ๋ŸฝํŠธ๋งˆ๋‹ค ์ค‘์š”๋„๊ฐ€ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ƒ๋Œ€์ ์œผ๋กœ ๋‚ฎ์€ ์ค‘์š”๋„๋ฅผ ๊ฐ€์ง„ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋„์ค‘์— ์ค‘์š”๋„๊ฐ€ ๋” ๋†’์€ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ๋ฝํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. 
  • ๊ทธ๋Ÿด ๊ฒฝ์šฐ, ํ˜„์žฌ ์ฒ˜๋ฆฌ ์ค‘์ด๋˜ ์ธํ„ฐ๋ŸฝํŠธ ์ฝ”๋“œ์˜ ์ˆ˜ํ–‰ ์ง€์ ์„ ์ €์žฅํ•˜๊ณ  ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๊ทธ๋‹ค์Œ ์ €์žฅ๋œ ์ฃผ์†Œ๋กœ ๋ณต๊ท€ํ•ด ์ด์ „์— ์ˆ˜ํ–‰ํ•˜๋˜ ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. 

 

6. ์‹œ์Šคํ…œ ์ฝœ

์‹œ์Šคํ…œ ์ฝœ์€ ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜ํ˜ธ์ถœ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ž์‹ ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„ ๋‚ด์—์„œ ํ˜ธ์ถœ์ด ์ด๋ฃจ์–ด์ง€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ปค๋„์ด๋ผ๋Š” ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„์— ์กด์žฌํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. 

  • ์‹œ์Šคํ…œ ์ฝœ์€ ํ•จ์ˆ˜ํ˜ธ์ถœ์„ ์œ„ํ•ด ์ž์‹ ์˜ ์ธํ„ฐ๋ŸฝํŠธ ๋ผ์ธ์— ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์„ธํŒ…ํ•˜๋Š” ๋ช…๋ น์„ ์‚ฌ์šฉํ•œ๋‹ค. 

 

7. ํ”„๋กœ์„ธ์Šค์˜ ๋‘ ๊ฐ€์ง€ ์‹คํ–‰ ์ƒํƒœ

  • ์‚ฌ์šฉ์ž๋ชจ๋“œ์—์„œ์˜ ์‚ดํ–‰ ์ƒํƒœ(user mode running)
  • ์ปค๋„๋ชจ๋“œ์—์„œ์˜ ์‹คํ–‰ ์ƒํƒœ(kernel mode running)

๋Œ“๊ธ€