CPU and I/O Bursts in Program Execution

  • CPU burst : CPU๋ฅผ ๊ฐ€์ง€๊ณ  ๊ธฐ๊ณ„์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋‹จ๊ณ„
  • I/O burst : ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆฌ๋Š” I/O ์ž‘์—…์„ ํ•˜๋Š” ๋‹จ๊ณ„

CPU-burst Time์˜ ๋ถ„ํฌ

ํ”„๋กœ์„ธ์Šค์˜ ํŠน์„ฑ ๋ถ„๋ฅ˜

ํ”„๋กœ์„ธ์Šค๋Š” ๊ทธ ํŠน์„ฑ์— ๋”ฐ๋ผ ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆ”

  • I/O bound job : CPU๋ฅผ ์งง๊ฒŒ ์“ฐ๋Š” ํ”„๋กœ๊ทธ๋žจ
    • ์ฃผ๋กœ ์‚ฌ๋žŒํ•˜๊ณ  interactionํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ๋งŽ์Œ -> CPU๋ฅผ ๋นจ๋ฆฌ ์ค˜์•ผํ•จ
    • CPU๋ฅผ ์žก๊ณ  ๊ณ„์‚ฐํ•˜๋Š” ์‹œ๊ฐ„๋ณด๋‹ค I/O์— ๋งŽ์€ ์‹œ๊ฐ„์ด ํ•„์š”ํ•œ job
    • many short CPU bursts
  • CPU bound job : CPU๋ฅผ ๊ธธ๊ฒŒ ์“ฐ๋Š” ํ”„๋กœ๊ทธ๋žจ
    • ๋ณต์žกํ•œ ๊ณ„์‚ฐ์„ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ -> 5์ดˆ ์žˆ๋‹ค๊ฐ€ CPU๋ฅผ ์ค˜๋„ ๋ฌธ์ œ๋˜์ง€ ์•Š์Œ
    • ๊ณ„์‚ฐ ์œ„์ฃผ์˜ job
    • few very long CPU bursts

์‹œ์Šคํ…œ์— ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ job(=process)์ด ์„ž์—ฌ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— CPU ์Šค์ผ€์ค„๋ง์ด ํ•„์š”ํ•จ

  • Interactive job(= I/O bound job)์—๊ฒŒ ์ ์ ˆํ•œ response ์ œ๊ณต ์š”๋ง
    • CPU bound job๋ณด๋‹ค I/O bound job์—๊ฒŒ CPU๋ฅผ ๋จผ์ € ํ• ๋‹น ํ•ด์ค˜์•ผํ•จ
      -> CPU๋ฅผ ์งง๊ฒŒ ์“ฐ๊ณ  ๋Œ๋ ค์ฃผ๊ธฐ ๋•Œ๋ฌธ์—
  • CPU์™€ I/O ์žฅ์น˜ ๋“ฑ ์‹œ์Šคํ…œ ์ž์›์„ ๊ณจ๊ณ ๋ฃจ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ

CPU Scheduler & Dispatcher

CPU Scheduler

  • Ready ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ ์ด๋ฒˆ์— CPU๋ฅผ ์ค„ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณ ๋ฆ„

Dispatcher

  • CPU์˜ ์ œ์–ด๊ถŒ์„ CPU scheduler์— ์˜ํ•ด ์„ ํƒ๋œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜๊น€
  • ์ด ๊ณผ์ •์„ context switch(๋ฌธ๋งฅ ๊ตํ™˜)๋ผ๊ณ  ํ•จ

CPU ์Šค์ผ€์ค„๋ง์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š” ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์•„๋ž˜์™€ ๊ฐ™์€ ์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ

  1. Running -> Blocked (์˜ˆ: I/O ์š”์ฒญํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœ)
  2. Running -> Ready (์˜ˆ: ํ• ๋‹น์‹œ๊ฐ„๋งŒ๋ฃŒ๋กœ timer interrupt)
  3. Blocked -> Ready (์˜ˆ: I/O ์™„๋ฃŒํ›„ ์ธํ„ฐ๋ŸฝํŠธ)
  4. Terminate (์˜ˆ: ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์„ ๋•Œ)
  • 1, 4์—์„œ์˜ ์Šค์ผ€์ค„๋ง์€ nonpreemptive(= ๊ฐ•์ œ๋กœ ๋นผ์•—์ง€ ์•Š๊ณ  ์ž์ง„ ๋ฐ˜๋‚ฉ)
  • 2, 3์—์„œ์˜ ์Šค์ผ€์ค„๋ง์€ preemptive(= ๊ฐ•์ œ๋กœ ๋นผ์•—์Œ)
  • CPU ์Šค์ผ€์ค„๋ง์€ ํฌ๊ฒŒ nonpreemptive์™€ preemptive๋กœ ๊ตฌ๋ถ„๋จ

Scheduling Criteria

Performance Index(= Performance Measure, ์„ฑ๋Šฅ ์ฒ™๋„)
CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘์— ์–ด๋–ค๊ฒŒ ์ข‹์€์ง€ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•
  • CPU utilization(์ด์šฉ๋ฅ )
    • keep the CPU as busy as possible
    • CPU ์ด์šฉ ์‹œ๊ฐ„ / ์ „์ฒด ์‹œ๊ฐ„ -> ๋†’์„ ์ˆ˜๋ก ์ข‹์Œ
  • Throughput(์ฒ˜๋ฆฌ๋Ÿ‰)
    • of processes that complete their execution per time unit
    • ์ฒ˜๋ฆฌ๋Ÿ‰ / ๋‹จ์œ„ ์‹œ๊ฐ„ -> ๋†’์„ ์ˆ˜๋ก ์ข‹์Œ
  • Turnaround time(์†Œ์š”์‹œ๊ฐ„, ๋ฐ˜ํ™˜์‹œ๊ฐ„)
    • amount of time to execute a particular process
    • CPU burst์— ๋“ค์–ด์™€์„œ I/O burst๋กœ ๋‚˜๊ฐˆ ๋•Œ๊นŒ์ง€ ์ „์ฒด ์‹œ๊ฐ„
      • CPU ์‚ฌ์šฉ ์‹œ๊ฐ„ + CPU ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„(Ready queue์— ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„)
  • Waiting time(๋Œ€๊ธฐ ์‹œ๊ฐ„)
    • amount of time a process has been waiting in the ready queue
    • CPU ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„์˜ ํ•ฉ
      • CPU ์–ป์—ˆ๋‹ค๊ฐ€ ๋นผ์•—๊ฒผ๋‹ค๊ฐ€ ํ•˜๋ฉด์„œ Ready queue์—์„œ ๊ธฐ๋‹ค๋ฆฐ ์ด ์‹œ๊ฐ„
  • Response time(์‘๋‹ต ์‹œ๊ฐ„)
    • amount of time it takes from when a request was submitted until the first response is produced, not output (for time-sharing environment)
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ตœ์ดˆ๋กœ CPU๋ฅผ ์–ป๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„
      • Ready queue์—์„œ ์ฒ˜์Œ CPU ์–ป๊ธฐ๊นŒ์ง€์˜ ์‹œ๊ฐ„
      • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฒ˜์Œ ์‹œ์ž‘ํ•ด์„œ ์ฒ˜์Œ์œผ๋กœ CPU ์–ป์€ ์‹œ๊ฐ„์€ ์•„๋‹˜
  • ์‹œ๊ฐ„์€ ์งง์„ ์ˆ˜๋ก ์ข‹์Œ

Scheduling Algorithms

FCFS (Fist-Come First-Served)

CPU ์‚ฌ์šฉ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ €๋“ค์–ด์˜จ ๊ฒฝ์šฐ

CPU ์‚ฌ์šฉ์‹œ๊ฐ„์ด ์งง์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ €๋“ค์–ด์˜จ ๊ฒฝ์šฐ

  • Convoy effect
    • long process๊ฐ€ ๋จผ์ € ๋„์ฐฉํ•˜๋Š” ๋ฐ”๋žŒ์— short process๊ฐ€ ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ ค์•ผ ๋˜๋Š” ํ˜„์ƒ

SJF (Shortest-Job-First)

  • CPU burst time์ด ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์ผ ๋จผ์ € ์Šค์ผ€์ค„

Two schemes:
1. Nonpreemptive

  • ์ผ๋‹จ CPU๋ฅผ ์žก์œผ๋ฉด ์ด๋ฒˆ CPU burst๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ CPU๋ฅผ ์„ ์ (preemption) ๋‹นํ•˜์ง€ ์•Š์Œ

2. Preemptive

  • ํ˜„์žฌ ์ˆ˜ํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ๋‚จ์€ burst time๋ณด๋‹ค ๋” ์งง์€ CPU burst time์„ ๊ฐ€์ง€๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๋ฉด CPU๋ฅผ ๋นผ์•—๊น€
  • ์ด ๋ฐฉ๋ฒ•์„ Shortest_Remaining_Time_First(SRTF)์ด๋ผ๊ณ ๋„ ๋ถ€๋ฆ„
    • ๋‚จ์€ ์‹œ๊ฐ„์ด ์ œ์ผ ์งง์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ์คŒ

  • SJF is optimal -> SRTF
    • ์ฃผ์–ด์ง„ ํ”„๋กœ์„ธ์Šค๋“ค์— ๋Œ€ํ•ด minimum average waiting time์„ ๋ณด์žฅ
    • ์–ด๋– ํ•œ CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณด๋‹ค SRTF๊ฐ€ ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง์Œ

Problem

  • Starvation ํ˜„์ƒ ๋ฐœ์ƒ
  • CPU burst time์„ ๋ˆ„๊ฐ€ ์งง๊ฒŒ ์“ฐ๊ณ  ๊ธธ๊ฒŒ ์“ฐ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Œ

Solution

  • ์˜ˆ์ธก์„ ํ†ตํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ

๋‹ค์Œ๋ฒˆ CPU Burst Time์˜ ์˜ˆ์ธก

  • ์ถ”์ •(estimate)๋งŒ์ด ๊ฐ€๋Šฅํ•จ
  • ๊ณผ๊ฑฐ์˜ CPU burst time์„ ์ด์šฉํ•ด์„œ ์ถ”์ •

Exponential Averaging

  • ์ง์ „ CPU burst๋ฅผ ๋งŽ์ด ๋ฐ˜์˜ํ•˜๊ณ  ์˜ˆ์ „๊บผ๋Š” ์ ๊ฒŒ ๋ฐ˜์˜ํ•จ

Priority Scheduling

  • a priority number(integer) is associated with each process
  • highest priority(๋†’์€ ์šฐ์„ ์ˆœ์œ„)๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU ํ• ๋‹น
    • smallest integer = highest priority
    • Preemptive
    • nonpreemptive
  • SJF๋Š” ์ผ์ข…์˜ priority scheduling
    • priority = predicted next CPU burst time

Problem

  • Starvation : low priority processes may never execute

Solution

  • Aging : as time progresses increase the priority of the process
    • ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜๋œ ํ”„๋กœ์„ธ์Šค๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์˜ฌ๋ ค์คŒ

Round Robin (RR)

  • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋™์ผํ•œ ํฌ๊ธฐ์˜ ํ• ๋‹น ์‹œ๊ฐ„(time quantum)์„ ๊ฐ€์ง
    (์ผ๋ฐ˜์ ์œผ๋กœ 10~100 milliseconds)
  • ํ• ๋‹น ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ์„ ์ (preempted)๋‹นํ•˜๊ณ  ready queue์˜ ์ œ์ผ ๋’ค์— ๊ฐ€์„œ ๋‹ค์‹œ ์ค„์„ ์„ฌ
  • n ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ready queue์— ์žˆ๊ณ  ํ• ๋‹น ์‹œ๊ฐ„์ด q time unit์ธ ๊ฒฝ์šฐ ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์ตœ๋Œ€ q time unit ๋‹จ์œ„๋กœ CPU ์‹œ๊ฐ„์˜ 1/n์„ ์–ป์Œ
    -> ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋„ (n-1)q time unit ์ด์ƒ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์Œ
  • Performance
    • q large -> FCFS
    • q small -> context switch ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ปค์ง

Example: RR with Time Quantum = 20

  • ์ผ๋ฐ˜์ ์œผ๋กœ SJF๋ณด๋‹ค average turnarround time์ด ๊ธธ์ง€๋งŒ response time์€ ๋” ์งง์Œ

Multilevel Queue

  • CPU๋Š” ํ•˜๋‚˜ ์ธ๋ฐ queue๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์ž„
  • Ready queue๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ถ„ํ• 
    • forground(interactive) -> short job
    • background(batch - no human interaction) -> long job
  • ๊ฐ ํ๋Š” ๋…๋ฆฝ์ ์ธ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐ€์ง
    • forground - RR
    • background - FCFS
  • ํ์— ๋Œ€ํ•œ ์Šค์ผ€์ค„๋ง์ด ํ•„์š”
    • Fixed priority scheduling -> ์šฐ์„ ์ˆœ์œ„ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ
      • serve all from foreground then from background
      • possibility of starvation
    • Time slice
      • ๊ฐ ํ์— CPU time์„ ์ ์ ˆํ•œ ๋น„์œจ๋กœ ํ• ๋‹น
      • ex) 80% to foreground in RR, 20% to background in FCFS

Multilevel Feedback Queue

  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ๋กœ ์ด๋™ ๊ฐ€๋Šฅ -> ์šฐ์„ ์ˆœ์œ„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
  • ์—์ด์ง•(aging)์„ ์ด์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ
  • Multilevel-feedback-queue scheduler๋ฅผ ์ •์˜ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค
    • Queue์˜ ์ˆ˜
    • ๊ฐ ํ์˜ scheduling algorithm
    • Process๋ฅผ ์ƒ์œ„ ํ๋กœ ๋ณด๋‚ด๋Š” ๊ธฐ์ค€
    • Process๋ฅผ ํ•˜์œ„ ํ๋กœ ๋‚ด์ซ’๋Š” ๊ธฐ์ค€
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU ์„œ๋น„์Šค๋ฅผ ๋ฐ›์œผ๋ ค ํ•  ๋•Œ ๋“ค์–ด๊ฐˆ ํ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ์ค€

Example of Multilevel Feedback Queue

  • Three queues:
    • Q0 - time quantum 8 milliseconds
    • Q1 - time quantum 16 milliseconds
    • Q2 - FCFS
  • Scheduling
    • new job์ด queue Q0๋กœ ๋“ค์–ด๊ฐ
    • CPU๋ฅผ ์žก์•„์„œ ํ• ๋‹น ์‹œ๊ฐ„ 8 milliseconds ๋™์•ˆ ์ˆ˜ํ–‰๋จ
    • 8 milliseconds ๋™์•ˆ ๋‹ค ๋๋‚ด์ง€ ๋ชปํ–ˆ์œผ๋ฉด queue Q1์œผ๋กœ ๋‚ด๋ ค๊ฐ
    • Q1์— ์ค„์„œ์„œ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ CPU๋ฅผ ์žก์•„์„œ 16 ms ๋™์•ˆ ์ˆ˜ํ–‰๋จ
    • 16 ms์— ๋๋‚ด์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ queue Q2๋กœ ์ซ’๊ฒจ๋‚จ

์œ„ ๋‚ด์šฉ ๊นŒ์ง€๋Š” CPU๊ฐ€ 1๊ฐœ ์žˆ๋Š” ํ™˜๊ฒฝ์—์„œ์˜ ์Šค์ผ€์ค„๋ง
๋’ค์— ๋‚˜์˜ค๋Š” ์Šค์ผ€์ค„๋ง์€ ์ข€ ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ

Multiple-Processor Scheduling

  • CPU๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ ์Šค์ผ€์ค„๋ง์€ ๋”์šฑ ๋ณต์žกํ•ด์ง
  • Homegeneous processor์ธ ๊ฒฝ์šฐ
    • Queue์— ํ•œ ์ค„๋กœ ์„ธ์›Œ์„œ ๊ฐ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์•Œ์•„์„œ ๊บผ๋‚ด๊ฐ€๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Œ
    • ๋ฐ˜๋“œ์‹œ ํŠน์ • ํ”„๋กœ์„ธ์„œ์—์„œ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฌธ์ œ๊ฐ€ ๋” ๋ณต์žกํ•ด์ง
  • Load sharing(= Load balacing)
    • ์ผ๋ถ€ ํ”„๋กœ์„ธ์„œ์— job์ด ๋ชฐ๋ฆฌ์ง€ ์•Š๋„๋ก ๋ถ€ํ•˜๋ฅผ ์ ์ ˆํžˆ ๊ณต์œ ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜ ํ•„์š”
    • ๋ณ„๊ฐœ์˜ ํ๋ฅผ ๋‘๋Š” ๋ฐฉ๋ฒ• vs ๊ณต๋™ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
  • Symmetric Multiprocessing (SMP)
    • ๊ฐ ํ”„๋กœ์„ธ์„œ๊ฐ€ ๊ฐ์ž ์•Œ์•„์„œ ์Šค์ผ€์ค„๋ง ๊ฒฐ์ •
  • Asymmetric multiprocessing
    • ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์‹œ์Šคํ…œ ๋ฐ์ดํ„ฐ์˜ ์ ‘๊ทผ๊ณผ ๊ณต์œ ๋ฅผ ์ฑ…์ž„์ง€๊ณ  ๋‚˜๋จธ์ง€ ํ”„๋กœ์„ธ์„œ๋Š” ๊ฑฐ๊ธฐ์— ๋”ฐ๋ฆ„

Real-Time Scheduling

  • Hard real-time systems
    • Hard real-time task๋Š” ์ •ํ•ด์ง„ ์‹œ๊ฐ„ ์•ˆ์— ๋ฐ˜๋“œ์‹œ ๋๋‚ด๋„๋ก ์Šค์ผ€์ค„๋งํ•ด์•ผ ํ•จ
  • Soft real-time computing
    • Soft real-time task๋Š” ์ผ๋ฐ˜ ํ”„๋กœ์„ธ์Šค์— ๋น„ํ•ด ๋†’์€ priority๋ฅผ ๊ฐ–๋„๋ก ํ•ด์•ผ ํ•จ

Thread Scheduling

  • Local Scheduling
    • User level thread์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ˆ˜์ค€์˜ thread library์— ์˜ํ•ด ์–ด๋–ค thread๋ฅผ ์Šค์ผ€์ค„ํ• ์ง€ ๊ฒฐ์ •
  • Global Scheduling
    • Kernel level thread์˜ ๊ฒฝ์šฐ ์ผ๋ฐ˜ ํ”„๋กœ์„ธ์Šค์™€ ๋งˆ์ฐฌ ๊ฐ€์ง€๋กœ ์ปค๋„์˜ ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์–ด๋–ค thread๋ฅผ ์Šค์ผ€์ค„ํ• ์ง€ ๊ฒฐ์ •

Algorithm Evaluation

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•

  • Queueing models
    • ํ™•๋ฅ  ๋ถ„ํฌ๋กœ ์ฃผ์–ด์ง€๋Š” arrival rate์™€ service rate ๋“ฑ์„ ํ†ตํ•ด ๊ฐ์ข… performance index ๊ฐ’์„ ๊ณ„์‚ฐ

  • Implementation (๊ตฌํ˜„) & Measurement (์„ฑ๋Šฅ ์ธก์ •)
    • ์‹ค์ œ ์‹œ์Šคํ…œ์— ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•˜์—ฌ ์‹ค์ œ ์ž‘์—…(workload)์— ๋Œ€ํ•ด์„œ ์„ฑ๋Šฅ์„ ์ธก์ • ๋น„๊ต
    • ex) ๋ฆฌ๋ˆ…์Šค์˜ CPU ์Šค์ผ€์ค„๋งํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋„ฃ์–ด์„œ ๊ฐ™์€ ํ•˜๋“œ์›จ์–ด ์กฐ๊ฑด์—์„œ ์–ด๋–ค๊ฒƒ์ด ๋” ์ข‹์€์ง€ ์„ฑ๋Šฅ์„ ์ธก์ • ๋น„๊ต
  • Simulation (๋ชจ์˜ ์‹คํ—˜)
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ชจ์˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ž‘์„ฑ ํ›„ trace๋ฅผ ์ž…๋ ฅ์œผ๋กœ ํ•˜์—ฌ ๊ฒฐ๊ณผ ๋น„๊ต

reference

์šด์˜์ฒด์ œ - ์ดํ™”์—ฌ์ž๋Œ€ํ•™๊ต