๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ŒCS/OS

[OS] ์Šค๋ ˆ๋“œ

by dar0m! 2021. 4. 4.
์ด ๊ธ€์€ '๊ทธ๋ฆผ์œผ๋กœ ๋ฐฐ์šฐ๋Š” ๊ตฌ์กฐ์™€ ์›๋ฆฌ ์šด์˜์ฒด์ œ' ๊ฐœ์ •3ํŒ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ฒจ๋ถ€๋œ ์ด๋ฏธ์ง€๋Š” ์ฑ…์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ง์ ‘ ์ œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ชฉ์ฐจ

1. ์Šค๋ ˆ๋“œ์˜ ๊ฐœ๋…๊ณผ ์ƒํƒœ ๋ณ€ํ™”

  • ๊ฐœ๋…
  • ์Šค๋ ˆ๋“œ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„
  • ๋‹จ์ผ ์Šค๋ ˆ๋“œ์™€ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ
  • ์Šค๋ ˆ๋“œ์˜ ์ƒํƒœ ๋ณ€ํ™”
  • ์Šค๋ ˆ๋“œ์˜ ์ œ์–ด ๋ธ”๋ก

2. ์Šค๋ ˆ๋“œ์˜ ๊ตฌํ˜„

  • ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ
  • ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ
  • ํ˜ผํ•ฉํ˜• ์Šค๋ ˆ๋“œ

1. ์Šค๋ ˆ๋“œ์˜ ๊ฐœ๋…๊ณผ ์ƒํƒœ ๋ณ€ํ™”

๊ฐœ๋…

์Šค๋ ˆ๋“œ์˜ ๊ตฌ์กฐ

์ง€๊ธˆ๊นŒ์ง€ ์‚ดํŽด๋ณธ ํ”„๋กœ์„ธ์Šค๋Š” ๋‘ ๊ฐ€์ง€ ํŠน์„ฑ์ธ ์ž์›๊ณผ ์ œ์–ด๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ์ค‘ ์ œ์–ด๋งŒ ๋ถ„๋ฆฌํ•œ ์‹คํ–‰ ๋‹จ์œ„๋ฅผ ์Šค๋ ˆ๋“œ(thread)๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜๋Š” ์Šค๋ ˆ๋“œ ํ•œ ๊ฐœ ์ด์ƒ์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

์Šค๋ ˆ๋“œ๋“ค์€ ํ”„๋กœ์„ธ์Šค์˜ ์ง์ ‘ ์‹คํ–‰ ์ •๋ณด๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ํ”„๋กœ์„ธ์Šค ๊ด€๋ฆฌ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•œ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ(PC)์™€ ์Šคํƒ ํฌ์ธํ„ฐ(SP)๋“ฑ์„ ๋น„๋กฏํ•œ ์Šค๋ ˆ๋“œ '์‹คํ–‰ ํ™˜๊ฒฝ ์ •๋ณด(๋ฌธ๋งฅ ์ •๋ณด), ์ง€์—ญ ๋ฐ์ดํ„ฐ,์Šคํƒ'์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ€์ง€๋ฉด์„œ '์ฝ”๋“œ, ์ „์—ญ ๋ฐ์ดํ„ฐ, ํž™'์„ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์™€ ๊ณต์œ ํ•œ๋‹ค.

  • SP(Stack Pointer) : ์Šคํƒ ํฌ์ธํ„ฐ
  • SR(Sequence Register) : ์ˆœ์„œ์—ด ๋ ˆ์ง€์Šคํ„ฐ
  • PC(Program Counter) : ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ

์Šค๋ ˆ๋“œ ์ค‘์—์„œ ํ”„๋กœ์„ธ์Šค์˜ ์†์„ฑ ์ค‘ ์ผ๋ถ€๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๊ฒƒ์„ ๊ฒฝ๋Ÿ‰ ํ”„๋กœ์„ธ์Šค(LWP, Light Weight Process)๋ผ๊ณ  ํ•˜๋ฉฐ, ๋ฐ˜๋Œ€๋กœ ์Šค๋ ˆ๋“œ ํ•˜๋‚˜์— ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜์ธ ์ „ํ†ต์ ์ธ ๊ฒฝ์šฐ๋ฅผ ์ค‘๋Ÿ‰ ํ”„๋กœ์„ธ์Šค(HWP, Heavy Weight Process)๋ผ๊ณ  ํ•œ๋‹ค.

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—๋Š” ์ ์–ด๋„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜ ์žˆ๊ณ , ํ”„๋กœ์„ธ์Šค์—๋Š” ์Šค๋ ˆ๋“œ ํ•œ ๊ฐœ ์ด์ƒ ์žˆ๋‹ค.

์Šค๋ ˆ๋“œ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„

์Šค๋ ˆ๋“œ์˜ ์ฃผ์†Œ ๊ณต๊ฐ„

๊ฐ™์€ ํ”„๋กœ์„ธ์Šค์˜ ์Šค๋ ˆ๋“œ๋“ค์€ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋™์ผํ•œ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•œ๋‹ค.

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

  • ์‚ฌ์šฉ์ž ์‘๋‹ต์„ฑ ์ฆ๊ฐ€

    ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ๋ฅผ ์ ์šฉํ•œ ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์Šค๋ ˆ๋“œ ํ•œ ๊ฐœ๊ฐ€ ํŒŒ์ผ์„ ๋กœ๋”ฉํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋Š” ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค์˜ ์ž์›๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๊ณต์œ  ๊ฐ€๋Šฅ

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

    ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋ฌธ๋งฅ ๊ตํ™˜ํ•˜๋ฉด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ค„์–ด๋“ ๋‹ค.
  • ๋‹ค์ค‘ ์ฒ˜๋ฆฌ(๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ)๋กœ ์„ฑ๋Šฅ๊ณผ ํšจ์œจ ํ–ฅ์ƒ

    ๊ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์„œ์—์„œ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜์—ฌ ์„ฑ๋Šฅ๊ณผ ํšจ์œจ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

๋‹จ์ผ ์Šค๋ ˆ๋“œ์™€ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ

์Šค๋ ˆ๋“œ๊ฐ€ ํ•œ ๊ฐœ์ธ ๋‹จ์ผ ์Šค๋ ˆ๋“œ์™€ ์Šค๋ ˆ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

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

์Šค๋ ˆ๋“œ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

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

์Šค๋ ˆ๋“œ์˜ ์ƒํƒœ ๋ณ€ํ™”

์Šค๋ ˆ๋“œ์˜ ์ƒํƒœ ๋ณ€ํ™”

์Šค๋ ˆ๋“œ์™€ ํ”„๋กœ์„ธ์Šค๋Š” ๊ณตํ†ต์ ์ด ์ƒ๋‹นํžˆ ๋งŽ๋‹ค. ์Šค๋ ˆ๋“œ๋„ ํ”„๋กœ์„ธ์Šค์ฒ˜๋Ÿผ ์ค€๋น„, ์‹คํ–‰, ๋Œ€๊ธฐ(๋ณด๋ฅ˜), ์ข…๋ฃŒ ์ƒํƒœ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

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

๋ณดํ†ต ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค์˜ ์Šค๋ ˆ๋“œ๋„ ํ•จ๊ป˜ ์ƒ์„ฑํ•œ๋‹ค. ๋‹จ, ์Šค๋ ˆ๋“œ ์ƒ์„ฑ์—์„œ๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค์™€ ๊ณต์œ ํ•  ์ž์›์„ ์ดˆ๊ธฐํ™”ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ์Šคํƒ๊ณผ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ”„๋กœ์„ธ์Šค์˜ ์ƒ์„ฑ๊ณผ ์ข…๋ฃŒ๋ณด๋‹ค๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํ›จ์”ฌ ์ ๋‹ค.

 

์Šค๋ ˆ๋“œ์˜ ์ œ์–ด ๋ธ”๋ก(Thread Control Block)

์Šค๋ ˆ๋“œ ์ œ์–ด ๋ธ”๋ก

ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก(PCB)์— ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋“ฏ์ด ์Šค๋ ˆ๋“œ๋„ ์Šค๋ ˆ๋“œ ์ œ์–ด ๋ธ”๋ก(TCB)์— ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ํ•œ ๊ฐœ ์ด์ƒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ฒฐ๊ตญ ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก์€ ์Šค๋ ˆ๋“œ ์ œ์–ด ๋ธ”๋ก์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

์Šค๋ ˆ๋“œ ์ œ์–ด ๋ธ”๋ก์€ ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก๊ณผ ๊ฐ™์€ ๋ ˆ์ง€์Šคํ„ฐ ๊ฐ’, ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ, ์Šคํƒ ํฌ์ธํ„ฐ, ์Šค์ผ€์ค„๋ง ์ƒํƒœ ์™ธ์—๋„ ์Šค๋ ˆ๋“œ ID์™€ ํ•ด๋‹น ์Šค๋ ˆ๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ํฌ์ธํ„ฐ ๊ฐ™์€ ํŠน์ • ๊ฐ’๋„ ์ €์žฅํ•œ๋‹ค.

  • ์‹คํ–‰ ์ƒํƒœ : ํ”„๋กœ์„ธ์„œ ๋ ˆ์ง€์Šคํ„ฐ, ํ”„๋กœ๊ทธ๋žจ ์นด์šดํ„ฐ, ์Šคํƒ ํฌ์ธํ„ฐ
  • ์Šค์ผ€์ค„๋ง ์ •๋ณด : ์ƒํƒœ(์‹คํ–‰, ์ค€๋น„, ๋Œ€๊ธฐ), ์šฐ์„ ์ˆœ์œ„, ํ”„๋กœ์„ธ์„œ ์‹œ๊ฐ„
  • ๊ณ„์ • ์ •๋ณด
  • ์Šค์ผ€์ค„๋ง ํ์šฉ ๋‹ค์–‘ํ•œ ํฌ์ธํ„ฐ
  • ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก(PCB)์„ ํฌํ•จํ•˜๋Š” ํฌ์ธํ„ฐ

 

2. ์Šค๋ ˆ๋“œ์˜ ๊ตฌํ˜„

  • ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ : ๋‹ค๋Œ€์ผ(n:1) ๋งคํ•‘
  • ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ : ์ผ๋Œ€์ผ(1:1) ๋งคํ•‘
  • ํ˜ผํ•ฉํ˜• ์Šค๋ ˆ๋“œ : ๋‹ค๋Œ€๋‹ค(n:m) ๋งคํ•‘

์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ

์Šค๋ ˆ๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Pthread, Win32 ์Šค๋ ˆ๋“œ, ์ž๋ฐ” ์Šค๋ ˆ๋“œ API ๋“ฑ)๋ฅผ ์ด์šฉํ•˜์—ฌ ์ž‘๋™ํ•˜๊ณ , ์‚ฌ์šฉ์ž ์˜์—ญ์— ์žˆ๋Š” ์Šค๋ ˆ๋“œ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์ปค๋„ ์˜์—ญ์˜ ์Šค๋ ˆ๋“œ ํ•œ ๊ฐœ์— ๋‹ค๋Œ€์ผ(n:1)๋กœ ๋งคํ•‘๋œ๋‹ค. 

  • ์Šค๋ ˆ๋“œ์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ํ–‰์œ„๋ฅผ ์‚ฌ์šฉ์ž ์˜์—ญ์—์„œ ํ•˜๋ฏ€๋กœ ์ปค๋„์ด ์Šค๋ ˆ๋“œ์˜ ์กด์žฌ๋ฅผ ๋ชจ๋ฅธ๋‹ค.
  • ์Šค๋ ˆ๋“œ ๊ตํ™˜์— ์ปค๋„์ด ๊ฐœ์ž…ํ•˜์ง€ ์•Š์•„ ์ปค๋„์—์„œ ์‚ฌ์šฉ์ž ์˜์—ญ์œผ๋กœ ์ „ํ™˜ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
  • ์ปค๋„์€ ์Šค๋ ˆ๋“œ๊ฐ€ ์•„๋‹Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•œ ๋‹จ์œ„๋กœ ์ธ์‹ํ•˜๊ณ  ํ”„๋กœ์„ธ์„œ๋ฅผ ํ• ๋‹นํ•œ๋‹ค(ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ” ์œ ์ง€) : ๋‹ค๋Œ€์ผ ๋งคํ•‘

์žฅ์ 

์‚ฌ์šฉ์ž ์˜์—ญ์—์„œ ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ์ปค๋„์—์„œ ์Šค๋ ˆ๋“œ๋ฅผ ์ง€์›ํ•  ํ•„์š”๊ฐ€ ์—†์–ด ๋‹ค์Œ ์žฅ์ ์ด ์žˆ๋‹ค.

  • ์ด์‹์„ฑ์ด ๋†’์Œ : ์ปค๋„์— ๋…๋ฆฝ์ ์œผ๋กœ ์Šค์ผ€์ค„๋ง์„ ํ•  ์ˆ˜ ์žˆ์–ด ๋ชจ๋“  ์šด์˜์ฒด์ œ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ์Œ : ์Šค์ผ€์ค„๋ง์ด๋‚˜ ๋™๊ธฐํ™”๋ฅผ ํ•˜๋ ค๊ณ  ์ปค๋„์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ปค๋„ ์˜์—ญ์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ค„์–ด๋“ ๋‹ค.
  • ์œ ์—ฐํ•œ ์Šค์ผ€์ค„๋ง์ด ๊ฐ€๋Šฅ : ์ปค๋„์ด ์•„๋‹Œ ์Šค๋ ˆ๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์Šค๋ ˆ๋“œ ์Šค์ผ€์ค„๋ง์„ ์ œ์–ดํ•˜๋ฏ€๋กœ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋งž๊ฒŒ ์Šค์ผ€์ค„๋ง์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹จ์ 

  • ์‹œ์Šคํ…œ์˜ ๋™์‹œ์„ฑ์„ ์ง€์›ํ•˜์ง€ ์•Š์Œ : ์Šค๋ ˆ๋“œ๊ฐ€ ์•„๋‹Œ ํ”„๋กœ์„ธ์Šค ๋‹จ์œ„๋กœ ํ”„๋กœ์„ธ์„œ๋ฅผ ํ• ๋‹นํ•˜์—ฌ ๋‹ค์ค‘ ์ฒ˜๋ฆฌ ํ™˜๊ฒฝ์„ ๊ฐ–์ถฐ๋„ ์Šค๋ ˆ๋“œ ๋‹จ์œ„๋กœ ๋‹ค์ค‘ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์ง€ ๋ชปํ•œ๋‹ค. ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์Šค๋ ˆ๋“œ ํ•œ ๊ฐœ๊ฐ€ ๋Œ€๊ธฐ ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ์ด ์ค‘ ์–ด๋–ค ์Šค๋ ˆ๋“œ๋„ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•œ๋‹ค.

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

์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ

์ปค๋„(์šด์˜์ฒด์ œ)์—์„œ ์ง€์›ํ•˜๊ณ , ์‚ฌ์šฉ์ž ์˜์—ญ ์Šค๋ ˆ๋“œ๋ณ„๋กœ ์ปค๋„ ์˜์—ญ ์Šค๋ ˆ๋“œ๊ฐ€ ์ผ๋Œ€์ผ(1:1)๋กœ ๋งคํ•‘๋œ๋‹ค. ์œˆ๋„์šฐ NT, XP, 2000, ๋ฆฌ๋ˆ…์Šค, ์†”๋ผ๋ฆฌ์Šค 9 ์ด์ƒ ๋ฒ„์ „์˜ ์šด์˜์ฒด์ œ๊ฐ€ ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.

์ปค๋„์ด ์Šค๋ ˆ๋“œ์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ž‘์—…์„ ๊ด€๋ฆฌํ•œ๋‹ค(PCB์™€ TCB ์œ ์ง€). ์ปค๋„์ด ๊ฐœ์ž…ํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž ์˜์—ญ์—์„œ ์ปค๋„ ์˜์—ญ์œผ๋กœ ์ „ํ™˜์ด ํ•„์š”ํ•œ๋‹ค.

์žฅ์ 

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

๋‹จ์ 

  • ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ปค์ง : ์ปค๋„์ด ์ „์ฒด ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ ์ •๋ณด๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ปค์ง„๋‹ค.
  • ๋งŽ์€ ์ž์›์ด ํ•„์š” : ์Šค์ผ€์ค„๋ง๊ณผ ๋™๊ธฐํ™”๋ฅผ ์œ„ํ•ด ๋” ๋งŽ์€ ์ž์›์ด ํ•„์š”ํ•˜๋‹ค.

ํ˜ผํ•ฉํ˜• ์Šค๋ ˆ๋“œ

์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ์™€ ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋ฅผ ํ˜ผํ•ฉํ•œ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ์ž ์˜์—ญ์—์„œ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ์— ๋‹ค์ˆ˜์˜ ์ปค๋„ ์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค๋Œ€๋‹ค(n:m)๋กœ ๋งคํ•‘๋œ๋‹ค.

์‹œ์Šคํ…œ ํ˜ธ์ถœ์„ ํ•  ๋•Œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋ฅผ ์ค‘๋‹จํ•˜๋Š” ๋‹ค๋Œ€์ผ ๋งคํ•‘์˜ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ์™€ ์Šค๋ ˆ๋“œ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋Š” ์ผ๋Œ€์ผ ๋งคํ•‘์˜ ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ ๋ฌธ์ œ๋ฅผ ๊ทน๋ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
์ฆ‰, ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋Š” ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ์™€ ๋น„์Šทํ•œ ๊ฒฝ๋Ÿ‰ ํ”„๋กœ์„ธ์Šค(LWP)์— ๋‹ค๋Œ€๋‹ค(n:m)๋กœ ๋งคํ•‘๋˜๊ณ , ๊ฒฝ๋Ÿ‰ ํ”„๋กœ์„ธ์Šค๋Š” ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ์™€ ์ผ๋Œ€์ผ(1:1)๋กœ ๋งคํ•‘๋œ๋‹ค.  

ํ˜ผํ•ฉํ˜• ์Šค๋ ˆ๋“œ๋Š” ์Šค๋ ˆ๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ์ง€์›ํ•˜๋„๋ก ์ปค๋„์ด ๊ฒฝ๋Ÿ‰ ํ”„๋กœ์„ธ์Šค ์ˆ˜๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•˜์—ฌ ์‚ฌ์šฉ์‚ฌ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ์™€ ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค๋Œ€๋‹ค(n:m)๋กœ ๋งคํ•‘๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปค๋„ ์˜์—ญ์—์„œ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์ •๋„๋ฅผ ์ด ๋งคํ•‘์ด ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์–ด ๋ณ‘ํ–‰ ์‹คํ–‰์˜ ์˜๋ฏธ๊ฐ€ ์—†์„ ๋•Œ๋Š” ๋‹ค๋Œ€์ผ(n:1)๋งคํ•‘๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. 

๋˜ํ•œ, ์Šค๋ ˆ๋“œ ํ’€๋ง์„ ์ด์šฉํ•˜์—ฌ ์ผ๋Œ€์ผ(1:1) ๋งคํ•‘์œผ๋กœ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ์†”๋ผ๋ฆฌ์Šค 9 ์ด์ „ ๋ฒ„์ „๊ณผ ThreadFiber ํŒจํ‚ค์ง€๊ฐ€ ์žˆ๋Š” ์œˆ๋„์šฐ NT, 2000 ๋“ฑ ์šด์˜์ฒด์ œ๊ฐ€ ํ˜ผํ•ฉํ˜• ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.

์ค‘๋Ÿ‰ ํ”„๋กœ์„ธ์Šค์™€ ํŠน์ง•์ด ๋™์ผํ•˜๋ฉด์„œ๋„ ๋งค์šฐ ํšจ์œจ์ ์ด๋‹ค.

๐Ÿ“Œ์Šค๋ ˆ๋“œ ํ’€๋ง(thread pooling)

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

 

๋Œ“๊ธ€