[์šด์˜์ฒด์ œ] ํ”„๋กœ์„ธ์Šค vs ์“ฐ๋ ˆ๋“œ

๐Ÿงช Computer Science/Operating System

๋ฉ”๋ชจ๋ฆฌ๋ž€?

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



ํ”„๋กœ์„ธ์Šค์™€ ์“ฐ๋ ˆ๋“œ์˜ ์ฐจ์ด

ํ”„๋กœ์„ธ์Šค(Process)

  • ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ์™€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ธ์Šคํ„ด์Šค

  • ํŠน์ง•

    • ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ํ• ๋‹น๋ฐ›๋Š”๋‹ค.(๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์— ์ ‘๊ทผ X)
    • ํ”„๋กœ์„ธ์Šค๋“ค์€ ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด IPC๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค๋Š” ์ตœ์†Œ 1๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ(๋ฉ”์ธ ์“ฐ๋ ˆ๋“œ)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • PCB(Process Control Block, ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก)

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

์“ฐ๋ ˆ๋“œ(Thread)

  • ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ํ• ๋‹น๋ฐ›์€ ์ž์›์„ ์ด์šฉํ•ด ๋™์ž‘ํ•˜๋Š” ์‹คํ–‰ ๋‹จ์œ„
  • ํŠน์ง•
    • ์“ฐ๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ Stack๋งŒ ๋”ฐ๋กœ ํ• ๋‹น ๋ฐ›๊ณ , Code/Data/Heap ์˜์—ญ์€ ๊ณต์œ ํ•œ๋‹ค.
    • Stack์„ ๋ถ„๋ฆฌํ•˜๋Š” ์ด์œ ๋Š” Stack์—๋Š” ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋Š”๋ฐ, Stack์„ ๊ณต์œ ํ•˜๋ฉด LIFO ๊ตฌ์กฐ์— ์˜ํ•ด ์‹คํ–‰ ์ˆœ์„œ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰ ํ๋ฆ„์„ ์›ํ™œํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•จ์ด๋‹ค.)
    • ์“ฐ๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ž์›์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์“ฐ๋ ˆ๋“œ์— ์˜ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ฆ‰์‹œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค ๋‚ด์— ์กด์žฌํ•˜๋ฉฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ฐ›์€ ์ž์›์„ ์ด์šฉํ•˜์—ฌ ์‹คํ–‰๋œ๋‹ค.

  • Stack์„ ์“ฐ๋ ˆ๋“œ๋งˆ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ์ด์œ 

    • ์Šคํƒ์—๋Š” ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋Š”๋ฐ, ์Šคํƒ์„ ๊ณต์œ ํ•˜๋ฉด LIFO ๊ตฌ์กฐ์— ์˜ํ•ด ์‹คํ–‰ ์ˆœ์„œ๊ฐ€ ๋ณต์žกํ•ด์ง„๋‹ค. ์‹คํ–‰ ํ๋ฆ„์„ ์›ํ™œํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ์กฐ๊ฑด์œผ๋กœ ์“ฐ๋ ˆ๋“œ๋งˆ๋‹ค ๋…๋ฆฝ๋œ ์Šคํƒ์„ ํ• ๋‹นํ•œ๋‹ค.
  • PC Register๋ฅผ ์“ฐ๋ ˆ๋“œ๋งˆ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ์ด์œ 

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


์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜(Context Switch)

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