os_basic - KimTaebin-ai/study_posts GitHub Wiki

์šด์˜์ฒด์ œ๋Š” ๋ฌด์—‡์„ ํ•˜๋Š”๊ฐ€?

์šด์˜์ฒด์ œ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ(Application Programs)๊ณผ ํ•˜๋“œ์›จ์–ด(Hardware) ์‚ฌ์ด์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ํ†ตํ•ด์„œ ์–ด๋–ค ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•˜๋ฉด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ์šด์˜์ฒด์ œ์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๊ณ  ํ•˜๋“œ์›จ์–ด๋ฅผ ์กฐ์ž‘ํ•ด๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ „๋‹ฌ์„ ๋ฐ›์€ ์šด์˜์ฒด์ œ๋Š” ์„œ๋น„์Šค์— ๋งž๋Š” ํ•˜๋“œ์›จ์–ด(CPU, ๋ฉ”๋ชจ๋ฆฌ, HDD, ๋ชจ๋‹ˆํ„ฐ ๋“ฑ)๋ฅผ ์ž‘๋™์‹œ์ผœ ์„œ๋น„์Šค๋ฅผ ์™„์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž๊ฐ€ ๊ณ„์‚ฐ๊ธฐ๋ผ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ "3+4"์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์ด ์š”์ฒญ์„ ๋ฐ›์€ ๊ณ„์‚ฐ๊ธฐ๋Š” ํ”„๋กœ๊ทธ๋žจ๋‚ด์—์„œ ์ˆ˜์‹์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ช…๋ น์–ด๋ฅผ ์šด์˜์ฒด์ œ์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ๋Š” CPU, ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ์˜ ํ•˜๋“œ์›จ์–ด๋ฅผ ์กฐ์ž‘ํ•˜์—ฌ 7์ด๋ผ๋Š” ๋‹ต์„ ๋„์ถœํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์œ„์™€ ๊ฐ™์€ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•˜์—ฌ ์šด์˜์ฒด์ œ๋ฅผ ํ•œ๋ฌธ์žฅ์œผ๋กœ ์ •๋ฆฌํ•˜๋ฉด ์šด์˜์ฒด์ œ๋Š” ํ•˜๋“œ์›จ์–ด๋ฅผ ์ œ์–ดํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ด๊ณ  ์œ ์ €์™€ ํ•˜๋“œ์›จ์–ด ์‚ฌ์ด์—์„œ ์ค‘๊ณ„์ž๋กœ์จ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค

์šด์˜์ฒด์ œ์˜ ์ •์˜

์šด์˜์ฒด์ œ๋ฅผ ํ•œ๋ฌธ์žฅ์œผ๋กœ ์ •์˜ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ปดํ“จํ„ฐ ์œ„์—์„œ ํ•ญ์ƒ ์‹คํ–‰๋˜๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ
  • Kernel๋กœ๋„ ์ •์˜
  • ํ•˜๋“œ์›จ์–ด๋ฅผ ์ œ์–ดํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด
  • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ•˜๋“œ์›จ์–ด ์‚ฌ์ด์˜ ์ค‘๊ณ„์ž

image

์œ„์˜ ๊ทธ๋ฆผ์€ ํด๋ž˜์‹ํ•œ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. 1๊ฐœ ์ด์ƒ์˜ CPU๋กœ ๊ตฌ์„ฑ๋˜์—ˆ๊ณ  ๋ฒ„์Šค(Bus)๋ฅผ ํ†ตํ•ด์„œ ์—ฐ๊ฒฐ๋œ ๊ธฐ๊ธฐ ์ œ์–ด๊ธฐ(Device Controller)๋กœ ์—ฐ๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. CPU๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ๋ช…๋ น์–ด๋“ค์„ ์ €์žฅํ•˜๊ณ  ๊ธฐ๊ธฐ ์ œ์–ด๊ธฐ๋ฅผ ํ†ตํ•ด์„œ ํ•˜๋“œ์›จ์–ด์ ์ธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ธํ„ฐ๋ŸฝํŠธ(Interrupt)

์ธํ„ฐ๋ŸฝํŠธ๋ž€ ํ•˜๋“œ์›จ์–ด๊ฐ€ ์ž‘๋™์ค‘์— CPU์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ์‹ ํ˜ธ(signal)์ž…๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ๋ฒ„์Šค(system bus)๋ฅผ ํ†ตํ•ด์„œ CPU์—๊ฒŒ ์‹ ํ˜ธ๋ฅผ ์ „์†กํ•จ์œผ๋กœ์จ ์–ด๋Š ์‹œ๊ฐ„์ด๋˜ ํ•˜๋“œ์›จ์–ด๋Š” ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

์˜ˆ๋ฅผ ๋“ค์–ด ํ‚ค๋ณด๋“œ "A"ํ‚ค๋ฅผ ๋ˆ„๋ฅธ๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ์— A ๋ˆ„๋ฆ„ ๋ช…๋ น์–ด๊ฐ€ ์ ์žฌ๋˜๊ณ  CPU์—๊ฒŒ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. (Interrupt)

ํฐ ๋…ธ์ด๋งŒ ๊ตฌ์กฐ(von Neumann architecture)

ํฐ ๋…ธ์ด๋งŒ ๊ตฌ์กฐ๋ž€ ํฐ๋…ธ์ด๋งŒ์ด๋ผ๋Š” ์‚ฌ๋žŒ์ด ์ œ์‹œํ•œ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์žฅ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ํ˜„์žฌ ์ปดํ“จํ„ฐ์˜ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ๊ตฌ์กฐ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํฐ ๋…ธ์ด๋งŒ ๊ตฌ์กฐ์˜ ํ”„๋กœ๊ทธ๋žจ ๋‚ด์žฅ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

image

1. Fetch (๋ช…๋ น์–ด ์ธ์ถœ)

CPU์˜ ์ œ์–ด ์žฅ์น˜(Control Unit)๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ(RAM)์—์„œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด๋ฅผ ๋ฐ์ดํ„ฐ ๋ฒ„์Šค๋ฅผ ํ†ตํ•ด ๊ฐ€์ ธ์˜ค๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(PC)๊ฐ€ ํ˜„์žฌ ์‹คํ–‰ํ•ด์•ผ ํ•  ๋ช…๋ น์–ด์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ , ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ์ฝ์–ด์˜ต๋‹ˆ๋‹ค.

2. Decode (๋ช…๋ น์–ด ํ•ด์„)

์ธ์ถœ๋œ ๋ช…๋ น์–ด๋ฅผ CPU๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ์–ด ์žฅ์น˜์—์„œ ํ•ด์„ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ๋ช…๋ น์–ด์˜ ์—ฐ์‚ฐ ์ฝ”๋“œ(OPCODE)๋ฅผ ๋ถ„์„ํ•˜์—ฌ ํ•„์š”ํ•œ ์—ฐ์‚ฐ ์œ ํ˜• ๋ฐ ๋ฐ์ดํ„ฐ ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

3. Calculation/Control (๊ณ„์‚ฐ ๋ฐ ์ œ์–ด)

์ œ์–ด ์žฅ์น˜๋Š” ํ•ด์„๋œ ๋ช…๋ น์–ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹คํ–‰ ๋‹จ๊ณ„๋ฅผ ์ค€๋น„ํ•˜๋ฉฐ, ์‚ฐ์ˆ  ๋…ผ๋ฆฌ ์—ฐ์‚ฐ ์žฅ์น˜(ALU)์— ํ•„์š”ํ•œ ์ œ์–ด ์‹ ํ˜ธ๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๋™์‹œ์— ๋ช…๋ น์–ด์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ๋‚˜ ๋ ˆ์ง€์Šคํ„ฐ์—์„œ ๊ฐ€์ ธ์˜ฌ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

4. Execute (์‹คํ–‰)

ALU๊ฐ€ ๋ช…๋ น์–ด์— ์ง€์ •๋œ ์—ฐ์‚ฐ(์‚ฐ์ˆ  ์—ฐ์‚ฐ, ๋…ผ๋ฆฌ ์—ฐ์‚ฐ ๋“ฑ)์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์–ด ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋˜๊ฑฐ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์— ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

5. Store (์ €์žฅ)

์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํ„ฐ ๋ฒ„์Šค๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜, ๋‹ค์Œ ์ž‘์—…์„ ์œ„ํ•ด ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ๋ช…๋ น์–ด ์‹คํ–‰์ด ์™„๋ฃŒ๋˜๋ฉด, ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ๊ฐ€ ๊ฐฑ์‹ ๋ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ๊ตฌ์กฐ(I/O Structure)

์šด์˜์ฒด์ œ ์ฝ”๋“œ์˜ ๋งŽ์€ ๋ถ€๋ถ„์ด ์ž…์ถœ๋ ฅ(Input/Output)์„ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ทธ๋ฆผ์€ ํ˜„๋Œ€ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ทธ๋ฆผ์ž…๋‹ˆ๋‹ค.

image

  • CPU๋Š” ๋””๋ฐ”์ด์Šค(ํ‚ค๋ณด๋“œ, ๋ชจ๋‹ˆํ„ฐ ๋“ฑ)์—๊ฒŒ ์ž…์ถœ๋ ฅ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  • CPU์™€ ๋””๋ฐ”์ด์Šค๋Š” ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋””๋ฐ”์ด์Šค์—์„œ CPU์—๊ฒŒ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • CPU๋Š” ๋ฉ”๋ชจ๋ฆฌ๋กœ๋ถ€ํ„ฐ ๋ช…๋ น์–ด๋ฅผ ์ธ์ถœํ•˜๊ณ  ์‹คํ–‰ํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋””๋ฐ”์ด์Šค์™€ ๋ฉ”๋ชจ๋ฆฌ๋Š” DMA(Direct Memory Access) ๋ผ๋Š” ๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

DMA(Direct Memory Access)๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

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

์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ๋ถ€ํ’ˆ๋“ค์˜ ์ •์˜

  • CPU : ๋ช…๋ น์–ด๋“ค์„ ์‹คํ–‰์‹œํ‚ค๋Š” ํ•˜๋“œ์›จ์–ด, ํ”„๋กœ์„ธ์„œ์˜ ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜
  • Processor : ํ”„๋กœ์„ธ์„œ๋Š” CPU์˜ ์ผ๋ถ€๋ถ„์œผ๋กœ์„œ CPU์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์‹ค์ œ ์นฉ(chip)์„ ๊ฐ€๋ฆฌํ‚ด
  • Core : ์ฝ”์–ด๋Š” CPU ๋‚ด๋ถ€์˜ ์‹คํ–‰ ์—”์ง„์œผ๋กœ ์‹ค์ œ๋กœ ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•จ. ์ฝ”์–ด๋“ค์€ CPU ๋‚ด๋ถ€์— ์œ„์น˜ํ•˜์—ฌ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•˜๊ฑฐ๋‚˜ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

image

๋Œ€์นญํ˜• ๋‹ค์ค‘ ์ฒ˜๋ฆฌ(Symmetric Multiprocessing, SMP)

  • ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ์„ธ์„œ ๋˜๋Š” ์ฝ”์–ด๊ฐ€ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ์™€ ์‹œ์Šคํ…œ ๋ฒ„์Šค์— ์ ‘๊ทผํ•˜์—ฌ ์ž‘๋™ํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜
  • SMP ์‹œ์Šคํ…œ์—์„œ๋Š” ๊ฐ ํ”„๋กœ์„ธ์„œ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ ๋ชจ๋“  ํ”„๋กœ์„ธ์„œ๊ฐ€ ๊ณต์œ ๋œ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ

image

๋ฉ€ํ‹ฐ ์ฝ”์–ด ์„ค๊ณ„(Multi-core design)

  • ํ•˜๋‚˜์˜ CPU ์นฉ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ฝ”์–ด๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ปดํ“จํ„ฐ ๊ตฌ์กฐ
  • ๋ฉ€ํ‹ฐ ์ฝ”์–ด๋Š” ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ณ , ๋‹ค์ˆ˜์˜ ์ž‘์—…์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

image

๋ฉ€ํ‹ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ(Multiprogramming)

๋ฉ€ํ‹ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ๋ฉ”๋ชจ๋ฆฌ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ ์žฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ์„ ์˜ฌ๋ ค๋‘์–ด์„œ CPU๊ฐ€ ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋Œ€๊ธฐ์ค‘์ผ๋•Œ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜ํ–‰์‹œ์ผœ ํšจ์œจ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค.

image

ํ”„๋กœ๊ทธ๋žจ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

ํ”„๋กœ๊ทธ๋žจ์ด๋ž€ ๋ช…๋ น์–ด์˜ ์ง‘ํ•ฉ(Set of Instruction)์ด๋ผ๊ณ  ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐํƒœ์Šคํ‚น=๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ(Multitasking=Multiprocessing)์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

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

์œ„์—์„œ ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์ด๋ž€ ํ”„๋กœ๊ทธ๋žจ์„ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค๊ณ ๋Š” ํ•˜์˜€์ง€๋งŒ ์ •ํ™•ํžˆ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ฐฉ๊ฐ์„ ์ผ์œผํ‚ฌ ์ •๋„๋กœ CPU๊ฐ€ ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” CPU๊ฐ€ ๋™์‹œ์— ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋นˆ๋ฒˆํ•˜๊ฒŒ ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ๊ต์ฒดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๋“ค์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

CPU๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ๋น ๋ฅด๊ฒŒ ๊ต์ฒดํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” CPU ์Šค์ผ€์ค„๋ง์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. CPU ์Šค์ผ€์ค„๋ง์ด๋ž€ ๋งŒ์•ฝ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๊ฐ™์€ ์‹œ๊ฐ„์— ์‹คํ–‰๋  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด ์šด์˜์ฒด์ œ๋Š” ๋‹ค์Œ์— ์‹คํ–‰๋  ํ”„๋กœ๊ทธ๋žจ์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์šด์˜์ฒด์ œ๊ฐ€ ๋‹ค์Œ์— CPU์˜ ์˜ํ•ด ์‹คํ–‰๋  ํ”„๋กœ๊ทธ๋žจ์„ ๊ณ ๋ฅด๋Š” ๊ฒƒ์„ CPU ์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋Œ€ํ‘œ์ ์ธ CPU ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์œผ๋กœ ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ(time-sharing) ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ๊ฐ€ ์ปดํ“จํ„ฐ ์ž์›์„ ์ผ์ • ์‹œ๊ฐ„๋™์•ˆ ๋ถ„ํ• ํ•˜๊ณ  CPU๋Š” ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐฐ๋ถ„๋ฐ›์€ ์‹œ๊ฐ„๋™์•ˆ๋งŒ ์ˆ˜ํ–‰์‹œํ‚ค๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์„ ์ˆ˜ํ–‰์‹œํ‚ค๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์šด์˜์ฒด์ œ ์—ฐ์‚ฐ์˜ 2๊ฐ€์ง€ ๋ชจ๋“œ

์œ ์ € ๋ชจ๋“œ(user mode)

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ์„ ์ œํ•œ์ ์œผ๋กœ ๋‘๊ณ , ํ”„๋กœ๊ทธ๋žจ์˜ ์ž์›์— ํ•จ๋ถ€๋กœ ์นจ๋ฒ”ํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ชจ๋“œ
  • ์œ ์ € ๋ชจ๋“œ์—์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋“ฑ์˜ ํ–‰๋™์„ ํ•  ์ˆ˜ ์žˆ์Œ

์ปค๋„ ๋ชจ๋“œ(kernel mode)

  • ์ปค๋„ ๋ชจ๋“œ๋ž€ ์ž˜๋ชป๋œ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์ด ์ž˜๋ชป ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“œ์ž…๋‹ˆ๋‹ค.
  • ์ปค๋„ ๋ชจ๋“œ๋Š” ๋ชจ๋“  ์ž์›(๋“œ๋ผ์ด๋ฒ„, ๋ฉ”๋ชจ๋ฆฌ, CPU ๋“ฑ)์— ์ ‘๊ทผ, ๋ช…๋ น์„ ํ•  ์ˆ˜ ์žˆ์Œ

image