- ๋ช…๋ น์–ด์˜ ์‹คํ–‰

    1. ๊ธฐ๋ณธ ๋ช…๋ น์–ด ํ˜•์‹
      ๋ช…๋ น์–ด ํ˜•์‹์€ ์—ฐ์‚ฐ์ฝ”๋“œ์™€ ์˜คํผ๋žœ๋“œ๋กœ ๋‚˜๋‰œ๋‹ค. ์—ฐ์‚ฐ ์ฝ”๋“œ(operation code)๋Š” CPU๊ฐ€ ์ˆ˜ํ–‰ํ•  ์—ฐ์‚ฐ์„ ์ง€์ •ํ•˜๊ณ , ์˜คํผ๋žœ๋“œ(operand)๋Š” ๋ช…๋ น์–ด ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•œ๋‹ค. 

      ์—ฐ์‚ฐ์ฝ”๋“œ : ์ˆ˜ํ–‰ํ•  ์—ฐ์‚ฐ ์ง€์ •
      ์˜คํผ๋žœ๋“œ : ๋ช…๋ น์–ด ์‹คํ–‰์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ๋œ ์ฃผ์†Œ ์ง€์ •

    2. ๋ช…๋ น์–ด ์‚ฌ์ดํด
      CPU๊ฐ€ ํ•œ ๊ฐœ์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ „์ฒด ์ฒ˜๋ฆฌ ๊ณผ์ •์„ ๋ช…๋ น์–ด ์‚ฌ์ดํด์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋ช…๋ น์–ด ์‚ฌ์ดํด์€ ๋ช…๋ น์–ด ์ธ์ถœ ์‚ฌ์ดํด๊ณผ ๋ช…๋ น์–ด ์‹คํ–‰ ์‚ฌ์ดํด๋กœ ๋‚˜๋‰œ๋‹ค. 

      1. ๋ช…๋ น์–ด ์ธ์ถœ ์‚ฌ์ดํด
        CPU๊ฐ€ ์ฃผ๊ธฐ์–ต์žฅ์น˜๋กœ๋ถ€ํ„ฐ ๋ช…๋ น์–ด๋ฅผ ์ฝ์–ด์˜ค๋Š” ๋‹จ๊ณ„์ด๋‹ค. ์ด ๋‹จ๊ณ„๊ฐ€ ์•ž์„œ์„œ ๋งํ•œ CPU์˜ ๊ธฐ๋Šฅ์—์„œ ๋ช…๋ น์–ด ์ธ์ถœ ํ•ด๋‹นํ•œ๋‹ค.

      2. ๋ช…๋ น์–ด ์‹คํ–‰ ์‚ฌ์ดํด
        ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ ๋ช…๋ น์–ด ์ฝ”๋“œ๋ฅผ ํ•ด๋…(decode)ํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ถœ, ์ฒ˜๋ฆฌ, ์ €์žฅ์„(๋ฅผ) ํ•„์š”์— ๋”ฐ๋ผ ์‹คํ–‰ํ•œ๋‹ค. ์ด ๋‹จ๊ฒŒ์—์„œ ๋ช…๋ น์–ด ํ•ด๋…๊ณผ ํ•จ๊ป˜ ๋ช…๋ น์–ด์— ๋”ฐ๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

    3. ๊ฐ„์ ‘ ์‚ฌ์ดํด
      ์ธ์ถœํ•œ ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ ํ•„๋“œ ๋‚ด์šฉ์„ ์ด์šฉํ•ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ์˜ ์‹ค์ œ ์ฃผ์†Œ๋ฅผ ์ธ์ถœํ•˜๊ณ , ๋ช…๋ น์–ด ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ฃผ์†Œ ํ•„๋“œ์— ์ €์žฅํ•œ๋‹ค. 

    4. ์ธํ„ฐ๋ŸฝํŠธ ์‚ฌ์ดํด
      ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— CPU์˜ ํ˜„์žฌ ์ฒ˜๋ฆฌ ์ˆœ์„œ๋ฅผ ์ค‘๋‹จ์‹œํ‚ค๊ณ  ๋‹ค๋ฅธ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 

      ๊ฐœ์ธ์ ์œผ๋กœ ๋ช…๋ น์–ด ์‹คํ–‰ ๋ถ€๋ถ„์—์„œ ์ธํ„ฐ๋ŸฝํŠธ ์‚ฌ์ดํด์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”๋ฐ, ์ดํ›„์— ๋‚˜์˜ค๋Š” ๋ฌธ๋งฅ๊ตํ™˜(Context Switching) ๊ทธ๋ฆฌ๊ณ  ์˜ค๋ฒ„ํ—ค๋“œ(Overhead)์™€ ์—ฐ๊ด€์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

      ์ธํ„ฐ๋ŸฝํŠธ ์‚ฌ์ดํด์€ ์ธํ„ฐ๋ŸฝํŠธ ์š”๊ตฌ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด, CPU๋Š” ์›๋ž˜์˜ ํ”„๋กœ๊ทธ๋žจ  ์ˆ˜ํ–‰์„ ์ค‘๋‹จํ•˜๊ณ , ๋ณต๊ท€ํ•  ์ฃผ์†Œ ๋“ฑ์˜ ์ƒํƒœ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์ƒํƒœ์ •๋ณด๋ฅผ PCB(Process Control Block, ํ”„๋กœ์„ธ์Šค ๋””์Šคํฌ๋ฆฝํ„ฐ)์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ ์žˆ๋‹ค. 


      ์ดํ›„ ์ธํ„ฐ๋ŸฝํŠธ ๋ฐฑํ„ฐ๋ฅผ ์ฐพ์•„์„œ ์š”๊ตฌ๋œ ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด์„ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ๋Š” ๋ณดํ†ต ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์‚ฌ์šฉํ•œ๋‹ค. ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์ด๋ž‘ ๋ฉ”๋ชจ๋ฆฌ์— ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์„ ์œ„์น˜์‹œ์ผœ๋†“๊ณ  CPU์—์„œ ๋™์‹œ์— ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ์„ ์˜๋ฏธํ•œ๋‹ค.

      ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹œ์Šคํ…œ vs ๋‹ค์ค‘ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์ด ๋งค๋ฒˆ ํ—ท๊ฐˆ๋ฆฐ๋‹ค. 

      - ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹œ์Šคํ…œ : ํ•˜๋‚˜์˜ CPU, ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ( Context Switching ์ด ์žฆ์Œ )
      - ๋‹ค์ค‘ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ : ์—ฌ๋Ÿฌ ๊ฐœ์˜ CPU, ๋™์‹œ์— ์ž‘์—…์„ ์ฒ˜๋ฆฌ

    5. ์ธํ„ฐ๋ŸฝํŠธ ์ฒ˜๋ฆฌ
      ์ธํ„ฐ๋ŸฝํŠธ ์š”๊ตฌ๊ฐ€ ๋“ค์–ด์™”์„ ๋•Œ, CPU๋Š” ์–ด๋–ค ์žฅ์น˜๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์š”๊ตฌํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ํ•ด๋‹น ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด์ด ์œ„์น˜ํ•œ ์ธํ„ฐ๋ŸฝํŠธ ๋ฐฑํ„ฐ๋ฅผ ์ฐพ์•„, ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด์œผ๋กœ ๋ถ„๊ธฐํ•˜์—ฌ ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ์ž‘์—…์„ ์ˆ˜ํ–‰

      ์—ฌ๊ธฐ์„œ ๋ถ„๊ธฐ๋Š” CPU ๋ ˆ์ง€์Šคํ„ฐ ์„ธํŠธ์—์„œ ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(PC)๊ฐ€ ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋  ๋ชฉ์ ์ง€ ์ฃผ์†Œ๋กœ ๊ฐฑ์‹ ๋จ์„ ์˜๋ฏธํ•œ๋‹ค.

      (1) ํ˜„์žฌ ๋ช…๋ น์–ด ์‹คํ–‰์„ ๋๋‚ธ ์ฆ‰์‹œ, ๋‹ค์Œ์— ์‹คํ–‰ํ•  ๋ช…๋ น์–ด์˜ ์ฃผ์†Œ(PC : Program Counter ์˜ ๋‚ด์šฉ)๋ฅผ Stack์— ์ €์žฅํ•œ๋‹ค. 
      (2) ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด์„ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๊ทธ ๋ฃจํ‹ด์„ ์‹œ์ž‘ ์ฃผ์†Œ PC์— ์ ์žฌํ•œ๋‹ค.

[ ์ธํ„ฐ๋ŸฝํŠธ ์‚ฌ์ดํด ]

 

Posted by doubler
,