๋ฐ˜์‘ํ˜•

์˜ค๋ฒ„ํ—ค๋“œ


์˜ค๋ฒ„ํ—ค๋“œ๋Š” ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ„์ ‘ ํ˜น์€ ์ถ”๊ฐ€์ ์œผ๋กœ ํ•„์š”ํ•œ ์ž‘์—…์ด๋‚˜ ๋น„์šฉ์„ ์˜๋ฏธํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋น„์šฉ์€ ์ปดํ“จํ„ฐ์˜ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„, ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ์„ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฒ˜๋ฆฌ์‹œ๊ฐ„ 10์ดˆ๊ฐ€ ํ•„์š”ํ•œ A ๊ธฐ๋Šฅ์— ์•ˆ์ „์„ฑ์„ ์œ„ํ•œ ๋ถ€๊ฐ€๊ธฐ๋Šฅ B๋ฅผ ์ถ”๊ฐ€ํ•œ ๊ฒฐ๊ณผ ์ด 15์ดˆ๊ฐ€ ์†Œ์š”๋๋‹ค๋ฉด, ์˜ค๋ฒ„ํ—ค๋“œ๋Š” 5์ดˆ๊ฐ€ ๋œ๋‹ค.

 

์˜ค๋ฒ„ํ—ค๋“œ๋Š” ํ˜„์‹ค ์„ธ๊ณ„์—์„œ ๋งˆํŠธ์— ์žฅ๋ณด๋Ÿฌ ๊ฐ€๋Š” ๊ฒƒ์— ๋น„์œ ํ•˜๋ฉด ๋” ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. 10๋งŒ ์›์–ด์น˜ ๋ฌผ๊ฑด์„ ๊ตฌ๋งคํ•˜๊ธฐ(๋ฉ”์ธ ์ž‘์—… A) ์œ„ํ•ด ๋งˆํŠธ๊นŒ์ง€ ๊ฐ€๋Š” ์ผ(๋ถ€๊ฐ€ ์ž‘์—… B)์€ ์žฅ๋ณด๊ธฐ์—์„œ ํฐ ๋ถ€๋ถ„์„ ์ฐจ์ง€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

ํ•˜์ง€๋งŒ ๊ปŒ ํ•˜๋‚˜๋งŒ ์‚ฌ๊ธฐ ์œ„ํ•ด(์ž‘์—… A) ๋งˆํŠธ๊นŒ์ง€ ๊ฐ„๋‹ค๋ฉด, ๋งˆํŠธ๊นŒ์ง€ ์ด๋™ํ•˜๋Š” ์ผ(๋ถ€๊ฐ€ ์ž‘์—… B)์€ ์žฅ๋ณด๊ธฐ์—์„œ ์ƒ๋Œ€์ ์œผ๋กœ ํฐ ๋ถ€๋ถ„์„ ์ฐจ์ง€ํ•œ๋‹ค. ์ด๋•Œ ๊ปŒ์„ ์‚ฌ๊ธฐ ์œ„ํ•ด ๋งˆํŠธ๊นŒ์ง€ ๊ฐ€๋Š” ๊ฑด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋„ˆ๋ฌด ํฌ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ธ๊ณ„์—์„  ํ•จ์ˆ˜ ํ˜ธ์ถœ, ๋„คํŠธ์›Œํฌ ๋ฐ์ดํ„ฐ ์ „์†ก ๋“ฑ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

  1. ํ•จ์ˆ˜ ํ˜ธ์ถœ : ํ˜ธ์ถœ ์Šคํƒ ์ƒ์„ฑ, ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณต์‚ฌ, ์ง€์—ญ๋ณ€์ˆ˜ ํ• ๋‹น ๋“ฑ
  2. ๋ฐ์ดํ„ฐ ์ „์†ก : ๋ฐ์ดํ„ฐ๋ฅผ ํŒจํ‚ท์œผ๋กœ ๋ถ„๋ฆฌ, ํŒจํ‚ท ํ—ค๋” ์ถ”๊ฐ€ ๋“ฑ
  3. ํ”„๋กœ์„ธ์Šค : ์‹คํ–‰ ์Šค๋ ˆ๋“œ(Thread)๋ณด๋‹ค ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํฌ๋‹ค๊ณ  ํ‘œํ˜„

 

ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ


๐Ÿ’ก TL;DR

  • ํ”„๋กœ์„ธ์Šค : ์ž์›์„ ํ• ๋‹น ๋ฐ›๋Š” ์ž‘์—… ๋‹จ์œ„ (์€ํ–‰์œผ๋กœ ๋น„์œ )
  • ์Šค๋ ˆ๋“œ : ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ฐ›์€ ์ž์›์„ ์ด์šฉํ•˜๋Š” ์‹คํ–‰ ๋‹จ์œ„ (์€ํ–‰ ์ฐฝ๊ตฌ๋กœ ๋น„์œ )
  • ์ฐธ๊ณ ๋กœ Thread๋Š” ์‹ค์ด๋ž€ ๋œป์ด๋‹ค

 

ํ”„๋กœ์„ธ์Šค๋Š” ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์‹œ์Šคํ…œ ์ž์›์„ ํ• ๋‹น๋ฐ›๋Š” ์ž‘์—…์˜ ๋‹จ์œ„๋กœ, ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜์–ด ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์˜ ๋…๋ฆฝ์ ์ธ ์ธ์Šคํ„ด์Šค๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์‹œ์Šคํ…œ ์ž์›์—” ์•„๋ž˜ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค.

  1. CPU Time : ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉํ•œ ์‹œ๊ฐ„
  2. ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ: Code, Data, Stack, Heap ๊ตฌ์กฐ
  3. ํŒŒ์ผ : ํŒŒ์ผ์— ์ ‘๊ทผํ•ด์„œ ์ฝ๊ธฐ / ์“ฐ๊ธฐ
  4. ์ž…์ถœ๋ ฅ(I/O) ์žฅ์น˜ : ํ‚ค๋ณด๋“œ, ๋ชจ๋‹ˆํ„ฐ, ํ”„๋ฆฐํ„ฐ ๋“ฑ

 

์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น ๋ฐ›์€ ์ž์›์„ ์ด์šฉํ•˜๋Š” ์‹คํ–‰ ๋‹จ์œ„๋‹ค. ๊ฐ ์Šค๋ ˆ๋“œ๋Š” Register / Stack๋งŒ ํ• ๋‹น๋ฐ›๊ณ , Code / Data ๊ฐ™์€ ์˜์—ญ์€ ๊ณต์œ ํ•œ๋‹ค. 1๊ฐœ ํ”„๋กœ์„ธ์Šค์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉด CPU๋Š” ๋ ˆ์ง€์Šคํ„ฐ์— ์ €์žฅ๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

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

 

์ฆ‰, ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ์ƒ์„ฑ, ์ข…๋ฃŒ, ์ „ํ™˜ ์‹œ๊ฐ„์ด ์งง๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ํšจ์œจ์ ์ด๋‹ค.

 

์Šค๋ ˆ๋“œ ๊ตฌ์กฐ — ์ถœ์ฒ˜ goodgid

 

๋ ˆํผ๋Ÿฐ์Šค


 


๊ธ€ ์ˆ˜์ •์‚ฌํ•ญ์€ ๋…ธ์…˜ ํŽ˜์ด์ง€์— ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”
๋ฐ˜์‘ํ˜•