Skip to content

Latest commit

ย 

History

History
46 lines (27 loc) ยท 2.29 KB

Thread.md

File metadata and controls

46 lines (27 loc) ยท 2.29 KB

์Šค๋ ˆ๋“œ(Thread)๋ž€?

์–ดํ”Œ๋ฆฌํ…Œ์ด์…˜ ์‹คํ–‰์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ ๋‹จ์œ„

  • ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๊ฐ๊ฐ Stack๋งŒ ๋”ฐ๋กœ ํ• ๋‹น ๋ฐ›๊ณ  Code, Data, Heap ์˜์—ญ์€ ๊ณต์œ 
  • ์‹œ์Šคํ…œ ์Šค๋ ˆ๋“œ, ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ, ์ด๋ฒคํŠธ ์Šค๋ ˆ๋“œ ๋“ฑ์ด ์žˆ๋‹ค.
  • ์‹œ์Šคํ…œ์—์„œ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋ฉฐ, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฒซ๋ฒˆ์งธ ์Šค๋ ˆ๋“œ๋Š” ์‹œ์Šคํ…œ ์Šค๋ ˆ๋“œ์ด๋‹ค.
  • ์‚ฌ์šฉ์ž ์Šคํ…Œ๋“œ๋Š” ๋ฉ”์ธ์Šคํ…Œ๋“œ ์™ธ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ์ƒ์„ฑํ•œ ์Šค๋ ˆ๋“œ์ด๋‹ค.
  • ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ์˜ ๋ฉ”์ธ์Šค๋ ˆ๋“œ๋Š” ์ด๋ฒคํŠธ ์Šค๋ ˆ๋“œ๋ผ ๋ถ€๋ฅธ๋‹ค.
  • ์ด๋ฒคํŠธ ์Šค๋ ˆ๋“œ๋Š” ๋งˆ์šฐ์Šค ํด๋ฆญ์ด๋‚˜ ํ‚ค ์ž…๋ ฅ ๋“ค์ด ์žˆ๋‹ค.

์„ ์ ํ˜• ์Šค๋ ˆ๋”ฉ

  • ๋™์‹œ์— ๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” ์Šค๋ ˆ๋“œ ์ˆ˜๋Š” ์ปดํ“จํ„ฐ์— ์žˆ๋Š” ์ฝ”์–ด ๊ฐœ์ˆ˜๋กœ ์ œํ•œ๋œ๋‹ค.
  • OS์—์„œ๋Š” ์•„๋ฌด๋•Œ๋‚˜ ์Šค๋ ˆ๋“œ ์‹คํ–‰์„ ๋ฉˆ์ถ”๊ณ  ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  • ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์„ ์ ํ˜• ์Šค๋ ˆ๋”ฉ(Preemptive Threading)์ด๋ผํ•œ๋‹ค.

ํ˜‘๋ ฅํ˜• ๋ชจ๋ธ(Cooperative model)

  • ๋ฐ˜๋Œ€๋กœ ์–ด๋–ค ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฉˆ์ถ”๊ณ  ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋กœ ๋Œ์•„๊ฐ€๋ ค๋ฉด ๊ฐ•์ œ๊ฐ€ ์•„๋‹Œ ๋ช…์‹œ์ ์ธ ํ–‰๋™์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ.

์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ(Context Switching)

  • ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹œ์ž‘๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ ์Šค๋ ˆ๋“œ๋ฅผ ๋ฉˆ์ถ”๋Š” ๊ฒƒ.

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ์ด๋ž€?

  • ํ•˜๋‚˜์˜ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋กœ ๊ตฌ์„ฑํ•˜๊ณ  ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ

๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ๋™๊ธฐํ™” ๋ฌธ์ œ

์Šค๋ ˆ๋“œ ๊ฐ„์˜ ์ž์› ๊ณต์œ ๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฏ€๋กœ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ

๋ฉ€ํ‹ฐ ํ”„๋กœ์„ธ์Šค ๋Œ€์‹  ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ?

์ž์›์˜ ํšจ์œจ์„ฑ์ด ๋†’์•„์ง€๊ณ  ์ฒ˜๋ฆฌ ๋น„์šฉ ๋ฐ ์‘๋‹ต ์‹œ๊ฐ„์ด ์ค„์–ด๋“ ๋‹ค.

๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ด์šฉ ํšจ์œจ์ด ์˜ฌ๋ผ๊ฐ„๋‹ค.

  • ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ž์›์„ ํ• ๋‹นํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ์ด ์ค„์–ด๋“ฆ.
  • ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ๋ฌธ๋งฅ ๊ตํ™˜์‹œ CPU ๋ ˆ์ง€์Šคํ„ฐ ๊ต์ฒด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ RAM๊ณผ CPU ์‚ฌ์ด์˜ ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ์ดˆ๊ธฐํ™”๋˜๋ฏ€๋กœ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํผ
  • Stack ์ด์™ธ์˜ ๋ชจ๋“  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ํ†ต์‹  ๋น„์šฉ์ด ๋” ์ ์Œ
  • ๋ฌธ๋งฅ ๊ตํ™˜์‹œ Stack ์˜์—ญ๋งŒ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šค๋ ˆ๋“œ ๊ฐ„์˜ ์ „ํ™˜ ์†๋„๊ฐ€ ๋” ๋น ๋ฆ„