Post

[OS] Operating System(5-3): Scheduling: Linux,Window

[OS] Operating System(5-3): Scheduling: Linux,Window

๐Ÿ€ ์šด์˜์ฒด์ œ ์ „๊ณต ์ˆ˜์—… ์ •๋ฆฌ

Linux Scheduling Through Version 2.5


2.5 ์ด์ „์—๋Š” ํ‘œ์ค€ UNIX ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ณ€ํ˜•์„ ์‚ฌ์šฉ, 2.5๋ถ€ํ„ฐ๋Š” ์ƒ์ˆ˜ ์‹œ๊ฐ„ O(1) ์Šค์ผ€์ค„๋ง ์‹œ๊ฐ„์„ ๊ฐ€์ง„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ „ํ™˜

  • O(1) scheduling time: ์ƒ์ˆ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ โœ…ํŠน์ง•:
    1. Preemptive, priority based
    2. ์šฐ์„ ์ˆœ์œ„๊ฐ€ 2๊ฐ€์ง€๋กœ ๋‚˜๋‰จ
  • 1~99: real-time class(๋‚ฎ์€ ์ˆซ์ž = ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์ฃผ์˜!)
  • 100~140: conventional class
    1. ์ „์—ญ ์šฐ์„ ์ˆœ์œ„ ๋งคํ•‘
  • ์ˆซ์ž๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ๋†’์€ ์šฐ์„ ์ˆœ์œ„
  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์„์ˆ˜๋ก ๋” ํฐ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰(quantum)์„ ๋ฐ›์Œ
    1. ํƒœ์Šคํฌ ์ƒํƒœ ๊ด€๋ฆฌ
  • ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์ด ๋‚จ์•„์žˆ์œผ๋ฉด ํƒœ์Šคํฌ๋Š” active(์‹คํ–‰ ๊ฐ€๋Šฅ)
  • ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋ฉด expired(๋‹ค๋ฅธ ํƒœ์Šคํฌ๊ฐ€ ๋ชจ๋‘ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์„ ์‚ฌ์šฉํ•  ๋•Œ๊นŒ์ง€ ์‹คํ–‰ ๋ถˆ๊ฐ€)
    1. runqueue ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ
  • ๊ฐ CPU๋งˆ๋‹ค ์กด์žฌํ•˜๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํƒœ์Šคํฌ ์ถ”์  ๊ตฌ์กฐ
  • ๋‘ ๊ฐœ์˜ ์šฐ์„ ์ˆœ์œ„ ๋ฐฐ์—ด (active, expired)
  • ํƒœ์Šคํฌ๋Š” ์šฐ์„ ์ˆœ์œ„๋กœ ์ธ๋ฑ์‹ฑ๋จ
  • active ๋ฐฐ์—ด์ด ๋น„๋ฉด active์™€ expired ๋ฐฐ์—ด์„ ๊ต์ฒด

alt text

O(1) ์Šค์ผ€์ค„๋Ÿฌ๋Š” ํšจ์œจ์ ์œผ๋กœ ์ž‘๋™ํ–ˆ์ง€๋งŒ, ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์‘๋‹ต ์‹œ๊ฐ„์ด ์ข‹์ง€ ์•Š์•˜์Œ

Linux Scheduling in Version 2.6.23+


์•ž์˜ linux O(1) ์Šค์ผ€์ค„๋Ÿฌ ์ดํ›„ 2.6.23๋ถ€ํ„ฐ๋Š” CFS๋ฅผ ๋„์ž…

๐Ÿ“šCompletely Fair Scheduler(CFS):

  • CFS๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ง์ ‘ ํ• ๋‹นํ•˜์ง€ ์•Š๊ณ  virtual run time์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ์กฐ์ •
  • runnable ํƒœ์Šคํฌ ์ค‘์—์„œ virtual run time์ด ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ ๋จผ์ € ์‹คํ–‰
  • โ†’ ๊ณ ์ •๋œ ์‹œ๊ฐ„ ํ• ๋‹น ๋Œ€์‹  CPU ์‹œ๊ฐ„์˜ ๋น„์œจ์— ๊ธฐ๋ฐ˜ํ•œ ์Šค์ผ€์ค„๋ง

Sheduling Classes

๋ฆฌ๋ˆ…์Šค ์ปค๋„์—์„œ ๋‹ค์–‘ํ•œ ํ”„๋กœ์„ธ์Šค๋ž‘ ์Šค๋ ˆ๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋ ˆ์ž„ ์›Œํฌ ๊ธฐ๋ณธ์ ์œผ๋กœ, Linux Scheduling์€ Scheduling class์— ์˜์กดํ•˜์—ฌ ์ž‘์šฉ

  • ๊ฐ ํด๋ž˜์Šค๋Š” ํŠน์ • ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„๋‹ค
  • ์Šค์ผ€์ค„๋Ÿฌ๋Š” ๊ฐ€์žฅ ๋†’์€ ์Šค์ผ€์ค„๋ง ํด๋ž˜์Šค์—์„œ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ํƒœ์Šคํฌ๋ฅผ ์„ ํƒ
  • ๊ธฐ๋ณธ์ ์œผ๋กœ 2๊ฐœ์˜ ํด๋ž˜์Šค๊ฐ€ ํฌํ•จ๋˜๋ฉฐ ์ถ”๊ฐ€ ํ™•์žฅ ๊ฐ€๋Šฅ:
    • Defalut(CFS)
    • real-time(RT)

virtual run time๊ณผ nice value๋ž€??

  • virtual run time: ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์‚ฌ์šฉํ•œ ์‹œ๊ฐ„์„ ์ถ”์ ํ•˜๋Š” ๋งคํŠธ๋ฆญ โ†’ ๋‹จ์ˆœํžˆ ๋ฌผ๋ฆฌ์  ์‹คํ–‰์‹œ๊ฐ„ X, ์šฐ์„ ์ˆœ์œ„(nice value)์— ๋”ฐ๋ผ ๊ฐ€์ค‘์น˜ ์ ์šฉ๋œ ์‹œ๊ฐ„
  • CFS๋Š” ๊ฐ ํƒœ์Šคํฌ๋ณ„๋กœ virtual run time์„ vruntime ๋ณ€์ˆ˜์— ์ €์žฅ
  • ๊ฐ€์žฅ ๋‚ฎ์€ vruntime๊ฐ’์„ ๊ฐ€์ง„ ํƒœ์Šคํฌ๋ฅผ ๋‹ค์Œ์— ์‹คํ–‰ํ•  ํ…Œ์Šคํฌ๋กœ ์„ ํƒํ•จ
  • ํƒœ์Šคํฌ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์‹คํ–‰ ์‹œ๊ฐ„์— ๋”ฐ๋ผ vruntime์ด ์ฆ๊ฐ€
    • ๋งŽ์€ CPU ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์•„์ง
    • ์ ์€ CPU ์‹œ๊ฐ„์„ ์‚ฌ์šฉํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์•„์ง
  • nice value: nice value๋Š” -20๋ถ€ํ„ฐ +19๊นŒ์ง€์˜ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง„๋‹ค
  • nice valueโ†“(-20) = ์šฐ์„ ์ˆœ์œ„โ†‘
  • nice valueโ†‘(+19) = ์šฐ์„ ์ˆœ์œ„โ†“
  • ๊ธฐ๋ณธ๊ฐ’์€ 0

  • nice value๋Š” ๋Œ€์ƒ ์ง€์—ฐ(target latency)๊ณ„์‚ฐ์— ์ ์šฉ๋œ๋‹ค
    • target latency: ๋ชจ๋“  ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ task๊ฐ€ ์ ์–ด๋„ ํ•œ ๋ฒˆ์€ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ(= ์‘๋‹ต ์‹œ๊ฐ„)
    • ํ™œ์„ฑ task ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด ๊ฐ task์˜ timeslice(=context switching)์ด ์งง์•„์ง โ†’ target latency ์ฆ๊ฐ€
  • nice value์— ๋”ฐ๋ผ decay๊ณ„์ˆ˜๊ฐ€ ๊ฒฐ์ •
    • decay ๊ณ„์ˆ˜: ์‹ค์ œ ์‹คํ–‰ ์‹œ๊ฐ„์—์„œ ๊ฐ€์ƒ ์‹คํ–‰ ์‹œ๊ฐ„์œผ๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ์ ์šฉ๋˜๋Š” ๊ณ„์ˆ˜
    • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก(=๊ฐ’์ด ํด์ˆ˜๋ก) decay ๊ณ„์ˆ˜๊ฐ€ ๋†’์•„์ง„๋‹ค
    • nice = 0์ธ ๊ฒฝ์šฐ, ๊ฐ€์ƒ ์‹คํ–‰ ์‹œ๊ฐ„ = ์‹ค์ œ ์‹คํ–‰ ์‹œ๊ฐ„

alt text

๋ฆฌ๋ˆ…์Šค๋Š” POSIX.1b ํ‘œ์ค€์— ๋”ฐ๋ผ ์‹ค์‹œ๊ฐ„ ์Šค์ผ€์ค„๋ง์„ ์ง€์›

  • ์‹ค์‹œ๊ฐ„ ์ž‘์—…๊ณผ ์ผ๋ฐ˜ ์ž‘์—…์„ ๊ธ€๋กœ๋ฒŒ ์šฐ์„ ์ˆœ์œ„ ์ฒด๊ณ„๋กœ ํ†ตํ•ฉ
  • nice value -20: ๊ธ€๋กœ๋ฒŒ ์šฐ์„ ์ˆœ์œ„ 100์— ๋งคํ•‘ (๊ฐ€์žฅ ๋†’์€ ์ผ๋ฐ˜ ์šฐ์„ ์ˆœ์œ„)
  • nice value 0: ๊ธ€๋กœ๋ฒŒ ์šฐ์„ ์ˆœ์œ„ 120์— ๋งคํ•‘ (๊ธฐ๋ณธ ์šฐ์„ ์ˆœ์œ„)
  • nice value +19: ๊ธ€๋กœ๋ฒŒ ์šฐ์„ ์ˆœ์œ„ 139์— ๋งคํ•‘ (๊ฐ€์žฅ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„)
  • ๋ฆฌ๋ˆ…์Šค๋Š” load balancing ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ NUMA-aware๋„ ์ง€์›ํ•จ
    Scheduling Domain
  • Scheduling Domain: load balacing์ด ๊ฐ€๋Šฅํ•œ CPU ์ฝ”์–ด์˜ ์ง‘ํ•ฉ
  • domain์€ ๊ณต์œ ํ•˜๋Š” ์ž์›(ex: ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ)์— ๋”ฐ๋ผ ๊ตฌ์„ฑ๋œ๋‹ค
  • ๋˜ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ๋„๋ฉ”์ธ ๊ฐ„์— migration๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€

์Šค๋ ˆ๋“œ๊ฐ€ ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ migration๋˜๋ฉด ์—ฌ๋Ÿฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ!

  1. Cold Cache ๋ฌธ์ œ:
    • ์ƒˆ ๋…ธ๋“œ์˜ ์บ์‹œ๋Š” ์Šค๋ ˆ๋“œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จX โ†’ ์บ์‹œ๋ฅผ ๋‹ค์‹œ ์ฑ„์šฐ๋Š”๋ฐ ์‹œ๊ฐ„ ์†Œ์š”
  2. ์›๊ฒฉ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์ฆ๊ฐ€:
    • ์Šค๋ ˆ๋“œ๊ฐ€ ์›๋ž˜ ํ• ๋‹น๋œ ๋…ธ๋“œ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๋ฉด ์›๊ฒฉ ์ ‘๊ทผ ๋ฐœ์ƒ
    • โ†’ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ์ง€์—ฐ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•จ

alt text

์บ์‹œ L1์€ ๊ฐ CPU์ฝ”์–ด์— ์ „์šฉ์œผ๋กœ ํ• ๋‹น
L2๋Š” ์ฝ”์–ด๋ณ„ ๋˜๋Š” ์ฝ”์–ด ์Œ๋ณ„๋กœ ํ• ๋‹น
L3๋Š” NUMA ๋…ธ๋“œ ์ „์ฒด๊ฐ€ ๊ณต์œ 

Window Scheduling


๐Ÿ“šWindow Scheduling: ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜ ์„ ์  ์Šค์ผ€์ค„๋ง

โœ…์Šค๋ ˆ๋“œ ์‹คํ–‰ ์กฐ๊ฑด:

  1. ๋ธ”๋ก(block) ์ƒํƒœ๊ฐ€ ๋˜์—ˆ์„ ๋•Œ (์˜ˆ: I/O ์ž‘์—… ๋Œ€๊ธฐ)
  2. ํ• ๋‹น๋œ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰(time slice)์„ ๋ชจ๋‘ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ
  3. ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ์„ ์ ๋˜์—ˆ์„ ๋•Œ
  4. ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์„ ๋•Œ
  • real-time ์Šค๋ ˆ๋“œ๋Š” non-real-time(์ผ๋ฐ˜) ์Šค๋ ˆ๋“œ๋ฅผ ์„ ์  ๊ฐ€๋Šฅ

์œˆ๋„์šฐ๋Š” 32-level์˜ ์šฐ์„ ์ˆœ์œ„ scheme๊ฐ€ ์žˆ๋‹ค

  • Variable class: 1-15
  • real-time class: 16-31
  • ์šฐ์„ ์ˆœ์œ„ 0์€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์Šค๋ ˆ๋“œ
  • ์ˆซ์ž๊ฐ€ ํด์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค(๋ฆฌ๋ˆ…์Šค์™€ ์ฐจ์ด์  ์ฃผ์˜)

  • ๊ฐ ์šฐ์„ ์ˆœ์œ„๋งˆ๋‹ค ๋ณ„๋„์˜ Queue(=ready queue)๊ฐ€ ์กด์žฌ
  • ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ์—†์œผ๋ฉด idle thread๊ฐ€ ์‹คํ–‰

Windows Priority Classes


window OS๋Š” ๋‘ ๋‹จ๊ณ„์˜ ์šฐ์„ ์ˆœ์œ„ ์ฒด๊ณ„๋ฅผ ์‚ฌ์šฉ

  1. Priority Class: ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋˜๋Š” ์šฐ์„ ์ˆœ์œ„
  2. Relative Priority: ๊ฐ™์€ Priority Class ๋‚ด์—์„œ ์Šค๋ ˆ๋“œ์— ํ• ๋‹น๋˜๋Š” ์šฐ์„ ์ˆœ์œ„

Priority Class

  1. REALTIME_PRIORITY_CLASS: ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„
  2. HIGH_PRIORITY_CLASS
  3. ABOVE_NORMAL_PRIORITY_CLASS
  4. NORMAL_PRIORITY_CLASS: ์ผ๋ฐ˜์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋ณธ ์šฐ์„ ์ˆœ์œ„
  5. BELOW_NORMAL_PRIORITY_CLASS
  6. IDLE_PRIORITY_CLASS: ์‹œ์Šคํ…œ์ด Idle ์ƒํƒœ์ผ ๋•Œ๋งŒ ์‹คํ–‰๋˜๋Š” ๊ฐ€์žฅ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„
  • Real-time์„ ์ œ์™ธํ•œ ๋ชจ๋“  Priority Class๋Š” ๊ฐ€๋ณ€์  โ†’ ์‹œ์Šคํ…œ์ด ํ•„์š”์— ๋”ฐ๋ผ ์šฐ์„ ์ˆœ์œ„ ์กฐ์ • ๊ฐ€๋Šฅ

Relative Priority

  1. TIME_CRITICAL: ๊ฐ™์€ ํด๋ž˜์Šค ๋‚ด์—์„œ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„
  2. HIGHEST
  3. ABOVE_NORMAL
  4. NORMAL: ๊ธฐ๋ณธ ์šฐ์„ ์ˆœ์œ„
  5. BELOW_NORMAL
  6. LOWEST
  7. IDLE: ๊ฐ™์€ ํด๋ž˜์Šค ๋‚ด์—์„œ ๊ฐ€์žฅ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„
  • Priority Class + Relative Priority = ์ˆซ์ž ์šฐ์„ ์ˆœ์œ„(Numeric Priority) alt text

โœ…์œˆ๋„์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ •:

  1. quantum ๋งŒ๋ฃŒ: ์šฐ์„ ์ˆœ์œ„ ํ•˜๋ฝ, ๊ธฐ๋ณธ ์šฐ์„ ์ˆœ์œ„๋ณด๋‹ค ๋‚ฎ์•„์ง€์ง€๋Š” ์•Š์Œ
  2. ๋Œ€๊ธฐ ์ƒํƒœ ๋ฐœ์ƒ: ์Šค๋ ˆ๋“œ๊ฐ€ ์•„๋ฌด๊ฒƒ๋„ ์•ˆํ•˜๊ณ  ์žˆ์œผ๋ฉด ์šฐ์„ ์ˆœ์œ„ ์ƒ์Šน(Variable class์— ์†ํ•œ task๋งŒ ํ•ด๋‹น, ํ‚ค๋ณด๋“œI/O>๋””์ŠคํฌI/O)
  3. Foreground window: ์‚ฌ์šฉ์ž๊ฐ€ ํ˜„์žฌ ํ™œ์„ฑํ™”ํ•œ ์ฐฝ์€ 3๋ฐฐ์˜ ์šฐ์„ ์ˆœ์œ„ ๋ถ€์ŠคํŠธ๋ฅผ ๋ฐ›์Œ
    • Varialbep priority ์Šค๋ ˆ๋“œ๊ฐ€ I/O ์ž‘์—…์„ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ๋””์ŠคํŒจ์ฒ˜๊ฐ€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ƒ์Šน โ†’ I/O-bound ์Šค๋ ˆ๋“œ๊ฐ€ CPU-bound ์Šค๋ ˆ๋“œ๋ณด๋‹ค ์šฐ์„ ์‹œ๋จ์„ ์˜๋ฏธ

UMS(User-Mode Scheduling)

Window 7๋ถ€ํ„ฐ๋Š” User-Mode Scheduling(UMS)์ด ์ถ”๊ฐ€๋จ

โœ…UMS ํŠน์ง•:

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ปค๋„๊ณผ ๋…๋ฆฝ์ ์œผ๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌ
  • ๋Œ€๋Ÿ‰์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ํ›จ์”ฌ ํšจ์œจ์ 
  • UMS ์Šค์ผ€์ค„๋Ÿฌ๋Š” C++ Concurrent Runtime(ConcRT) ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ œ๊ณต

Algorithm Evaluation


์šด์˜์ฒด์ œ์—์„œ CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์€ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ค‘์š”ํ•œ ๊ฒฐ์ •์ด๋‹ค

โœ…์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํƒ ๊ณผ์ •:

  1. ํ‰๊ฐ€ ๊ธฐ์ค€ ์„ค์ •
  2. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ‰๊ฐ€
  3. ์ตœ์  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํƒ

โœ…CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ‰๊ฐ€ ๋ฐฉ๋ฒ•:

  1. Deterministic modeling
  2. Queueing models
  3. Simulations
  4. Implementation

Deterministic modeling


๐Ÿ“šDeterministic modeling: ๋ถ„์„์  ํ‰๊ฐ€(analytic evaluation) ์œ ํ˜•

  • ํŠน์ •ํ•œ ๋ฏธ๋ฆฌ ์ •์˜๋œ ์›Œํฌ๋กœ๋“œ์— ๋Œ€ํ•ด ๊ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ์ •ํ™•ํžˆ ๊ณ„์‚ฐ
    • ๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฅธ ํ‰๊ฐ€ ๋ฐฉ๋ฒ•
    • ์ •ํ™•ํ•œ ์ž…๋ ฅ๊ฐ’์ด ํ•„์š”ํ•˜๋ฉฐ, ํ•ด๋‹น ์ž…๋ ฅ์—๋งŒ ์ ์šฉ ๊ฐ€๋Šฅ
    • ์ฃผ๋กœ ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„๊ณผ ๊ฐ™์€ ์„ฑ๋Šฅ ์ง€ํ‘œ๋ฅผ ๊ณ„์‚ฐ

alt text

  1. FCFS-average waiting time = 28ms
  2. Non-preemptive SJF-average waiting time = 13ms
  3. RR-average waiting time =23ms

โŒํŠน์ • ์›Œํฌ๋กœ๋“œ์— ๋Œ€ํ•ด์„œ๋งŒ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•ด์„œ ๋‹ค์–‘ํ•œ ์กฐ๊ฑด์—์„œ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ฑ๋Šฅ์„ ์ผ๋ฐ˜ํ™”ํ•˜๊ธฐ ์–ด๋ ค์›€

Queueing Models


๐Ÿ“šQueueing Models: ํ”„๋กœ์„ธ์Šค์˜ ๋„์ฐฉ๊ณผ CPU ๋ฐ I/O ๋ฒ„์ŠคํŠธ๋ฅผ ํ™•๋ฅ ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•

โœ…ํŠน์ง•:

  • ์ง€์ˆ˜ ๋ถ„ํฌ(exponential distribution)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํ‰๊ท ๊ฐ’(mean)์œผ๋กœ ํ‘œํ˜„
  • ์ฒ˜๋ฆฌ๋Ÿ‰, ์ž์› ํ™œ์šฉ๋ฅ , ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๋“ฑ์˜ ์„ฑ๋Šฅ ์ง€ํ‘œ ๊ณ„์‚ฐ

Littleโ€™s Formula


๐Ÿ“šLittleโ€™s law: โ€˜$n = ฮป * W$โ€™ = ์•ˆ์ • ์ƒํƒœ์—์„œ ์‹œ์Šคํ…œ ๋‚ด์˜ ํ‰๊ท  ํ”„๋กœ์„ธ์Šค ์ˆ˜(n)๋Š” ๋„์ฐฉ๋ฅ (ฮป)๊ณผ ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„(W)์˜ ๊ณฑ๊ณผ ๊ฐ™์Œ

  • $n$ = queue length์˜ ํ‰๊ท (jobs)
  • $W$ = queue์—์„œ์˜ ํ‰๊ท  wating time(sec)
  • $ฮป$(๋„์ฐฉ๋ฅ ) = queue์— ๋„์ฐฉํ•˜๋Š” ํ‰๊ท ๋Ÿ‰(jobs/sec)

    ex: ์ดˆ๋‹น 7๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉ, queue์— 14๊ฐœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด ํ‰๊ท  wait time์€??
    n = 14, ฮป = 7 โ†’ $W = n/ฮป = 2(sec)$

โŒ์‹ค์ œ ์‹œ์Šคํ…œ์˜ ๋ณต์žก์„ฑ์„ ์™„์ „ํžˆ ๋ฐ˜์˜X

Simulations


Queue model๋ณด๋‹ค Simulations์ด ๋” ์ •ํ™•ํ•จ

  • ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์„ ์‚ฌ์šฉ
  • ์‹œ๊ฐ„์„ ๋ณ€์ˆ˜๋กœ ์ทจ๊ธ‰ โ†’ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ฑ๋Šฅ ํ†ต๊ณ„ ์ˆ˜์ง‘

โœ…simulation data ์ˆ˜์ง‘ ๋ฐฉ๋ฒ•:

  1. Random number generator
    • ํ™•๋ฅ ์— ๋”ฐ๋ผ ์ด๋ฒคํŠธ ์ƒ์„ฑ
  2. Distributions of mathematically(์ˆ˜ํ•™์ )/empirically(๊ฒฝํ—˜์ )
    • ์ˆ˜ํ•™ ๊ณต์‹์œผ๋กœ ์ •์˜๋œ ๋ถ„ํฌ
    • ์‹ค์ œ ์‹œ์Šคํ…œ์„ ๊ด€์ฐฐํ•ด ์–ป์€ ๊ฒฝํ—˜์  ๋ฐ์ดํ„ฐ
  3. Trace tapes
    • ์‹ค์ œ ์‹œ์Šคํ…œ์—์„œ ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ ๊ธฐ๋ก

alt text

  1. ํŠธ๋ ˆ์ด์Šค ํ…Œ์ดํ”„๋‚˜ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์Œ
  2. ์—ฌ๋Ÿฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜(FCFS, SJF, RR ๋“ฑ)์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ž…๋ ฅ์œผ๋กœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์‹คํ–‰
  3. ๊ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ ํ†ต๊ณ„(CPU ์‚ฌ์šฉ๋ฅ , ๋Œ€๊ธฐ ์‹œ๊ฐ„, ์‘๋‹ต ์‹œ๊ฐ„, ์ฒ˜๋ฆฌ๋Ÿ‰ ๋“ฑ) ์ˆ˜์ง‘
  4. ๊ฒฐ๊ณผ ๋น„๊ต๋ฅผ ํ†ตํ•ด ํŠน์ • ์›Œํฌ๋กœ๋“œ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ์ •

Implemenation


Simulation์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ์ถฉ๋ถ„ํžˆ ํ‰๊ฐ€ํ•ด๋„ ์‹ค์ œ ์‹œ์Šคํ…œ์—์„œ ๋™์ž‘์€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค Implemenation: ์ตœ์ข…์ ์œผ๋กœ ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•ด๋ด์•ผ ํ•จ

  • ๊ฐ€์žฅ ์ •ํ™•ํ•œ ์„ฑ๋Šฅ ํ‰๊ฐ€ ๋ฐฉ๋ฒ•
  • ๋†’์€ ๋น„์šฉ๊ณผ ์œ„ํ—˜์ด ์ˆ˜๋ฐ˜๋จ
  • ์‹ค์ œ ํ™˜๊ฒฝ์˜ ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Œ

๐Ÿ“4๊ฐ€์ง€ ํ‰๊ฐ€ ๋ฐฉ๋ฒ• ๋น„๊ต
alt text alt text

This post is licensed under CC BY 4.0 by the author.