๐Ÿ“Œ CPU ์Šค์ผ€์ค„๋Ÿฌ(Scheduler)2

3 minute read

CPU ์Šค์ผ€์ค„๋Ÿฌ

CPU๋ฅผ ์“ฐ๋Š” CPU burst, I/O๋ฅผ ์“ฐ๋Š” I/O burst ์ž‘์—…์„ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋œ๋‹ค.

Scheduling Algorithm

  1. FCFS: First Come First Served (non-preemptive)

    • ๋จผ์ €์˜จ ์ˆœ์„œ๋Œ€๋กœ CPU๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค.
    • non-preemptive๋‹ค.
    • ๋ง๊ทธ๋Œ€๋กœ ์„ ์ฐฉ์ˆœ์ด๋‹ค
    • ํ•˜์ง€๋งŒ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํšจ์œจ์ ์ด์ง€ ๋ชปํ•˜๋‹ค
    • ์™œ๋ƒํ•˜๋ฉด ์•ž์— ๊ธด ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ์œผ๋ฉด, ํ‰๊ท ์ ์œผ๋กœ ๋Œ€๊ธฐํ•˜๋Š” ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ฅผ Convoy Effect๋ผ๊ณ  ํ•œ๋‹ค.
    • Convoy Effect(ํ˜ธ์œ„ ํšจ๊ณผ): short process behind long process
  2. SJF: Shortest-Job-First

    • ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ๋‹ค์Œ๋ฒˆ CPU burst time์„ ๊ฐ€์ง€๊ณ  ์Šค์ผ€์ค„๋ง์— ํ•„์š”
    • CPU burst time์ด ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์ผ ๋จผ์ € ์Šค์ผ€์ค„ํ•จ
    • Two Schemes
      • Nonpreeemptive
        • ์ผ๋‹จ CPU๋ฅผ ์žก์œผ๋ฉด CPU burst๊ฐ€ ๋๋‚  ๋•Œ ๊นŒ์ง€ CPU๋ฅผ ์„ ์  ๋‹นํ•˜์ง€ ์•Š๋Š”๋‹ค.
      • Preemptive
        • ํ˜„์žฌ ์ˆ˜ํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ๋‚จ์€ CPU burst time๋ณด๋‹ค ๋” ์งง์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๋ฉด CPU๋ฅผ ๋นผ์•˜๊ธด๋‹ค.
        • ์ด ๋ฐฉ๋ฒ•์„ Shortest-Remaining-time-First(SRTF)๋ผ๊ณ  ํ•œ๋‹ค.
    • SJF is optimal
      • ์ฃผ์–ด์ง„ ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ minimum average waiting time์„ ๋ณด์žฅํ•œ๋‹ค. (์‹ค์ œ๋กœ programmers์— ํ•ด๋‹น ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ, ํ’€์ด๋ฅผ ๋ณด๋ฉด heapq๋ฅผ ์ด์šฉํ•จ)
    • Problem
      • starvation: ๊ธด ํ”„๋กœ์„ธ์Šค๋Š” ์˜์›ํžˆ ์Šค์ผ€์ค„์„ ๋ชป์–ป์„ ์ˆ˜ ์žˆ์Œ
      • ๋ˆ„๊ฐ€ CPU๋ฅผ ๊ธธ๊ฒŒ ์“ฐ๋Š”์ง€ ์ฒ˜์Œ์—๋Š” ์•Œ ์ˆ˜ ์—†๋‹ค.
        • ์ถ”์ •(estimate)๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค
        • ๋˜๋Š” ๊ณผ๊ฑฐ์˜ CPU burst๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.
        • ์ด๋Ÿฌํ•œ ์˜ˆ์ธก๊ฐ’์„ ์‹ค์ œ๊ฐ’๊ณผ ์˜ˆ์ธก๊ฐ’์˜ ๊ฐ€์ค‘์น˜(alpha)๋กœ ์˜ˆ์ธกํ•˜๊ฒŒ ๋˜๋Š”๋ฐ
        • ์ด๋ฅผ ๊ณ„์‚ฐํ•˜๊ฒŒ ๋˜๋ฉด, ์ฒซ ์˜ˆ์ธก๊ฐ’์— ํ›„์† term์€ ์„ ํ–‰ term๋ณด๋‹ค ์ ์€ ๊ฐ€์ค‘์น˜ ๊ฐ’์„ ๊ฐ–์„ ์ˆ˜ ๋ฐ–์— ์—†๊ฒŒ ๋œ๋‹ค.
        • ์ฆ‰ ์ด์ „ ์˜ํ–ฅ๋“ค์„ ๋” ์ ๊ฒŒ ๋ฐ˜์˜ํ•œ๋‹ค. ์ด๋ฅผ exponential averaging์ด๋ผ๊ณ  ํ•œ๋‹ค. (์‚ฌ์‹ค ์ง€์ˆ˜ ํ‰ํ™œ๋ฒ•๊ณผ ๊ฐ™์€ ์ด์น˜์ด๋‹ค.)
  3. Priority Scheduling

    • A Priority Number(Integer) is associated with process
    • Highest Priority๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ•œ๋‹ค. Highest Priority๋Š” ์ˆซ์ž๊ฐ€ ์ž‘์„ ์ˆ˜๋ก ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋” ๋†’๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
      • ์ด๋˜ํ•œ nonpreemptive์™€ preemptive๋กœ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
        • ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์€ process๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ๋นผ์•˜์„ ๊ฒƒ์ธ๊ฐ€?
          • NO! (nonpreemptive)
          • YES! (preemptive)
    • Shortest-Job-First์€ Highest Priority๊ฐ€ Predicted next burst time ์ธ ๊ฒƒ์ด๋‹ค.
    • Problem: The low priority processes may never execute
    • Solution: Aging, as time processes increase the priority of the process
  4. Round Robin (์‹ค์ œ๋กœ ์ œ์ผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜)

    • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋™์ผํ•œ ํฌ๊ธฐ์˜ ํ• ๋‹น ์‹œ๊ฐ„(time quantum)์„ ๊ฐ–๋Š”๋‹ค. (์ผ๋ฐ˜์ ์œผ๋กœ 10-100 millisecond)
    • ํ• ๋‹น ์‹œ๊ฐ„์ด ๋๋‚˜๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ์„ ์ (preemptive)๋‹นํ•˜๋ฉด 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 ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ปค์ง„๋‹ค.
    • Response Time์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
    • ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด CPU burst time์— ๋น„๋ก€ํ•œ๋‹ค.
  5. Multilevel Queue

    • Ready Queue๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ถ„ํ• . ์—ฌ๊ธฐ์„œ๋Š” foreground์™€ background๋กœ ํ‘œํ˜„

      • foreground (interactive: ์งง์€ ๊ฒƒ)
      • background (batch - no human interactive: ๊ธด ๊ฒƒ)
    • ๊ฐ ํ๋Š” ๋…๋ฆฝ์ ์ธ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐ–์Œ

      • foreground - RR
      • background - FCFS
    • ํ์— ๋Œ€ํ•œ ์Šค์ผ€์ค„๋ง์ด ํ•„์š”

      • Fixed priority Scheduling

        • Save all from foreground then from background / ๋ชจ๋“  foreground์˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚ฌ์„ ๋•Œ background ์ฒ˜๋ฆฌ๊ฐ€ ์‹œ์ž‘๋œ๋‹ค.
        • possibility of starvation / ์ด ๋•Œ background ์ชฝ์—์„œ๋Š” starvation ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ.
      • Time Slice

        • ๊ฐ queue์— CPU ํƒ€์ž„์„ ์ ์ ˆํ•œ ๋น„์œจ๋กœ ํ• ๋‹น / background๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์„ค์ •
        • Eg..80% to foreground in RR, 20% to background in FCFS
      • EX) ๊ฐ๊ฐ์€ ์–ด๋А์ •๋„ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” Queue ๋“ค์ž„

        high priority

        • System process
        • interactive process
        • interactive editing process
        • Batch process
        • Student process

        low priority

    1. Multilevel Feedback Queue

      • ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ๋กœ ์ด๋™ ๊ฐ€๋Šฅ

      • ์—์ด์ง•์„ ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

      • Multilevel Feedback Queue scheduler๋ฅผ ์ •์˜ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค

        • Queue์˜ ์ˆ˜

        • ๊ฐ ํ์˜ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜

        • Process๋ฅผ ์ƒ์œ„ ํ๋กœ ๋ณด๋‚ด๋Š” ๊ธฐ์ค€

        • Process๋ฅผ ํ•˜์œ„ ํ๋กœ ๋ณด๋‚ด๋Š” ๊ธฐ์ค€

        • ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU ์„œ๋น„์Šค๋ฅผ ๋ฐ›์œผ๋ ค ํ•  ๋•Œ ํ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ์ค€

          Ex) 1

          high

          • quantum 8: ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” ์—ฌ๊ธฐ์— ๋‹ด๊น€ 8์„ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚˜๋ฉด ๋์ด๊ณ  ์•„๋‹ˆ๋ฉด ์•„๋ž˜ ํ์— ๋‹ด๊ธด
          • quantum 16
          • FCFS

          low


        Ex) 2

        Three Queue

        • Q0 - quantum 8
        • Q1 - quantum 16
        • Q2 - FCFS

        Scheduling

        • New job์ด Q0์— ๋“ค์–ด๊ฐ
        • CPU๋ฅผ ์žก์•„์„œ ํ• ๋‹น ์‹œ๊ฐ„ 8 milliseconds ๋™์•ˆ ์ˆ˜ํ–‰๋จ
        • 8 milliseconds ๋™์•ˆ ๋‹ค ์ˆ˜ํ–‰์„ ๋ชปํ•œ Q1์— ๋“ค์–ด๊ฐ
        • Q1์„ ์žก์•„์„œ CPU์— ํ• ๋‹น๋œ ์‹œ๊ฐ„์ด 16ms๋ฅผ ์‹คํ–‰ํ•จ
        • 16ms ์•ˆ์— ๋๋‚ด์ง€ ๋ชปํ•˜๋ฉด Q2๋กœ ์ซ“๊ฒจ๋‚จ

Multi - processor Scheduling

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