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

 

์Šค๋ ˆ๋“œ๋ž€ โ“

ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋“ค๊ณผ ์ž์›์€ ๊ณต์œ ํ•˜๋ฉด์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ œ์–ด๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์Šค๋ ˆ๋“œ์ด๋‹ค. ์Šค๋ ˆ๋“œ๋Š” Thread ID, ์ œ์–ด์ •๋ณด, ์ง€์—ญ ๋ฐ์ดํ„ฐ, ์ง€์—ญ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์Šคํƒ์ด ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ๋˜๋ฉฐ ์ž์›์„ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Light Weight Process(LWP)๋ผ๊ณ  ๋ถˆ๋ฆฐ๋‹ค. ์Šค๋ ˆ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋ฉด CPU๋ฅผ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด ํ”„๋กœ์„ธ์„œ ํ™œ์šฉ์˜ ๊ธฐ๋ณธ๋‹จ์œ„์ด๋‹ค.

 

ํ•œ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„

๊ฐ™์€ ํ”„๋กœ์„ธ์Šค์˜ ์Šค๋ ˆ๋“œ๋“ค์€ ๋™์ผํ•œ ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ณต์œ ํ•˜๊ณ  ์žˆ์–ด์„œ ํž™, ๋ฐ์ดํ„ฐ, ์ฝ”๋“œ์˜ ์ž์›์„ ๊ณต์œ ํ•˜๋ฉฐ ๊ฐ๊ฐ์˜ Stack pointer์™€ Program Counter์„ ๊ฐ–๋Š”๋‹ค. ์ด๋ฅผ ํ†ตํ•ด CPU์˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ  ์—ฌ๋Ÿฌ ์ œ์–ด๊ฐ€ ๋™์‹œ์— ๊ฐ€๋Šฅํ•˜๋‹ค.

 

โœŒ ์Šค๋ ˆ๋“œ์˜ ์žฅ์ 

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

โœŒ ์Šค๋ ˆ๋“œ์˜ ๊ตฌํ˜„

1๏ธโƒฃ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ

์Šค๋ ˆ๋“œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์Šค๋ ˆ๋“œ์˜ ์ƒ์„ฑ๊ณผ ์Šค์ผ€์ค„๋ง์„ ๋‹ด๋‹นํ•˜๋ฉฐ ๋Œ€ํ‘œ์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ๋Š” POSIX threds, Win32 threads, Java threads ๋“ฑ์ด ์žˆ๋‹ค. 

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

 

 

2๏ธโƒฃ ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ

OS(์ปค๋„)์ด ์ง์ ‘ ๊ด€๋ฆฌํ•˜๋ฉฐ ์ปค๋„ ์˜์—ญ์—์„œ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ์— Context switching ๋“ฑ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํฌ๋‹ค.

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

 

์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ์™€ ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ๋ฅผ ํ˜ผํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜๋Š” ์—†์„๊นŒ โ“

ํ˜ผํ•ฉํ˜• ์Šค๋ ˆ๋“œ(n:m)

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

 

 

 

์ฐธ๊ณ ์ž๋ฃŒ

www.youtube.com/watch?v=YlnvCIZQDkw&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=7

 

+ Recent posts