03 - CPU Scheduling

SeomIIIยท2021๋…„ 10์›” 22์ผ
0

๐Ÿ“Œ CPU bound & I/O bound

  • cpu burst
    : cpu์— ์˜ํ•ด ์ง์ ‘ ์ˆ˜ํ–‰๋˜๋Š” ์ž‘์—…์˜ ๋ถ€๋ถ„ (I/O ๊ฑฐ์˜ ์—†์Œ)

  • I/O burst
    : cpu์— ์˜ํ•˜์ง€ ์•Š๊ณ  ์ผ์–ด๋‚˜๋Š” ์ž‘์—…์˜ ๋ถ€๋ถ„

  • ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค๋Š” ๋งŽ์€ ์ˆ˜์˜ ์งง์€ cpu burst๋“ค ํ˜น์€ ์ ์€ ์ˆ˜์˜ ๊ธด cpu burst ๋“ค๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ์ด๋“ค์˜ ํŽธ์ค‘์— ๋”ฐ๋ผ I/O bound ํ”„๋กœ๊ทธ๋žจ๊ณผ cpu bound ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋‚˜๋ˆŒ์ˆ˜ ์žˆ๋‹ค

  • I/O bound : ๋Œ€๋ถ€๋ถ„์ด I/O, ๋งŽ์€ ์ˆ˜์˜ ์งง์€ CPU burst

  • cpu bound : ๋Œ€๋ถ€๋ถ„์ด ์ ์€ ์ˆ˜์˜ ๊ธด cpu burst

๐Ÿ“Œ CPU Scheduler

: (short-term scheduler)

  • ready queue์—์„œ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์„œ cpu์— ํ• ๋‹นํ•œ๋‹ค.
  • dispatch latency : dispatcher๊ฐ€ ํ•˜๋‚˜์˜ process๋ฅผ ๋ฉˆ์ถ”๊ณ  ๋‹ค๋ฅธ process๋ฅผ runํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆผ

๐Ÿ“Œ๐ŸŒŸ Preemptive vs Nonpreemptive scheduling

* preemptive scheduling

: ๊ฐ•์ œ์„ฑ์„ ๋„๊ณ  ์žˆ๋‹ค.
: ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค ์Šค์Šค๋กœ๊ฐ€ ์•„๋‹Œ ํƒ€์˜์— ์˜ํ•œ ๊ฐ•์ œ์ ์ธ scheduling์„ ์˜๋ฏธํ•œ๋‹ค.
ex) ๋„์„œ๊ด€์—์„œ ํ˜„์žฌ ์ขŒ์„์„ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋Š” ํ•™์ƒ์—๊ฒŒ ์‹œ๊ฐ„์ด ๋์œผ๋‹ˆ ๋ฌผ๋Ÿฌ๋‚˜๋ผ๊ณ  ํ•˜๋Š” ๊ฒฝ์šฐ
ex) ์‘๊ธ‰์‹ค - ๊ธ‰ํ•œ ํ™˜์ž๊ฐ€ ์ƒ๊ธฐ๋ฉด ๋จผ์ € ์™€์žˆ๋Š” ํ™˜์ž๋ณด๋‹ค ๋จผ์ € ์ˆ˜์ˆ ์„ ๋“ค์–ด๊ฐ„๋‹ค

* nonpreemptive scheduling

: ๊ฐ•์ œ์„ฑ์„ ๋„๊ณ  ์žˆ์ง€ ์•Š๋‹ค.
: ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค ์Šค์Šค๋กœ ์ผ์„ ์ˆ˜ํ•ญํ•ด๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•จ.
: ์Šค์Šค๋กœ ๊ทธ๋งŒ๋‘๊ธฐ ์ „๊นŒ์ง€๋Š” ๊ฐ•์ œ๋กœ ๊ทธ๋งŒ๋‘๊ฒŒ ๋ชปํ•จ.
ex) ๋„์„œ๊ด€ ์ขŒ์„์„ ์ฐจ์ง€ํ•œ ํ•™์ƒ์ด ์ž๋ฆฌ๋ฅผ ๋น„์›Œ์•ผ๋งŒ ์ž๋ฆฌ๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ํ•˜๋Š” ์ขŒ์„ ๋ฐฐ์ •
ex) ์€ํ–‰ - ๋จผ์ € ์˜จ ์†๋‹˜์˜ ์šฉ๋ฌด๊ฐ€ ๋๋‚˜๊ธฐ ์ „๊นŒ์ง€๋Š” ๋‹ค์Œ ์‚ฌ๋žŒ์ด ์ผ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์—†๋‹ค. / ํ™”์žฅ์‹ค

  • RUNNING -> BLOCKED / Process terminated : nonpreemptive

  • RUNNING -> READY / BLCOKED -> READY : preemptive

  • preemptiveํ•œ ์Šค์ผ€์ค„๋ง์ธ ๊ฒฝ์šฐ ์–ด๋– ํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
    : 2๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๊ณต์œ  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

    ex) ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ kernel mode(system call)์—์„œ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ(ํ”„๋กœ์„ธ์Šค ํ…Œ์ด๋ธ”์˜ ์ˆ˜์ •, ํ”„๋กœ์„ธ์Šค์˜ ์ƒ์„ฑ)๋ฅผ ์‚ฌ์šฉ์ค‘์ผ๋•Œ preemption ๋  ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

    ==> process synchronization


    ๐Ÿ“Œ๐ŸŒŸScheduling Criteria

    (์ตœ์„ ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฒฐ์ •ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ค€)

    1. CPU utilization (cpu ์‚ฌ์šฉ๋Ÿ‰/ ์ด์šฉ๋ฅ )

    : ํ˜„์žฌ cpu๊ฐ€ ์–ผ๋งˆ๋‚˜ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. cpu utilization์ด ๋†’์„์ˆ˜๋ก cpu๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋†’์„์ˆ˜๋ก ์ข‹์€ ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ•์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

    2. Throughput (์ฒ˜๋ฆฌ์œจ)

    : ๋‹จ์œ„ ์‹œ๊ฐ„๋‹น ์™„๋ฃŒ์‹œํ‚ค๋Š” ํ”„๋กœ์„ธ์Šค ์ˆ˜
    : ์ฒ˜๋ฆฌ์œจ์ด ๋†’์„์ˆ˜๋ก ์‹œ๊ฐ„๋‹น ๋งŽ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์œผ๋กœ ๋†’์„์ˆ˜๋ก ์ข‹๋‹ค.

    3. Turnaround time (๋ฐ˜ํ™˜ ์‹œ๊ฐ„)

    : process ์‹œ์ž‘ ~ ์™„๋ฃŒ ์‹œ๊ฐ„
    : ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ new ์ƒํƒœ์—์„œ terminated ์ƒํƒœ์— ๋„๋‹ฌํ• ๋•Œ ๊นŒ์ง€์˜ ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
    ๋ฐ˜ํ™˜์‹œ๊ฐ„์ด ์งง์•„์•ผ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์‹œ๊ฐ„์ด ์งง๋‹ค๋Š” ๊ฒƒ์œผ๋กœ ์งง์„์ˆ˜๋ก ์ข‹๋‹ค.
    : ๋ฉ”๋ชจ๋ฆฌ์— ๋“ค์–ด๊ฐ€๊ธฐ ์œ„ํ•ด ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„ + ready queue์—์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„ + cpu ์‹คํ–‰ํ•˜๋Š” ์‹œ๊ฐ„ + I/O ํ•˜๋Š” ์‹œ๊ฐ„

    4. Waiting time (๋Œ€๊ธฐ ์‹œ๊ฐ„)

    : ํ”„๋กœ์„ธ์Šค๊ฐ€ ready queue์—์„œ ๋Œ€๊ธฐํ•œ ์ด ์‹œ๊ฐ„
    : ready queue์—์„œ ๋Œ€๊ธฐํ•œ ์‹œ๊ฐ„์ด ์งง์„์ˆ˜๋ก ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋Œ€๊ธฐ ์—†์ด ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ์งง์„์ˆ˜๋ก ์ข‹๋‹ค.

    5. Response time (์‘๋‹ต ์‹œ๊ฐ„)

    : ์š”๊ตฌ๊ฐ€ ๋“ค์–ด๊ฐ”์„ ๋•Œ, ์ฒซ๋ฒˆ์งธ ์‘๋‹ต์ด ๋Œ์•„์˜ค๊ธฐ๊นŒ์ง€์˜ ์‹œ๊ฐ„
    : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‘๋‹ต์„ ์‹œ์ž‘ํ•  ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„
    : ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ์š”์†Œ์ด๋‹ค. ์งง์„์ˆ˜๋ก ์ข‹๋‹ค.


    ๐Ÿ“Œ Scheduling Algorithms

    1. FCFS (first-come-first-serve scheduling)

    • nonpreemptive scheduling
      : ๋จผ์ € ๋“ค์–ด์˜จ job์„ ๋จผ์ € ์‹คํ–‰ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋จผ์ € ๋“ค์–ด์˜จ job์ด ๋๋‚ ๋•Œ๊นŒ์ง€ ๋‹ค์Œ job์€ ๊ธฐ๋‹ค๋ ค์•ผํ•จ.
      -> ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์— ์žˆ์–ด ๋งŽ์€ ๋ฌธ์ œ ๋‚ดํฌ
    • ready queue๋กœ์จ FIFO๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์šฉ์ดํ•˜๊ฒŒ ๊ด€๋ฆฌ๋จ.
    • ํ‰๊ท ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ๋งค์šฐ ํด ์ˆ˜ ์žˆ๋‹ค.

      #### * convoy effect : ๋จผ์ € ๋„์ฐฉํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ cpu์—์„œ ์ˆ˜ํ–‰๋˜๋Š” burst time์ด ๋งค์šฐ ๊ธธ๋ฉด ๊ทธ ๋‹ค์Œ ๋„์ฐฉํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฒซ๋ฒˆ์งธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๋งค์šฐ ๊ธด ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋œ๋‹ค.

    -> cpu ์ด์šฉ๋ฅ ์ด ๋‚ฎ์•„์ง

ex)
* p1 burst time : 24 / p2 : 3 / p3 : 3


p1 ----- p2 - p3
0 ------ 24 - 27 - 30
p1, p2, p3 ์ˆœ์„œ๋กœ ๋„์ฐฉํ–ˆ๋‹ค๋ฉด ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„ (average waiting time) : (0 + 24 + 27) /3 =17

p2 - p3 -------- p1
0---3--6 ------- 30
p2, p3, p1 ์ˆœ์„œ๋กœ ๋„์ฐฉํ–ˆ๋‹ค๋ฉด ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„ (average waiting time) : (0+3+6)/3 = 3

==> ์‹คํ–‰์‹œ๊ฐ„์ด ์งง์€ ์ˆœ์œผ๋กœ ํ•˜๋ฉด ์ข‹๊ฒ ๋‹ค
:: SJF(shortest job first algorithm)

2. SJF (shortest-job-first scheduling)

  • ๋‹ค์Œ์— ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  cpu burst๋“ค ์ค‘์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜ํ–‰์‹œ๊ฐ„์„ ๊ฐ€์ง€๋Š” ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ ์„ ํƒํ•œ๋‹ค.
    ๋งŒ์•ฝ, 2๊ฐœ ์ด์ƒ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ชจ๋‘ ๋™์ผํ•œ ์ˆ˜ํ–‰์‹œ๊ฐ„์„ ๊ฐ€์ง„๋‹ค๋ฉด ๊ทธ๋“ค ์ค‘์—์„œ๋Š” FCFS๋กœ scheduling ํ•œ๋‹ค.

  • nonpreemptive scheduling

  • ์ˆ˜ํ–‰๋  ํ”„๋กœ์„ธ์Šค , ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜ํ–‰์‹œ๊ฐ„์„ ์•Œ์ˆ˜๊ฐ€ ์—†๋‹ค.
    = ์‹ค์ œ๋กœ ์‹คํ–‰ ์ „์—๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์ˆ˜ํ–‰์‹œ๊ฐ„์„ ์•Œ ์ˆ˜ ์—†๊ธฐ๋•Œ๋ฌธ์— ๋น„ํ˜„์‹ค์ ์ด๋‹ค.

    ex)
    *p1 : 6 / p2 : 8 / p3 : 7 / p4 : 3


    p4 -- p1 -- p3 -- p2
    00 -- 03 -- 09 -- 16 -- 24
    ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„
    (p4:0/ p1:3 / p3:9 / p2: 16 -> (0+3+9+16)/4=7)
    ** ๋งŒ์•ฝ FCFS scheduling ์„ ํ•œ๋‹ค๋ฉด?
    (0+6+14+21)/4 = 10.25

    3. SRTF (Shortest-Remaining-Time-First)

  • ์ž”์—ฌ cpu burst๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒํ•œ๋‹ค.

  • SJF scheduling ๊ธฐ๋ฒ•์˜ preemptive version ์ด๋‹ค.

  • ํ”„๋กœ์„ธ์Šค์˜ ready queue์—์˜ ๋„์ฐฉ์‹œ๊ฐ„์ด ๋ช…์‹œ๋˜์–ด์•ผ ํ•œ๋‹ค.

    ex) ๐ŸŒŸ๊ณ„์‚ฐ๋ฌธ์ œ - ์ž๋ฃŒ ๋ณด๊ธฐ ๊ผญ!

    4. Priority Scheduling

  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ ํ”„๋กœ์„ธ์Šค์— ๋ฐฐ์ •๋œ๋‹ค. ๋ฌด์—‡์„ ์šด์„ ์ˆœ์œ„๋กœ ์ค„ ๊ฒƒ์ธ๊ฐ€๊ฐ€ ๊ฒฐ์ •๋˜์–ด์•ผ ํ•œ๋‹ค.

  • SJF (ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ์ž‘์„์ˆ˜๋ก) , SRTF (์ž”์—ฌ CPU burst๊ฐ€ ์ž‘์„์ˆ˜๋ก) ๋„ ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ฅด๋ง์˜ ํ•œ ์ข…๋ฅ˜์ด๋‹ค.

  • FCFS๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋™์ผํ•˜๊ฒŒ ํ•œ ๊ฒฝ์šฐ์ด๋‹ค.

  • preemptive ๋˜๋Š” nonpreemptive ํ•˜๊ฒŒ ์šด์˜๋  ์ˆ˜ ์žˆ๋‹ค.

    • ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์˜ ๋ฌธ์ œ์ 
      : starvation = ์˜ค๊ธด์˜ค๋Š”๋ฐ, ์–ธ์ œ์˜ฌ์ง€ ๋ชจ๋ฆ„
      : ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๊ณ„์† ๋“ค์–ด์˜ค๋ฉด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋Š” ์–ธ์ œ ์ˆ˜ํ–‰๋ ์ง€ ๋ชจ๋ฆ„.
      -> aging ๊ธฐ๋ฒ• : ์˜ค๋žซ๋™์•ˆ ์‹œ์Šคํ…œ์— ๋‚จ์•„์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ์ ์ง„์ ์œผ๋กœ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์˜ฌ๋ ค์ฃผ๋Š” ๊ธฐ๋ฒ•
    • ์šฐ์„ ์ˆœ์œ„ ๋ฐ˜์ „ ํ˜„์ƒ
      : ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ˜„์ƒ
      : real-time ์ธ ๊ฒฝ์šฐ ์ฃผ์–ด์ง„ deadline์„ ๋งž์ถ”์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

      ์šฐ์„ ์ˆœ์œ„ ์ƒ์† (priority inheritance)
      ex) client๊ฐ€ ์šฐ์„ ์ˆœ์œ„๋ฅผ server์—๊ฒŒ ๋„˜๊ฒจ์ค€๋‹ค.

    5. RR (Round-Robin) scheduling

  • ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์ด๋‹ค. (์›ํ˜•ํ๋ฅผ ready queue๋กœ ์‚ฌ์šฉ)

  • FCFS์™€ ๋น„์Šทํ•˜์ง€๋งŒ preemptive scheduling ์ด๋‹ค.

  • ํ•œ ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค์— ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ• ๋‹นํ•œ๋‹ค.

  • ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ฝค ๊ธธ๋‹ค.

  • time slice์˜ size์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์ด ๋‹ฌ๋ผ์ง„๋‹ค
    : infinite(too long) = FCFS์™€ ๋™์ผํ•˜๋‹ค
    : too short = ์Šค์œ„์นญ์ด ๋„ˆ๋ฌด ๋น ๋ฅด๊ฒŒ ์ผ์–ด๋‚˜์„œ ํ•œ ํ”„๋กœ์„ธ์Šค๋งŒ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ฐฉ๊ฐํ•จ. (process sharing effect)
    / time slice์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์•„์งˆ์ˆ˜๋ก context switchํ•˜๋Š” ํšŸ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•ด context switch์— ๋Œ€ํ•œ overhead๊ฐ€ ์ปค์ ธ ์„ฑ๋Šฅ ์ €ํ•˜
    : time slice > switching time ์ด์–ด์•ผ ํ•จ.

    * turnaround time

    : time slice์˜ ํฌ๊ธฐ๊ฐ€ ์ž‘์•„์งˆ์ˆ˜๋ก ์ปค์ง„๋‹ค.
    : time slice ํ•œ๋ฒˆ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ”๋กœ ๋๋‚˜๋ฉด turnaround time์ด ๊ฐœ์„ ๋  ์ˆ˜ ์žˆ๋‹ค.
    ++ ๐ŸŒŸ๊ณ„์‚ฐ!

    6. MQ (Multilevel Queue) scheduling

  • ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ทธ๋ฃนํ™” ํ•ด์„œ ๊ฐ๊ฐ์˜ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐ€์ง.
    : ์€ํ–‰์—์„œ ๊ฐ„๋‹จํ•œ ์—…๋ฌด / ๋Œ€์ถœ ์—…๋ฌด๋ฅผ ๊ตฌ๋ถ„ํ•ด์„œ ๋ฐ›๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•จ.

  • ๊ฐ queue๋“ค๋„ ์Šค์ผ€์ค„๋ง์„ ํ•ด์ฃผ์–ด์•ผํ•จ.
    : ๊ฐ๊ฐ์˜ queue์— ์ ˆ๋Œ€์  ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์กด์žฌํ•จ.

  • ๊ฐ queue๋Š” ๋…๋ฆฝ๋œ scheduling ์ •์ฑ…์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ.

  • scheduling overhead๊ฐ€ ๋‚ฎ์€ ์žฅ์ ์ด ์žˆ์ง€๋งŒ inflexibleํ•˜๋‹ค.
    : ํ•œ ํ”„๋กœ์„ธ์Šค๋Š” ๊ทธ๋ฃน์— ํ• ๋‹น๋˜๋ฉด ๊ณ ์ •๋จ.

    7. MFQ (Multilevel Feedback Queue) scheduling

  • queue ๊ฐ„์˜ ํ”„๋กœ์„ธ์Šค ์ด๋™์„ ํ—ˆ์šฉํ•œ๋‹ค.

  • ๋„ˆ๋ฌด ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” process๋Š” lower-priority queue๋กœ ์ด๋™์‹œํ‚จ๋‹ค.

  • starvation ์šฐ๋ ค์‹œ higher-priority queue๋กœ ์ด๋™์‹œํ‚จ๋‹ค.

    8. RT (Real-Time) scheduling

  • hard real-time
    : ์‘๋‹ต์‹œ๊ฐ„์„ ๋ณด์žฅํ•ด์ค˜์•ผ ํ•จ.
    : ์‹œ๊ฐ„์•ˆ์— ๋๋‚˜๋ฉด ์‹œ์ž‘ํ•˜๊ณ , ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด ์‹œ์ž‘์„ ์•ˆํ•จ
    : ํŠน์ˆ˜ ๋ชฉ์ ์— ์ด์šฉ๋จ (๋ฌด๊ธฐ / ํ•ต๋ฏธ์‚ฌ์ผ)

  • soft real-time
    : hard real time ๋ณด๋‹ค๋Š” ๋œ ์ œํ•œ์ ์ด๋‹ค.
    : atm ๊ธฐ๊ณ„, ์ŠคํŠธ๋ฆฌ๋ฐ์— ์ด์šฉ๋จ.
    : ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜ ์Šค์ผ€์ค„๋ง์„ ์ด์šฉํ•จ

profile
FE Programmer

0๊ฐœ์˜ ๋Œ“๊ธ€