๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • Dev Blog
CS/์šด์˜์ฒด์ œ

[์šด์˜์ฒด์ œ] ์Šค๋ ˆ๋“œ

by ์œ ์ง„์˜ 2023. 4. 14.
ํŒจ์ŠคํŠธ์บ ํผ์Šค ์šด์˜์ฒด์ œ ๊ฐ•์˜์™€ ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์šด์˜์ฒด์ œ ๊ต์žฌ์— ๋Œ€ํ•œ TIL์ž…๋‹ˆ๋‹ค.

 

์Šค๋ ˆ๋“œ๋ž€?

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

 

๋”ฐ๋ผ์„œ, ์šด์˜์ฒด์ œ์˜ ์ž‘์—… ๋‹จ์œ„๋ฅผ ํ”„๋กœ์„ธ์Šค๋ผ๊ณ  ํ•œ๋‹ค๋ฉด CPU์˜ ์ž‘์—… ๋‹จ์œ„๋ฅผ ์Šค๋ ˆ๋“œ๋ผ๊ณ  ํ•œ๋‹ค.

 

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

ํ”„๋กœ์„ธ์Šค๋ผ๋ฆฌ๋Š” ์•ฝํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค. ์•ฝํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ๊ฐ๊ฐ์˜ ํ”„๋กœ์„ธ์Šค๋Š” ๋…๋ฆฝ๋œ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ฐ€์ง€๋ฉฐ, ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค ๊ฐ„์—๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต์œ ๋ฅผ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ๋…๋ฆฝ์ ์ธ ํ”„๋กœ์„ธ์Šค๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ผ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ๋•Œ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ํ†ต์‹ (IPC)์„ ์ด์šฉํ•œ๋‹ค. 

 

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

 

 

์ •ํ™•ํ•˜๊ฒŒ ๋งํ•˜๋ฉด ์Šค๋ ˆ๋“œ๋“ค๋ผ๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ฝ”๋“œ, ๋ฐ์ดํ„ฐ, ํž™ ์˜์—ญ์„ ๊ณต์œ ํ•œ๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด ํ”„๋กœ์„ธ์Šค์˜ ์Šคํƒ ์˜์—ญ, ๋” ์ •ํ™•ํ•˜๊ฒŒ ๋งํ•˜์ž๋ฉด ์Šคํƒ ์˜์—ญ๊ณผ ํž™ ์˜์—ญ ์‚ฌ์ด์— ์Šค๋ ˆ๋“œ์˜ ์Šคํƒ ์˜์—ญ์„ ๋งŒ๋“ค์–ด๋‘”๋‹ค.

 

 

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

 

๊ด€๋ จ ์šฉ์–ด

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ

ํ•œ ํ”„๋กœ์„ธ์Šค ๋‚ด ์ž‘์—…์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋กœ ๋ถ„ํ• ํ•จ์œผ๋กœ์จ ์ž‘์—…์˜ ๋ถ€๋‹ด์„ ์ค„์ด๋Š” ํ”„๋กœ์„ธ์Šค ์šด์˜ ๊ธฐ๋ฒ•์ด๋‹ค.

 

CPU ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ

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

 

๋ฉ€ํ‹ฐํƒœ์Šคํ‚น

์šด์˜์ฒด์ œ๊ฐ€ ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์„ ์ด์šฉํ•˜์—ฌ CPU์— ์ž‘์—…์„ ์ค„ ๋•Œ ์‹œ๊ฐ„์„ ์ž˜๊ฒŒ ๋‚˜๋ˆ„์–ด ๋ฐฐ๋ถ„ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. ์ด๋•Œ, ์šด์˜์ฒด์ œ๊ฐ€ CPU์— ์ „๋‹ฌํ•˜๋Š” ์ž‘์—…์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹ˆ๋ผ ์Šค๋ ˆ๋“œ๋‹ค.

 

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์‹ฑ

์ปดํ“จํ„ฐ ํ•˜๋‚˜์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ CPU, ํ˜น์€ ํ•˜๋‚˜์˜ CPU ๋‚ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฝ”์–ด์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๋ฐฐ์ •ํ•˜์—ฌ ๋™์‹œ์— ์ž‘๋™ํ•˜๋Š” ์ž‘์—… ํ™˜๊ฒฝ์„ ๋งํ•œ๋‹ค.

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

 

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ

 

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์˜ ์žฅ์ 

์‘๋‹ต์„ฑ ํ–ฅ์ƒ
ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž‘์—…์„ ์•ˆ ํ•ด๋„ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ž‘์—…์„ ๊ณ„์†ํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋‹ค.

 

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

 

ํšจ์œจ์„ฑ ํ–ฅ์ƒ
์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ์˜ ๋‹จ์ ์ธ ๋ถˆํ•„์š”ํ•œ ์ž์›์˜ ์ค‘๋ณต์„ ๋ง‰์Œ์œผ๋กœ์จ ์‹œ์Šคํ…œ์˜ ํšจ์œจ์ด ํ–ฅ์ƒ๋œ๋‹ค.

 

๋‹ค์ค‘ CPU ์ง€์›
๋‹ค์ค‘ CPU๊ฐ€ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•˜์—ฌ CPU ์‚ฌ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜๊ณ  ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๋‹จ์ถ•๋œ๋‹ค.

 

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ์˜ ๋‹จ์ 

์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ์™€ ๊ตฌ๊ธ€ ํฌ๋กฌ ๋ธŒ๋ผ์šฐ์ €์˜ ์ฐจ์ด๋กœ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ์—์„œ ํ•˜๋‚˜์˜ ์ฐฝ์€ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ์ธ ๋ฐ˜๋ฉด, ๊ตฌ๊ธ€ ํฌ๋กฌ์—์„œ์˜ ํ•˜๋‚˜์˜ ์ฐฝ์€ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์ด๋‹ค. ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ๋Š” ํ•˜๋‚˜์˜ ์ฐฝ์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ ์ „์ฒด๊ฐ€ ์ข…๋ฃŒ๋˜๋Š” ๋ฐ˜๋ฉด, ๊ตฌ๊ธ€ ํฌ๋กฌ์€ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค.

 

์ด์ฒ˜๋Ÿผ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋Š” ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ์ž์›์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ „์ฒด ํ”„๋กœ์„ธ์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.

 

๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ๋ชจ๋ธ

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ปค๋„ ํ”„๋กœ์„ธ์Šค์™€ ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค๋กœ ๋‚˜๋‰˜๋“ฏ์ด ์Šค๋ ˆ๋“œ๋„ ์ปค๋„ ์Šค๋ ˆ๋“œ(kernel-level thread)์™€ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ(user-level thread)๋กœ ๋‚˜๋‰œ๋‹ค. ์ปค๋„ ์Šค๋ ˆ๋“œ๋Š” ์ปค๋„์ด ์ง์ ‘ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์Šค๋ ˆ๋“œ์ด๊ณ , ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(ex. C์–ธ์–ด์˜ pthread ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)์— ์˜ํ•ด ๊ตฌํ˜„๋œ ์ผ๋ฐ˜์ ์ธ ์Šค๋ ˆ๋“œ๋‹ค. ์ปค๋„ ์Šค๋ ˆ๋“œ์™€ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ์˜ ๋Œ€์‘ ๋ฐฉ์‹์€ 1 to N ๋ชจ๋ธ, 1 to 1 ๋ชจ๋ธ, M to N ๋ชจ๋ธ๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค.

 

์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ(1 to N ๋ชจ๋ธ)

์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๋Š” ์ปค๋„์ด ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๋“ค ์ง€์›ํ•˜์ง€ ์•Š์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ดˆ๊ธฐ์˜ ์Šค๋ ˆ๋“œ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค. ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๋Š” ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค. ์ด๋•Œ, ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ปค๋„์ด ์ง€์›ํ•˜๋Š” ์Šค์ผ€์ค„๋ง์ด๋‚˜ ๋™๊ธฐํ™” ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๋Œ€์‹  ๊ตฌํ˜„ํ•ด ์ค€๋‹ค. ์ปค๋„ ์ž…์žฅ์—์„œ๋Š” ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๊ฐ€ ๋ช‡ ๊ฐœ๋“  ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค. ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๋Š” ์‚ฌ์šฉ์ž ํ”„๋กœ์„ธ์Šค ๋‚ด์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์กด์žฌํ•˜์ง€๋งŒ ์ปค๋„์˜ ์Šค๋ ˆ๋“œ ํ•˜๋‚˜์™€ ์—ฐ๊ฒฐ๋˜๊ธฐ ๋•Œ๋ฌธ์— 1 to N ๋ชจ๋ธ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

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

 

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

 

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

 

์ด์™ธ์—๋„ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๋Š” ๋ณด์•ˆ์— ์ทจ์•ฝํ•˜๋‹ค. ์ปค๋„ ๋ ˆ๋ฒจ์—์„œ๋Š” ๊ณต์œ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ์žฅ์น˜๊ฐ€ ์žˆ์œผ๋‚˜ ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋ฅผ ์ปค๋„์ด ์•„๋‹Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ปค๋„ ์Šค๋ ˆ๋“œ(1 to 1 ๋ชจ๋ธ)

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

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

 

 

๐Ÿ’ก ๋” ๋‚˜์•„๊ฐ€๊ธฐ

C์–ธ์–ด์˜ pthread ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” pthread_create()๋ผ๋Š” ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์Šค๋ ˆ๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ–ˆ์œผ๋‹ˆ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋งŒ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋‚ด๋ถ€์ ์œผ๋กœ clone()์ด๋ผ๋Š” ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ์„ ์‚ฌ์šฉํ•ด์„œ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋ฅผ ๋งŒ๋“ ๋‹ค๊ณ  ํ•œ๋‹ค.

์ฆ‰, pthread_create()๋Š” ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ, ๋‘ ๋ฒˆ์งธ ์ธ์ž๋ฅผ NULL๋กœ ์ง€์ •ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ ๋ชจ๋ธ์ด ์„ ํƒ๋œ๋‹ค.

์ด ํ•จ์ˆ˜์˜ ๋‘ ๋ฒˆ์งธ ์ธ์ž์ธ pthread_attr_t ํƒ€์ž… ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•  ๊ฒƒ์ธ์ง€ ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•  ๊ฒƒ์ธ์ง€ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.
pthread_attr_setscope(&attr, PTHREAD_SCOPE_PROCESS)์„ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด๊ณ  pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM)์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

๋ฉ€ํ‹ฐ๋ ˆ๋ฒจ ์Šค๋ ˆ๋“œ(M to N ๋ชจ๋ธ)

์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ์™€ ์ปค๋„ ์Šค๋ ˆ๋“œ๋ฅผ ํ˜ผํ•ฉํ•œ ๋ฐฉ์‹์ด๋ฏ€๋กœ M to N ๋ชจ๋ธ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ์—์„œ๋Š” ์ปค๋„ ์Šค๋ ˆ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๋ณด๋‹ค ์ ๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ€ํ‹ฐ๋ ˆ๋ฒจ ์Šค๋ ˆ๋“œ์—์„œ๋Š” ์ปค๋„ ์Šค๋ ˆ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ์ ๋‹ค.

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

 

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

๋Œ“๊ธ€