CS/OS

๋ฐ˜ํšจ๊ฒฝ [์šด์˜์ฒด์ œ] 6๊ฐ•, 7๊ฐ• - Process 2

๋™๊น€ 2023. 5. 14. 04:47

Thread

๐Ÿ’ก “A thread(or lightweight process) is a basic unit of CPU utilization”

  • ์“ฐ๋ ˆ๋“œ - ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜์— CPU ์ˆ˜ํ–‰ ๋‹จ์œ„๋งŒ ์—ฌ๋Ÿฌ ๊ฐœ ๋‘๋Š” ๊ฒƒ
  • Thread์˜ ๊ตฌ์„ฑ(๊ฐ ์“ฐ๋ ˆ๋“œ๋งˆ๋‹ค ๋”ฐ๋กœ ๊ฐ€์ง€๋Š” ๋ถ€๋ถ„)
    • Program Counter
    • Register Set
    • Stack Space
  • Thread๊ฐ€ ๋™๋ฃŒ Thread์™€ ๊ณต์œ ํ•˜๋Š” ๋ถ€๋ถ„(=Task)
    • Code Section
    • Data Section
    • OS Section
  • ์ „ํ†ต์ ์ธ ๊ฐœ๋…์˜ heavyweight process๋Š” ํ•˜๋‚˜์˜ thread๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” task๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
with Thread / Program Counter์™€ ๋ ˆ์ง€์Šคํ„ฐ ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋‘์–ด์„œ ์ฝ”๋“œ์˜ ์‹คํ–‰๋ถ€๋ถ„์„ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ž„ → ์Šคํƒ๋„ ๋ณ„๋„๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ณต๊ฐ„์„ ๊ณต์œ  / ํ”„๋กœ์„ธ์Šค ์ƒํƒœ๋„ ๊ณต์œ  / ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ข… ์ž์›๋“ค๋„ ๊ณต์œ / CPU์ˆ˜ํ–‰๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๋งŒ ๊ณต์œ ํ•˜์ง€ ์•Š์Œ

 

์“ฐ๋ ˆ๋“œ ์‚ฌ์šฉ์‹œ ์žฅ์ 

  • ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ํƒœ์Šคํฌ ๊ตฌ์กฐ์—์„œ๋Š” ํ•˜๋‚˜์˜ ์„œ๋ฒ„ ์Šค๋ ˆ๋“œ๊ฐ€ blocked(wating) ์ƒํƒœ์ธ ๋™์•ˆ์—๋„ ๋™์ผํ•œ ํƒœ์Šคํฌ ๋‚ด์˜ ๋‹ค๋ฅธ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์‹คํ–‰(Running)๋˜์–ด ๋น ๋ฅธ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋™์ผํ•œ ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹ค์ค‘ ์“ฐ๋ ˆ๋“œ๊ฐ€ ํ˜‘๋ ฅํ•˜์—ฌ ๋†’์€ ์ฒ˜๋ฆฌ์œจ(throughput)๊ณผ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.(์ฃผ์†Œ๊ณต๊ฐ„=๋ฉ”๋ชจ๋ฆฌ ๋ฅผ ๊ณต์œ ํ•˜๋ฏ€๋กœ ์ž์›์ ˆ์•ฝ์„ ํ•  ์ˆ˜ ์žˆ์–ด ํšจ์œจ์ด ์ข‹์Œ!)
  • ์“ฐ๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ‘๋ ฌ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.(MP์—์„œ)

 

Single and Multithreaded Processes

 

์“ฐ๋ ˆ๋“œ์˜ ์žฅ์ 

1. Responsiveness(์‘๋‹ต์„ฑ)

  • eg) multi-threaded Web - if one thread is blocked (eg. Network) another thread continues (eg. Display) (๋น„๋™๊ธฐ์‹ ์ž…์ถœ๋ ฅ)

2. Resource Sharing(์ž์› ๊ณต์œ )

  • n threads can share binary code, data, resource of the process

3. Economy(๊ฒฝ์ œ์„ฑ)

  • creating & CPU switching thread(rather than a process)
  • Solaris์˜ ๊ฒฝ์šฐ ์œ„ ๋‘๊ฐ€์ง€ overhead๊ฐ€ ๊ฐ๊ฐ 30๋ฐฐ, 5๋ฐฐ(ํ”„๋กœ์„ธ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€)

4. Utilization of MP Architectures(CPU๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์žˆ๋Š” ํ™˜๊ฒฝ์—์„œ๋งŒ)

MP = multi-processor

  • each thread may be running in parallel on a different processor

 

์“ฐ๋ ˆ๋“œ์˜ ๊ตฌํ˜„

Some are supported by kernel ⇒ Kernel Threads

  • ์ปค๋„ ์“ฐ๋ ˆ๋“œ๋Š” ์ปค๋„์ด ์“ฐ๋ ˆ๋“œ๋ฅผ ๊ด€๋ฆฌ(๋ช‡๊ฐœ ์žˆ๋Š”์ง€, ๋‹ค๋ฅธ ์“ฐ๋ ˆ๋“œ๋กœ ๋„˜๊ธฐ๋Š”๊ฒƒ๋„ ์ปค๋„์ด ๋„˜๊น€)
  • Windows 95/98/NT
  • Solaris
  • Digital UNIX, Mach

Others are supported by library ⇒ User Threads

  • ์œ ์ € ์“ฐ๋ ˆ๋“œ์˜ ๊ฒฝ์šฐ๋Š” ์šด์˜์ฒด์ œ(์ปค๋„)๊ฐ€ ์“ฐ๋ ˆ๋“œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์•Œ์ง€ ๋ชปํ•จ → ์ œ์•ฝ์ด ์žˆ์„ ์ˆ˜๊ฐ€ ์žˆ์Œ
  • POSIX Pthreads
  • Mach C-threads
  • Solaris threads

Some are real-time threads

  • ์ปค๋„ ์“ฐ๋ ˆ๋“œ๋Š” ์ปค๋„์ด ์ง์ ‘ ์“ฐ๋ ˆ๋“œ๋ฅผ ๊ด€๋ฆฌ
  • ์œ ์ € ์“ฐ๋ ˆ๋“œ์˜ ๊ฒฝ์šฐ๋Š” ์šด์˜์ฒด์ œ๊ฐ€ ์“ฐ๋ ˆ๋“œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์•Œ์ง€ ๋ชปํ•จ