๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
CS/์šด์˜์ฒด์ œ

15. CPU Scheduling Algorithm

by ๐Ÿณ Laboon 2024. 4. 22.

์Šค๋ ˆ๋“œ ํ‘œ

FCFS (First Come First Served) ์Šค์ผ€์ฅด๋ง
  • ์„ ์ž…์„ ์ฒ˜๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์Šค์ผ€์ค„๋ง ํŒŒ๋ผ๋ฏธํ„ฐ : ์Šค๋ ˆ๋“œ๋ณ„ ๋„์ฐฉ ์‹œ๊ฐ„
  • ๋น„์„ ์  ์Šค์ผ€์ฅด๋ง
  • ์Šค๋ ˆ๋“œ ์šฐ์„ ์ˆœ์œ„ ์—†์Œ
  • ๊ธฐ์•„ ์—†์Œ, ์Šค๋ ˆ๋“œ ์˜ค๋ฅ˜๋กœ ๋ฌดํ•œ ๋ฃจํ”„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ๊ธฐ์•„ ๋ฐœ์ƒ
  • ์ฒ˜๋ฆฌ์œจ์ด ๋‚ฎ์Œ.
  • ํ˜ธ์œ„ ํšจ๊ณผ (convoy effcet) ๋ฐœ, ๊ธด์Šค๋ ˆ๋“œ๊ฐ€ ์˜ค๋ž˜ CPU๋ฅผ ์ฐจ์ง€ํ•˜๋ฉด ๋Šฆ๊ฒŒ ๋“ค์–ด์˜จ ์Šค๋ ˆ๋“œ๋Š” ์˜ค๋ž˜ ๋Œ€๊ธฐ

์Šค๋ ˆ๋“œ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„

์ด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ 11s, ๋Œ€๊ธฐ์‹œ๊ฐ„ 11s, ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„ 11 / 4 = 2.75ms

 

SJF (Shortest Job First)
  • ์ตœ๋‹จ ์ž‘์—… ์šฐ์„  ์Šค์ผ€์ค„๋ง
  • ์Šค์ผ€์ค„๋ง ํŒŒ๋ผ๋ฏธํ„ฐ : ์Šค๋ ˆ๋“œ ๋ณ„ ์˜ˆ์ƒ ์‹คํ–‰ ์‹œ๊ฐ„
  • ๋น„์„ ์  ์Šค์ผ€์ค„๋ง
  • ์Šค๋ ˆ๋“œ ์šฐ์„ ์ˆœ์œ„ : ์งง์€ ์Šค๋ ˆ๋“œ ์‹คํ–‰ ์‹œ๊ฐ„
  • ๊ธฐ์•„ ๋ฐœ์ƒ๊ฐ€๋Šฅ, ์ง€์†์ ์œผ๋กœ ์งง์€ ์Šค๋ ˆ๋“œ๊ฐ€ ๋„์ฐฉ์‹œ ๊ธด ์Šค๋ ˆ๋“œ์˜ ์‹คํ–‰์„ ์˜ˆ์ธก ๋ถˆ๊ฐ€
  • ์งง์€ ์Šค๋ ˆ๋“œ๊ฐ€ ๋จผ์ € ์‹คํ–‰๋˜๋ฏ€๋กœ ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„ ์ตœ์†Œํ™”
  • ํ˜„์‹ค์ ์œผ๋กœ ์‹คํ–‰ ์‹œ๊ฐ„์˜ ์˜ˆ์ธก์ด ๋ถˆ๊ฐ€

์Šค๋ ˆ๋“œ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„

์ด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ 11ms, ๋Œ€๊ธฐ ์‹œ๊ฐ„ 9ms, ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„ 9ms/4 = 2.25ms

 

SRTF (Shortest Remaining Time First)
  • ์ตœ์†Œ ์ž”์—ฌ์‹œ๊ฐ„ ์šฐ์„  ์Šค์ผ€์ค„๋ง, ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค ๋งˆ๋‹ค ๋‚จ์€ ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง์€ ์Šค๋ ˆ๋“œ๋ฅผ ์„ ํƒ
  • ์Šค์ผ€์ค„๋ง ํŒŒ๋ผ๋ฏธํ„ฐ : ์Šค๋ ˆ๋“œ ๋ณ„ ์˜ˆ์ƒ ์‹คํ–‰ ์‹œ๊ฐ„๊ณผ ๋‚จ์€ ์‹คํ–‰ ์‹œ๊ฐ„
  • SJF์˜ ์„ ์  ์Šค์ผ€์ค„๋ง
  • ์Šค๋ ˆ๋“œ ์šฐ์„  ์ˆœ์œ„ ์—†์Œ.
  • ๊ธฐ์•„๋Š” SJF์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐœ์ƒ ๊ฐ€๋Šฅ
  • ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„ ์ตœ์†Œํ™”
  • SRTF๋„ ํ˜„์‹ค์ ์œผ๋กœ ์‚ฌ์šฉ ๋ถˆ๊ฐ€

์Šค๋ ˆ๋“œ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„

์ด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ 11ms, ๋Œ€๊ธฐ ์‹œ๊ฐ„ 8ms, ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„ 2ms

RR (Round-Robin)
  • ์Šค๋ ˆ๋“œ๋“ค์— ๊ณตํ‰ํ•œ ์‹คํ–‰ ๊ธฐํšŒ๊ฐ€ ์ฃผ์–ด์ง
    • ํ์— ๋Œ€๊ธฐ์ค‘์ธ ์Šค๋ ˆ๋“œ๋“ค์„ ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค ์ฃผ๊ธฐ๋กœ ์„ ํƒ
    • ๋„์ฐฉํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์Šค๋ ˆ๋“œ๋“ค์„ ํ์— ์‚ฝ์ž…
    • ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๊ฐ€ ์ง€๋‚˜๋ฉด ํ์˜ ๋์œผ๋กœ ์ด๋™
  • ์Šค์ผ€์ค„๋ง ํŒŒ๋ผ๋ฏธํ„ฐ : ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค
  • ์„ ์  ์Šค์ผ€์ค„๋ง
  • ์šฐ์„ ์ˆœ์œ„ : ์—†์Œ
  • ๊ธฐ์•„ ์—†์Œ
  • ๊ตฌํ˜„์ด ์‰ฝ๊ณ  ํ˜„์‹ค์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ์ง€๋งŒ ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค์— ๋”ฐ๋ผ ์žฆ์€ ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ์ด ๋ฐœ์ƒํ•ด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ฆ๊ฐ€
  • ํƒ€์ž„์Šฌ๋ผ์ด์Šค๊ฐ€ ํฌ๋ฉด FCFS์™€ ๋™์ผํ•˜๊ณ  ์ ์œผ๋ฉด SJF/SRTF์™€ ๊ฐ€๊น๋‹ค.

Round Robin ์ฒ˜๋ฆฌ ๋ฐฉ์‹

์ด ์ฒ˜๋ฆฌ์‹œ๊ฐ„ 11ms, ๋Œ€๊ธฐ ์‹œ๊ฐ„ 12ms, ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„ 3ms, ์Šค์ผ€์ค„๋ง 6๋ฒˆ, ์ปจํ…์ŠคํŠธ ์Šค์œ„์นญ 5๋ฒˆ ๋ฐœ์ƒ

1. ํ์—๋Š” T1, T2, T3, T4 ์ˆœ์„œ๋Œ€๋กœ ์‚ฝ์ž…๋œ๋‹ค.

2. 2ms๊นŒ์ง€ T1์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋‹ค ๋‚จ์€ ์Šค๋ ˆ๋“œ๋Š” TCB์— ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๋‹ค์‹œ Queue์— ์‚ฝ์ž…ํ•œ๋‹ค.

3. 2ms๋ถ€ํ„ฐ๋Š” ๋„์ฐฉ์‹œ๊ฐ„ 1์— ๋„์ฐฉํ•œ T2๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ด ๋•Œ, T2๋Š” 1ms๋ฅผ ๋Œ€๊ธฐํ•˜๊ฒŒ ๋œ๋‹ค.

์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•๋“ค์„ ๋ฐ˜๋ณตํ•˜๋ฉด ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

Priority ์Šค์ผ€์ค„๋ง
  • ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์Šค๋ ˆ๋“œ๋ฅผ ์„ ํƒํ•ด์„œ ์‹คํ–‰ ์‹œํ‚จ๋‹ค.
    • ํ˜„์žฌ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ๋” ๋†’์€ ์ˆœ์œ„์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋„์ฐฉ ์‹œ, ๊ฐ€์žฅ ๋†’์€ ์ˆœ์œ„์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์„ ํƒ
    • ๋ชจ๋“  ์Šค๋ ˆ๋“œ์— ์ข…๋ฃŒ์‹œ๊นŒ์ง€ ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ๊ณ ์ • ์šฐ์„ ์ˆœ์œ„๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
    • ์šฐ์„ ์ˆœ์œ„ ํ์— ์‚ฝ์ž…๋œ๋‹ค.
  • ์Šค์ผ€์ค„๋ง ํŒŒ๋ผ๋ฏธํ„ฐ : ์Šค๋ ˆ๋“œ ๋ณ„ ๊ณ ์ • ์šฐ์„ ์ˆœ์œ„
  • ์„ ์ /๋น„์„ ์  ์Šค์ผ€์ค„๋ง
    • ๋” ๋†’์€ ์Šค๋ ˆ๋“œ๊ฐ€ ๋„์ฐฉ ์‹œ ์„ ์  ์Šค์ผ€์ค„๋ง
    • ๋” ๋†’์€ ์Šค๋ ˆ๋“œ๊ฐ€ ๋„์ฐฉํ•˜์ง€ ์•Š์œผ๋ฉด ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ์Šค๋ ˆ๋“œ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ ๋น„์„ ์  ์Šค์ผ€์ค„๋ง
  • ์šฐ์„ ์ˆœ์œ„ : ์žˆ์Œ
  • ๊ณ„์†ํ•ด์„œ ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ๋„์ฐฉ ์‹œ, ๋จผ์ € ๋„์ฐฉํ•œ ๋‚ฎ์€ ์ˆœ์œ„์˜ ์Šค๋ ˆ๋“œ๋Š” ์‹คํ–‰ ๋ถˆ๊ฐ€
    • ์—์ด์ง• ๊ธฐ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์Šค๋ ˆ๋“œ์ผ์ˆ˜๋ก ๋Œ€๊ธฐ์‹œ๊ฐ„์ด๋‚˜ ์‘๋‹ต์‹œ๊ฐ„์ด ์งง๋‹ค.

์Šค๋ ˆ๋“œ ๋ณ„ ๊ณ ์ • ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๋Š” ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค.

 

MLQ (Multi-Level Queue) ์Šค์ผ€์ค„๋ง
  • ์Šค๋ ˆ๋“œ๋ฅผ n๊ฐœ์˜ ์šฐ์„ ์ˆœ์œ„ ๋ ˆ๋ฒจ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค. ๋ ˆ๋ฒจ์ด ๋†’์€ ์Šค๋ ˆ๋“œ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ๊ณ ์ •๋œ n๊ฐœ์˜ ํ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐ ํ์— ๊ณ ์ • ์šฐ์„ ์ˆœ์œ„๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
    • ์Šค๋ ˆ๋“œ๋“ค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ n๊ฐœ์˜ ๋ ˆ๋ฒจ๋กœ ๋ถ„๋ฅ˜ํ•œ๋‹ค.
    • ์Šค๋ ˆ๋“œ ๋„์ฐฉ ์‹œ ์šฐ์„ ์ˆœ์œ„ ๋ ˆ๋ฒจ์— ๋งž๋Š” ํ์— ์‚ฝ์ž…ํ•œ๋‹ค.
    • ๊ฐ€์žฅ ๋†’์€ ์ˆœ์œ„์˜ ํ๊ฐ€ ๋นŒ ๋•Œ, ๊ทธ ๋‹ค์Œ ์ˆœ์œ„์˜ ํ์—์„œ ์Šค์ผ€์ค„๋งํ•œ๋‹ค.
    • ๋‹ค๋ฅธ ํ๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋‚˜๋จธ์ง€ ๋‚ด์šฉ์€ Priority Queue์™€ ๋™์ผํ•˜๋‹ค.

์‹ค ์‚ฌ์šฉ ์˜ˆ๋กœ ์ „์ฒด ์Šค๋ ˆ๋“œ๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์™€ ํฌ๊ทธ๋ผ์šด๋“œ ์Šค๋ ˆ๋“œ๋กœ ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ ์Šค๋ ˆ๋“œ, ๋Œ€ํ™”์‹ ์Šค๋ ˆ๋“œ, ๋ฐฐ์น˜ ์Šค๋ ˆ๋“œ ๋“ฑ 3๊ฐœ์˜ ๋ ˆ๋ฒจ ํ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค.

 

MLFQ (Multi-Level Feedback Queue) ์Šค์ผ€์ค„๋ง
  • ๊ธฐ์•„๋ฅผ ์—†์• ๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋ ˆ๋ฒจ์˜ ํ ์‚ฌ์ด์— ์Šค๋ ˆ๋“œ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค.
  • ์งง์€ ์Šค๋ ˆ๋“œ์™€ I/O๊ฐ€ ๋งŽ์€ ์Šค๋ ˆ๋“œ, ๋Œ€ํ™”์‹ ์Šค๋ ˆ๋“œ๋ฅผ ์šฐ์„  ์ฒ˜๋ฆฌํ•ด์„œ ์Šค๋ ˆ๋“œ ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„์„ ์ค„์ธ๋‹ค.
  • MLQ์™€ ๊ฐ™์ด N๊ฐœ์˜ ๊ณ ์ • ๋ ˆ๋ฒจ ํ๋ฅผ ๊ฐ€์ง€๊ณ  ํ๋งˆ๋‹ค ์„œ๋กœ ๋‹ค๋ฅธ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•œ๋‹ค.
  • ํ๋งˆ๋‹ค ์Šค๋ ˆ๋“œ๊ฐ€ ๋จธ๋ฌด๋ฅผ ์ˆ˜ ์žˆ๋Š” ํ ํƒ€์ž„์Šฌ๋ผ์ด์Šค๊ฐ€ ์žˆ๋‹ค.
    • ๋‚ฎ์€ ๋ ˆ๋ฒจ์˜ ํ์ผ์ˆ˜๋ก ํƒ€์ž„์Šฌ๋ผ์ด์Šค๊ฐ€ ๋” ๊ธธ๋‹ค.
    • I/O ์ง‘์ค‘ ์Šค๋ ˆ๋“œ๋Š” ๋†’์€ ์ˆœ์œ„์˜ ํ์— ์žˆ๋‹ค.
  • ์Šค๋ ˆ๋“œ๋Š” ๋„์ฐฉ ์‹œ ์ตœ์ƒ์œ„ ๋ ˆ๋ฒจ ํ์— ์‚ฝ์ž…
    • ๊ฐ€์žฅ ๋†’์€ ๋ ˆ๋ฒจ์˜ ํ์—์„œ ์Šค๋ ˆ๋“œ๋ฅผ ์„ ํƒ
    • ๊ฐ€์žฅ ๋†’์€ ๋ ˆ๋ฒจ์˜ ํ๊ฐ€ ๋น„์–ด์žˆ์œผ๋ฉด ๊ทธ ์•„๋ž˜ ๋ ˆ๋ฒจ์˜ ํ์—์„œ ์Šค๋ ˆ๋“œ๋ฅผ ์„ ํƒ
    • ์Šค๋ ˆ๋“œ์˜ CPU-burst๊ฐ€ ํ ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๋ฅผ ์ดˆ๊ณผํ•˜๋ฉด ์•„๋ž˜ ํ๋กœ ์ด๋™
    • ์Šค๋ ˆ๋“œ๊ฐ€ ์ž๋ฐœ์ ์œผ๋กœ Yield ํ•œ ๊ฒฝ์šฐ, ํ ๋์— ์‚ฝ์ž…
    • ์Šค๋ ˆ๋“œ๊ฐ€ I/O ๋ฐœ์ƒ ์‹œ, I/O๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ๋™์ผํ•œ ๋ ˆ๋ฒจ ํ์˜ ๋์œผ๋กœ ์ด๋™
    • ํ์— ์žˆ๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜๋˜๋ฉด ๊ธฐ์•„๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•ด ํ ๋ ˆ๋ฒจ์—…
    • ์ตœํ•˜์œ„ ๋ ˆ๋ฒจ ํ๋Š” FCFS๋‚˜ TimeSlice ๊ฐ€ ๊ธด RR๋กœ ์Šค์ผ€์ค„ํ•œ๋‹ค.
    • ์ตœํ•˜์œ„ ๋ ˆ๋ฒจ ํ์— ์†ํ•œ ์Šค๋ ˆ๋“œ๋“ค์€ ๋‹ค๋ฅธ ํ๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค.
  • ์Šค์ผ€์ค„๋ง ํŒŒ๋ผ๋ฏธํ„ฐ : ๊ฐ ํ์˜ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰
  • ์„ ์  ์Šค์ผ€์ค„๋ง
  • ์Šค๋ ˆ๋“œ ์šฐ์„ ์ˆœ์œ„๋Š” ์—†์Œ, ํ์— ๋”ฐ๋ฅธ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์žˆ์Œ.
  • ์—์ด์ง• ๊ธฐ๋ฒ•์„ ์ ์šฉํ•จ์œผ๋กœ ๊ธฐ์•„๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • I/O ์ง‘์ค‘ ์Šค๋ ˆ๋“œ๋‚˜ Cput burst๊ฐ€ ์งง์€ ํ๋ฅผ ๋†’์€ ๋ ˆ๋ฒจ์—์„œ ๋นจ๋ฆฌ ์‹คํ–‰ํ•จ์œผ๋กœ CPU ํ™œ์šฉ๋ฅ ์ด ๋†’์•„์ง„๋‹ค.

MLFQ
MLFQ Scheduling Info
MLFQ ์Šค์ผ€์ค„ ๊ณผ์ •

 

Time Queue3 Queue2 Queue1 Wait Time Schedule info
0 T1       q3.pop() - T1 ์ฒ˜๋ฆฌ
1 T2       T1 ์ฒ˜๋ฆฌ
T2 ๋Œ€๊ธฐ
2 T2     T2 - 1ms q3.pop() - T2์ฒ˜๋ฆฌ
T1 - I/O ์ž‘์—… 
3 T3       T2์ฒ˜๋ฆฌ
T3 ๋Œ€๊ธฐ
4 T3     T3 - 1ms T2์ฒ˜๋ฆฌ
T3 ๋Œ€๊ธฐ
5 T3     T3 - 2ms T2์ฒ˜๋ฆฌ
T3 ๋Œ€๊ธฐ
6 T3     T3 - 3ms T2 Time slice ์ดˆ๊ณผ,
Q3.pop() - T3์ฒ˜๋ฆฌ,
Q2.push(T2) - T2 ๋Œ€๊ธฐ
7   T2   T2 - 1ms T3 ์ฒ˜๋ฆฌ
T1 I/O ์ž‘์—… ์ข…๋ฃŒ - ๊ฐ™์€ ๋ ˆ๋ฒจ Q3.push(T1)
T1, T2 ๋Œ€๊ธฐ
8 T1 T2   T2 - 2ms, T1 - 1ms T3 ์ฒ˜๋ฆฌ
T1, T2 ๋Œ€๊ธฐ
9 T1 T2   T2 - 3ms, T1 - 2ms T3 ์ฒ˜๋ฆฌ
T1, T2 ๋Œ€๊ธฐ
10 T1 T2   T2 - 4ms, T1 - 3ms T3 Time Slice ์ดˆ๊ณผ,
ํ•˜์œ„๋ ˆ๋ฒจ Q2.push(T3)
์ตœ์ƒ์œ„ Q3.pop() - T1์ฒ˜๋ฆฌ
T2 ๋Œ€๊ธฐ, T3 ๋Œ€๊ธฐ
11   T2, T3   T2 - 5ms, T3 - 1ms T1 ์ฒ˜๋ฆฌ
T2, T3 ๋Œ€๊ธฐ
12   T2, T3   T2 - 6ms, T3 - 2ms T1 ์ฒ˜๋ฆฌ ์™„๋ฃŒ ๋ฐ I/O์ž‘์—…
์ตœ์ƒ์œ„ Q2.pop() - T2 ์ฒ˜๋ฆฌ
T3 ๋Œ€๊ธฐ
13   T3   T3 - 3ms T2 ์ฒ˜๋ฆฌ
T3 ๋Œ€๊ธฐ
14   T3   T3 - 4ms T2 ์ฒ˜๋ฆฌ ์™„๋ฃŒ ๋ฐ I/O ์ž‘์—…
์ตœ์ƒ์œ„ Q2.pop() - T3 ์ฒ˜๋ฆฌ
15         T3 ์ฒ˜๋ฆฌ
16   T2     T3 ์ฒ˜๋ฆฌ
T2 I/O ์ž‘์—… ์ข…๋ฃŒ - ๊ฐ™์€ ๋ ˆ๋ฒจ Q2.push(T2)
T2 ๋Œ€๊ธฐ
17   T2   T2 - 1ms T3 ์ฒ˜๋ฆฌ
T2 ๋Œ€๊ธฐ
18   T2   T2 - 2ms T3 ์ฒ˜๋ฆฌ
T1 I/O ์ž‘์—… ์ข…๋ฃŒ - ๊ฐ™์€ ๋ ˆ๋ฒจ Q3.push(T1)
T1, T2 ๋Œ€๊ธฐ
19 T1 T2   T2 - 3ms, T1 - 1ms T3 ์ฒ˜๋ฆฌ
T1, T2 ๋Œ€๊ธฐ
20 T1 T2   T2 - 4ms, T1 - 2ms T3 Time Slice ์ดˆ๊ณผ,
ํ•˜์œ„๋ ˆ๋ฒจ Q1.push(T3)
์ตœ์ƒ์œ„ Q3.pop() - T1 ์ฒ˜๋ฆฌ
T2 ๋Œ€๊ธฐ
21   T2 T3 T2 - 5ms, T3 - 1ms T1 ์ฒ˜๋ฆฌ
T2, T3 ๋Œ€๊ธฐ
22   T2 T3 T2 - 6ms, T3 - 2ms T1 ์ฒ˜๋ฆฌ ์™„๋ฃŒ
์ตœ์ƒ์œ„ Q2.pop() - T2 ์ฒ˜๋ฆฌ
T3 ๋Œ€๊ธฐ
23     T3 T3 - 3ms T2 ์ฒ˜๋ฆฌ
T3 ๋Œ€๊ธฐ
24     T3 T3 - 4ms T2 ์ฒ˜๋ฆฌ
T3 ๋Œ€๊ธฐ
25     T3 T3 - 5ms T2 ์ฒ˜๋ฆฌ
T3 ๋Œ€๊ธฐ
26     T3 T3 - 6ms T2 ์ฒ˜๋ฆฌ ์™„๋ฃŒ
์ตœ์ƒ์œ„ Q1.pop() - T3 ์ฒ˜๋ฆฌ
27         T3 ์ฒ˜๋ฆฌ
28         T3 ์ฒ˜๋ฆฌ ์™„๋ฃŒ
์Šค์ผ€์ค„๋ง ์ข…๋ฃŒ 

 

3๊ฐœ์˜ ์Šค๋ ˆ๋“œ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ 28ms

์Šค๋ ˆ๋“œ๋ณ„ ๋Œ€๊ธฐ ์‹œ๊ฐ„ 5ms, 13ms, 13ms

ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„ 31ms/3 = 10.3ms