Skip to content

Latest commit

ย 

History

History
142 lines (107 loc) ยท 8.38 KB

Thread.md

File metadata and controls

142 lines (107 loc) ยท 8.38 KB

์Šค๋ ˆ๋“œ(Thread)

ํ”„๋กœ์„ธ์Šค๋ž€?

  • ํ”„๋กœ์„ธ์Šค๋ž€ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์ด๋ฉฐ, ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ์šด์˜์ฒด์ œ์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ ์ค‘์ธ ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ์˜ ๊ฐœ๋…

  • ์Šค๋ ˆ๋“œ๋ž€ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋…๋ฆฝ์ ์ธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์—๋Š” ํ•œ ๊ฐœ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์กด์žฌํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋กœ์„ธ์Šค์—์„œ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๊ฐ€์งˆ ๋•Œ, ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค(multi-threaded process)๋ผ๊ณ  ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • ์Šค๋ ˆ๋“œ์—์„œ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๊ณ ์œ ํ•œ ๊ฐ’๋“ค(์ƒํƒœ, ํฌ์ธํ„ฐ, ๋ฉ”๋ชจ๋ฆฌ ๋“ฑ)์€ ๊ณต์œ ํ•˜๊ณ , ์ด์™ธ์˜ ๊ฐ’(๋ ˆ์ง€์Šคํ„ฐ, pc๊ฐ’, stack)์€ ๋ณ„๋„๋กœ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

  • ํ”„๋กœ์„ธ์Šค ๋‚ด CPU ์ˆ˜ํ–‰ ๋‹จ์œ„๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ, ์ฆ‰ ์Šค๋ ˆ๋“œ๋Š” CPU๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹จ์œ„
  • process๋ฅผ ๋ณ„๋„๋กœ ๋‘๋Š” ๊ฒƒ๋ณด๋‹ค thread๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋‘๋Š” ๊ฒƒ์ด ๊ฐ€๋ณ๊ธฐ์— lightweight process ๋ผ๊ณ ๋„ ํ‘œํ˜„ํ•œ๋‹ค.
  • cf. ์ „ํ†ต์ ์ธ process๋Š” heavyweight process

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

  • ์ฃผ์†Œ๊ณต๊ฐ„์€ code + data + stack ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, process ๋งˆ๋‹ค ์ฃผ์†Œ๊ณต๊ฐ„์ด ์กด์žฌํ•œ๋‹ค.

  • ๋™์ผํ•œ ์ผ์„ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ๋•Œ, ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ณต๊ฐ„์ด ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ์ด๋Š” ๋ฉ”๋ชจ๋ฆฌ(์ž์›) ๋‚ญ๋น„์ด๋‹ค.

  • ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ณต๊ฐ„์„ ํ•˜๋‚˜๋งŒ ๋„์–ด๋†“๊ณ  ํ˜„์žฌ ๊ฐ ํ”„๋กœ์„ธ์Šค๋งˆ๋‹ค ๊ฐ€๋ฆฌํ‚ค๋Š” ๋‹ค๋ฅธ ๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

  • ์ฆ‰ process๋Š” ํ•˜๋‚˜๋งŒ ๋„์–ด๋†“๊ณ (code, data, stack), ํ˜„์žฌ cpu๊ฐ€ ์–ด๋Š ๋ถ€๋ถ„์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š”๊ฐ€(pc๊ฐ€ ์–ด๋”œ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š”๊ฐ€) pc๋งŒ ์—ฌ๋Ÿฌ ๊ฐœ ๋‘๋ฉด ๋œ๋‹ค.

  • => process ํ•˜๋‚˜์— cpu ์ˆ˜ํ–‰๋‹จ์œ„๋งŒ ์—ฌ๋Ÿฌ ๊ฐœ ๋‘๋Š” ๊ฒƒ์„ ์Šค๋ ˆ๋“œ ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

  • ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š”๊ฑด ์ตœ๋Œ€ํ•œ ๊ณต์œ ํ•˜๊ณ  (๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ณต๊ฐ„, PCB), ๋ณ„๋„๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์€ cpu ์ˆ˜ํ–‰๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋“ค(pc, register, stack)์ด๋‹ค.

  • PCB ๋‚ด์— ์Šค๋ ˆ๋“œ ๋ถ€๋ถ„์—์„œ pc์™€ register๋ฅผ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์ด์œ ๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ cpu ์ˆ˜ํ–‰๋‹จ์œ„(์Šค๋ ˆ๋“œ)๋งˆ๋‹ค ํ˜„์žฌ register์— ์–ด๋–ค ๊ฐ’์„ ๋„ฃ๊ณ , pc๊ฐ€ code ์–ด๋Š ๋ถ€๋ถ„์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์‹คํ–‰ํ•˜๊ณ  ์žˆ์—ˆ๋Š”๊ฐ€๋ฅผ ๋ณ„๋„๋กœ ์œ ์ง€ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  • ์ฃผ์†Œ๊ณต๊ฐ„์—์„œ ์Šค๋ ˆ๋“œ๋งˆ๋‹ค stack์ด ์žˆ๋Š” ์ด์œ ๋Š” ์ฃผ์†Œ๊ณต๊ฐ„ ๋‚ด์˜ code ์˜์—ญ์—์„œ code๋ฅผ ์‹คํ–‰ํ•˜๋‹ค๊ฐ€ ํ•จ์ˆ˜ํ˜ธ์ถœ์ด ๋˜๊ณ  return์ด ๋  ๋•Œ๊นŒ์ง€ ๊ทธ์™€ ๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ stack์— ์Œ“๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ cpu ์ˆ˜ํ–‰๋‹จ์œ„๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด stack๋„ ๋ณ„๋„๋กœ ๋‘”๋‹ค.

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

  • ํ”„๋กœ์„ธ์Šค๋Š” ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์ž์›์„ ํ• ๋‹น๋ฐ›๋Š” ์ž‘์—…์˜ ๋‹จ์œ„์ด๊ณ ,
  • ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ฐ›์€ ์ž์›์„ ์ด์šฉํ•˜๋Š” ์‹คํ–‰์˜ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ์˜ ๊ตฌ์„ฑ

  • Thread ๋งˆ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ๋“ค

    • program counter
      • ์Šค๋ ˆ๋“œ๋Š” cpu๋ฅผ ํ• ๋‹น๋ฐ›๋‹ค๊ฐ€ ๋ชจ๋‘ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์Šค์ผ€์ฅด๋Ÿฌ์— ์˜ํ•ด ์„ ์  ๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์Šค๋ ˆ๋“œ๋Š” ์–ด๋Š๋ถ€๋ถ„๊นŒ์ง€ ์ˆ˜ํ–‰ํ–ˆ๋Š”์ง€ ๊ธฐ์–ตํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— pc๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
    • register set
    • stack space

  • Thread๊ฐ€ ๋™๋ฃŒ Thread์™€ ๊ณต์œ ํ•˜๋Š” ๋ถ€๋ถ„ (=task)
    cf. ํ•˜๋‚˜์˜ process์— thread๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋‹ค๋ฉด, task๋Š” ํ•œ ๊ฐœ ์žˆ๋Š” ๊ตฌ์กฐ

    • code section
    • data section
    • OS resources

์Šค๋ ˆ๋“œ์˜ ์ƒ๋ช… ์ฃผ๊ธฐ

  1. Runnable(์ค€๋น„ ์ƒํƒœ) ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰ ํ•˜๊ธฐ ์œ„ํ•ด ์ค€๋น„ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ cpu๋Š” ํ• ๋‹น๋˜์–ด ์žˆ์ง€ ์•Š๊ณ , ์‹คํ–‰์„ ์œ„ํ•ด ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  2. Running(์‹คํ–‰ ์ƒํƒœ) ์Šค๋ ˆ๋“œ๊ฐ€ cpu์ ์œ ๊ถŒ์„ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
  3. Dead(์ข…๋ฃŒ ์ƒํƒœ) ์Šค๋ ˆ๋“œ๊ฐ€ ๋ชจ๋‘ ์‹คํ–‰์„ ๋งˆ์นœ ์™„๋ฃŒ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
  4. Block(์ง€์—ฐ ์ƒํƒœ) ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ—น ๋„์ค‘ ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด cpu์ ์œ ๊ถŒ์„ ๋นผ์•—๊ฒจ block๋˜์–ด์žˆ๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

PCB

Single and Multithreaded processes

Thread์˜ ์žฅ์ 

  • ์‘๋‹ต์„ฑ(Responsiveness)
    ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค์ผ ๋•Œ ํ•˜๋‚˜์˜ ์Šค๋ ˆ๋“œ๊ฐ€ block ์ƒํƒœ์ด๋”๋ผ๋„ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰๋˜์–ด ๋น ๋ฅธ ์‘๋‹ต์„ฑ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

eg) multi-threaded web if one thread is blocked (eg. network, img resources๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด blocked๋œ ์ƒํƒœ) another thread continues (eg. display, img๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ด๋ฏธ ๋ถˆ๋Ÿฌ์˜จ HTMl์„ ๋ Œ๋”๋งํ•œ๋‹ค. -> user์˜ ๋‹ต๋‹ตํ•จ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ, ์‘๋‹ต์„ฑ ์ธก๋ฉด ์žฅ์ , ์Šค๋ ˆ๋“œ๋ฅผ ํ™œ์šฉํ•œ ๋น„๋™๊ธฐ์‹)

  • ์ž์› ๊ณต์œ (Resources Sharing) n threads can share binary code, data, resources of the process. ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‘๊ธฐ๋ณด๋‹ค cpu ์ˆ˜ํ–‰๋‹จ์œ„(์Šค๋ ˆ๋“œ)๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋‘๋ฉด ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋‹ค.

  • ๊ฒฝ์ œ์„ฑ(Economy)

    • process creating๊ณผ CPU switching(context switching)์€ overhead๊ฐ€ ์ƒ๋‹นํžˆ ํฌ๋‹ค. (cpu ๊ด€๋ จ ์ •๋ณด์ €์žฅ, cache memory flush ๋“ฑ ์ž‘์—… ์ˆ˜ํ–‰ ํ•„์š”)
    • ๋ฐ˜๋ฉด์— thread์˜ ๊ฒฝ์šฐ process ๋‚ด๋ถ€์—์„œ thread ๊ฐ„์˜ switching์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์€ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ž‘๊ณ  ๊ฐ„๋‹จํ•˜๋‹ค. (๊ณต์œ ํ•˜๋Š” ๋ถ€๋ถ„์ด ์กด์žฌํ•ด์„œ ๋ฌธ๋งฅ์ด ๋น„์Šทํ•˜๋ฏ€๋กœ)

  • Utilization of MP Architectures
    cf. MP : Multi processors

    • cpu๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ์— ํ•ด๋‹นํ•˜๋ฉฐ ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์„œ์—์„œ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค.

Context Switching ?

์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ณ€๊ฒฝ์ด ๋˜๋ฉด, CPU๋‚ด์˜ ๋ ˆ์ง€์Šคํ„ฐ๋“ค์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์–ด์•ผ ๋˜๋Š”๋ฐ, ๋ณ€๊ฒฝ๋˜๊ธฐ ์ „ ํ”„๋กœ์„ธ์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ ํ”„๋กœ์„ธ์Šค switching์˜ ๊ฒฝ์šฐ ๊ณต์œ ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๊ธฐ๋•Œ๋ฌธ์— ๋น„์šฉ์ด ๋งŽ์ด ๋“ค์ง€๋งŒ, ์Šค๋ ˆ๋“œ switching์˜ ๊ฒฝ์šฐ ๊ณต์œ ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๋‹ด์ด ๋œํ•˜๋‹ค.

์Šค๋ ˆ๋“œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

์ž ๊น! ์ปค๋„์ด ๋ฌด์—‡์ธ๊ฐ€์š”?

์ปค๋„์€ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์ฃผํ•˜๋Š” ์šด์˜์ฒด์ œ์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์œผ๋กœ, ์ปดํ“จํ„ฐ์— ์†ํ•œ ์ž์›๋“ค์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ค‘์žฌํ•ฉ๋‹ˆ๋‹ค. ์ž์›ํ• ๋‹น, ํ•˜๋“œ์›จ์–ด ์ธํ„ฐํŽ˜์ด์Šค, ๋ณด์•ˆ, ์ธํ„ฐ๋ŸฝํŠธ ์ œ์–ด, ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ ๋“ฑ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

1. User-Level Thread

  • ์ปค๋„ ์˜์—ญ์˜ ์ƒ์œ„์—์„œ ์ง€์›๋˜๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ˆ˜์ค€์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ—ค ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.
  • Process ๋‚ด ์Šค๋ ˆ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์šด์˜์ฒด์ œ ์ปค๋„์€ ๋ชจ๋ฅด๊ณ , user program์ด ์‚ฌ์šฉ์ž ์ˆ˜์ค€์—์„œ ์Šค์Šค๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ์ปค๋„์ด ๋ณผ ๋•Œ๋Š” ์ผ๋ฐ˜์ ์ธ process๋กœ ๋ณด์ด๋Š”๋ฐ process ๋ณธ์ธ์ด ๋‚ด๋ถ€์—์„œ cpu ์ˆ˜ํ–‰ ๋‹จ์œ„๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋‘๋ฉด์„œ ๊ด€๋ฆฌ๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌํ˜„ ์ƒ์˜ ์ œ์•ฝ์ ์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ์ 

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

2. Kernel-Level Thread

์šด์˜์ฒด์ œ๊ฐ€ ์ง€์›ํ•˜๋Š” ์Šค๋ ˆ๋“œ ๊ธฐ๋Šฅ์œผ๋กœ ๊ตฌํ˜„๋˜๋ฉฐ, ์ปค๋„์ด ์Šค๋ ˆ๋“œ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์žฅ์ 

  • ์ปค๋„์ด ์Šค๋ ˆ๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฏ€๋กœ ํ”„๋กœ์„ธ์Šค ๋‚ด ์Šค๋ ˆ๋“œ๋“ค์ด ๋ณ‘ํ–‰์œผ๋กœ ์ˆ˜ํ–‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ‘ํ–‰์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ํ•œ๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์ค‘๋‹จ๋˜๋„ ๋‚˜๋จธ์ง€ ์Šค๋ ˆ๋“œ๋“ค์€ ๊ณ„์† ์ˆ˜ํ–‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ 

  • ์‚ฌ์šฉ์ž ์Šค๋ ˆ๋“œ๋ณด๋‹ค ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ ์†๋„๊ฐ€ ๋Š๋ฆฝ๋‹ˆ๋‹ค.

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

User-Level Thread์™€ Kernel-Level Thread๋ฅผ ํ•ฉ์นœ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋‘ ๋ฐฉ์‹์˜ ๋‹จ์ ์„ ๊ทน๋ณตํ•ฉ๋‹ˆ๋‹ค.
์žฅ์ 

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

๋ฉด์ ‘ ๋Œ€๋น„

  1. ์Šค๋ ˆ๋“œ ์ƒ์„ฑ๊ณผ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€?
  2. PC Register๋ฅผ Thread๋งˆ๋‹ค ๋…๋ฆฝ์ ์œผ๋กœ ํ• ๋‹นํ•˜๋Š” ์ด์œ ๋Š”?
  3. ์ปค๋„ ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ์™€ ์‚ฌ์šฉ์ž ์ˆ˜์ค€ ์Šค๋ ˆ๋“œ์˜ ์žฅ๋‹จ์ ์€?