Skip to content

Latest commit

ย 

History

History
320 lines (236 loc) ยท 18.8 KB

CpuScheduling.md

File metadata and controls

320 lines (236 loc) ยท 18.8 KB

CPU Scheduling

CPU and I/O Bursts in Program Execution

CPU bound process, I/O bound process

ํ”„๋กœ์„ธ์Šค๋Š” CPU bound process์™€ I/O bound process๋กœ ํฌ๊ฒŒ ๋‘ ์ข…๋ฅ˜๋กœ ๋‚˜๋‰œ๋‹ค.

CPU bound process

  • CPU burst๊ฐ€ ํฐ ํ”„๋กœ์„ธ์Šค
  • I/O๋กœ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ๋ณ„๋กœ ์—†๊ณ  CPU๊ฐ€ ๊ฑฐ์˜ ๋ชจ๋“  ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
  • ์‚ฌ์šฉ์ž๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์„ ๊ด€์—ฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • e.g. ๊ธฐ์ƒ์ฒญ์—์„œ ๋‚ ์”จ๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ์ผ, CPU์—์„œ ์—„์ฒญ๋‚œ ์ˆ˜ํ•™ ๊ณ„์‚ฐ์ด ํ•„์š”ํ• ํ…Œ๋‹ˆ๊นŒ ์ด ๊ฒฝ์šฐ์— CPU bound process.

I/O bound process

  • I/O burst๊ฐ€ ํฐ ํ”„๋กœ์„ธ์Šค
  • ์‚ฌ์šฉ์ž์™€ ๋Œ€ํ™”ํ˜•์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค I/O bound process
  • e.g. ์••์ถ•์„ ํ•œ ๋‹ค์Œ์— ๋””์Šคํฌ์— ์“ฐ๊ณ , ๋‹ค์‹œ ๋””์Šคํฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ์ž‘์—…

CPU, I/O Burst Time

ํ”„๋กœ์„ธ์Šค๋Š” CPU burst์™€ I/O burst๊ฐ€ ์™”๋‹ค๊ฐ”๋‹ค ์„œ๋กœ ๋ฐ”๋€Œ๋ฉด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•œ๋‹ค.

  • CPU burst : cpu ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ
  • I/O burst : I/O๋ฅผ ์š”์ฒญํ•œ ๋‹ค์Œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„

  • cpu burst๊ฐ€ ์งง์€ ํ”„๋กœ๊ทธ๋žจ๋“ค์€ ์‚ฌ๋žŒ๋“ค๊ณผ interaction์„ ํ•˜๋Š” Job์ด๊ธฐ ๋•Œ๋ฌธ์— ์‘๋‹ต์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋ฉด ์‚ฌ๋žŒ์ด ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ๋‹ต๋‹ตํ•จ์ด ๋ฐœ์ƒ๋œ๋‹ค.
  • cpu ์Šค์ผ€์ค„๋ง์€ ready queue์— ๋“ค์–ด์™€์žˆ๋Š”, ์ฆ‰ cpu๋ฅผ ์–ป๊ณ ์žํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค ์ค‘์—์„œ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—๊ฒŒ cpu๋ฅผ ์ค„ ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜.

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

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

CPU ์Šค์ผ€์ค„๋ง์˜ ์ค‘์š”ํ•œ ๋‘ ๊ฐ€์ง€ ์ด์Šˆ

  1. cpu burst์— ๋“ค์–ด์˜จ ํ”„๋กœ๊ทธ๋žจ์ด ์—ฌ๋Ÿฟ์ด ์žˆ๋Š”๋ฐ ๋ˆ„๊ตฌํ•œํ…Œ ๋‹น์žฅ cpu๋ฅผ ์ค„ ๊ฒƒ์ธ๊ฐ€.
  2. cpu๋ฅผ ์ด ํ”„๋กœ๊ทธ๋žจํ•œํ…Œ ์คฌ์œผ๋ฉด, cpu๋ฅผ ๋‹ค ์ผ์„ ๋•Œ I/O๋ฅผ ํ•˜๋Ÿฌ ๊ฐˆ ๋•Œ๊นŒ์ง€ cpu๋ฅผ ๊ณ„์† ์ฃผ๋Š๋ƒ ์•„๋‹ˆ๋ฉด ์ค‘๊ฐ„์— cpu๋ฅผ ๋บ์–ด์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šคํ•œํ…Œ cpu๋ฅผ ๋„˜๊ฑฐ์ค„ ๊ฒƒ์ธ๊ฐ€.


  • cpu๋ฅผ ๋‹ค ์“ฐ๊ณ  ๋‚˜๊ฐˆ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š”, ๊ธด ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜๊ฐ€ cpu๋ฅผ ๊ณ„์† ์•ˆ ๋‚ด๋†“์œผ๋ฉด ๊ทธ ๋’ค์— ์นœ๊ตฌ๋“ค์ด ๊ณ„์†ํ•ด์„œ ์ค„ ์„œ์„œ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค.

  • ๊ทธ๋ž˜์„œ cpu ์Šค์ผ€์ค„๋ง์€ I/O bound job, ํŠนํžˆ ์‚ฌ๋žŒ๋“คํ•˜๊ณ  interaction ํ•˜๋Š” job๋“ค์ด ์ง€๋‚˜์น˜๊ฒŒ ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.
  • ํšจ์œจ์ ์ธ ์Šค์ผ€์ค„๋ง์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ํ•„์š”ํ•˜๋‹ค.

CPU ์Šค์ผ€์ค„๋ง

  • nonpreemptive scheduling(๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง)
    • ์ผ๋‹จ cpu๋ฅผ ํ•œ ๋ฒˆ ์คฌ์œผ๋ฉด, ๋‹ค ์“ฐ๊ณ  I/O๋ฅผ ํ•  ๋•Œ๊นŒ์ง€ ์ž์ง„๋ฐ˜๋‚ฉํ•  ๋•Œ๊นŒ์ง€ cpu๋ฅผ ๋ณด์žฅํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•

  • preemptive scheduling(์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง)
    • ํ”„๋กœ๊ทธ๋žจ์ด cpu๋ฅผ ๊ณ„์† ์“ฐ๊ณ ์‹ถ์ง€๋งŒ ๊ฐ•์ œ๋กœ ๋นผ์•—์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹.
    • ๊ฐ•์ œ๋กœ ๋นผ์•—์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” timer๋ผ๋Š” ํ•˜๋“œ์›จ์–ด๋ฅผ ๋‘๊ณ  timer interrupt๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ํ˜„๋Œ€์ ์ธ cpu ์Šค์ผ€์ค„๋ง์€ ๋Œ€๋ถ€๋ถ„ ์ด ๋ฐฉ์‹ ์‚ฌ์šฉ

Scheduling Criteria

์–ด๋–ค ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ข‹์€์ง€, ์„ฑ๋Šฅ ์ฒ™๋„, Performance Index
cpu๋ฅผ ์“ฐ๋Ÿฌ ready queue์— ๋“ค์–ด์˜จ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€์ƒ์ด ๋œ๋‹ค.

  • ์‹œ์Šคํ…œ ์ž…์žฅ์—์„œ์˜ ์„ฑ๋Šฅ ์ฒ™๋„ (์ตœ๋Œ€ํ•œ ์ผ์„ ๋งŽ์ด ์‹œํ‚ค๋ฉด ์ข‹์€ ๊ฒƒ)
    • utilization(์ด์šฉ๋ฅ )
      • ์ „์ฒด ์‹œ๊ฐ„ ์ค‘์—์„œ cpu๊ฐ€ ๋†€์ง€ ์•Š๊ณ  ์ผํ•œ ์‹œ๊ฐ„์˜ ๋น„์œจ.
      • ์ „์ฒด ์‹œ๊ฐ„ ์ค‘์—์„œ ์ผํ•œ ์‹œ๊ฐ„์˜ ๋น„์œจ์„ ๋†’๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์‹œ์Šคํ…œ ์ž…์žฅ์—์„œ cpu๋ฅผ ์ž˜ ์“ฐ๋Š” ๋ฐฉ๋ฒ•
    • throughput(์ฒ˜๋ฆฌ๋Ÿ‰)
      • ์ฃผ์–ด์ง„ ์‹œ๊ฐ„๋™์•ˆ์— ๊ณผ์—ฐ ๋ช‡ ๊ฐœ์˜ ์ผ์„ ์ฒ˜๋ฆฌํ–ˆ๋Š”๊ฐ€
      • ๊ฐ€๋Šฅํ•œ ๋งŽ์€ ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋ฉด ์ข‹๋‹ค.

  • ํ”„๋กœ๊ทธ๋žจ(๊ณ ๊ฐ) ์ž…์žฅ์—์„œ์˜ ์„ฑ๋Šฅ ์ฒ™๋„ (๋‚ด๊ฐ€ cpu๋ฅผ ์–ป์–ด์„œ ๋นจ๋ฆฌ ๋๋‚ด๋ฉด ์ข‹์€ ๊ฒƒ, ์‹œ๊ฐ„ ๊ด€๋ จ)
    • turnaround time(์†Œ์š”์‹œ๊ฐ„, ํ‰๊ท ์‹œ๊ฐ„)
      • cpu๋ฅผ ์“ฐ๋Ÿฌ ๋“ค์–ด์™€์„œ ๋‹ค ์“ฐ๊ณ  ๋‚˜๊ฐ€๋Š”๋ฐ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์ „์ฒด ์‹œ๊ฐ„
      • cpu๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„, ์“ฐ๋Š” ์‹œ๊ฐ„, ๋‹ค์‹œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„, ์“ฐ๋Š” ์‹œ๊ฐ„... ์„ ์ „๋ถ€ ํ•ฉ์นœ ์‹œ๊ฐ„์„ ๋งํ•œ๋‹ค.
    • waiting time(๋Œ€๊ธฐ ์‹œ๊ฐ„)
      • cpu๋ฅผ ์“ฐ๊ณ ์ž ์ˆœ์ˆ˜ํ•˜๊ฒŒ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„
      • ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋ฉด์„œ ๋ฐ˜๋ณต๋˜๋Š” ๋ชจ๋“  ๋Œ€๊ธฐ์‹œ๊ฐ„์„ ํ•ฉ์นœ ๊ฒƒ์„ ๋งํ•œ๋‹ค.
    • response time(์‘๋‹ต ์‹œ๊ฐ„) โญ๏ธ
      • cpu๋ฅผ ์“ฐ๊ฒ ๋‹ค๊ณ  ready queue์— ๋“ค์–ด์™€์„œ, ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฒ˜์Œ์œผ๋กœ cpu๋ฅผ ์–ป๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„



์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์€ cpu๋ฅผ ์–ป์—ˆ๋‹ค๊ณ  ๋๊นŒ์ง€ ์“ฐ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ,
ํ”„๋กœ์„ธ์Šค๊ฐ€ cpu๋ฅผ ์–ป์œผ๋ฉด ํ•œ๋ฒˆ์— ์ญ‰ ์“ฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋บด์•—๊ฒผ๋‹ค๊ฐ€ ๋‹ค์‹œ ์–ป๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋œ๋‹ค.

Scheduling Algorithms

  • FCFS (First-Come First-Served)
  • SJF (Shortest-Job-First)
  • SRTF (Shortest-Remaining-Time-First)
  • Priority Scheduling
  • RR (Round Robin)
  • Multilevel Queue
  • Multilevel Feedback Queue

FCFS (First-Come First Served) Scheduling

  • ๋น„์„ ์  ์Šค์ผ€์ค„๋ง
  • ๋จผ์ € cpu๋ฅผ ์š”์ฒญํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์— ๋จผ์ € cpu๊ฐ€ ํ• ๋‹น๋œ๋‹ค.
  • FIFO queue๋ฅผ ์‚ฌ์šฉํ•ด ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฌธ์ œ์ ) convoy effect: ๋จผ์ € ๋“ค์–ด์˜จ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์˜ CPU ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๊ธธ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋“ค์ด ๊ธฐ๋‹ค๋ฆผ์œผ๋กœ์จ ๋” ์งง์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ์ง„ํ–‰๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋ณด๋‹ค cpu ๋ฐ ์žฅ๋น„ ์‚ฌ์šฉ๋ฅ ์ด ๋‚ฎ์•„์ง€๋Š” ํ˜„์ƒ

SJF (Shortest-Job-First) Scheduling




  • ๋น„์„ ์  ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹ :

    • cpu burst time์ด ๊ฐ€์žฅ ์ž‘์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋จผ์ € cpu๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
    • cpu burst time์ด ๊ฐ™์€ ๊ฒฝ์šฐ FCFS ๋ฐฉ์‹์„ ์ ์šฉํ•œ๋‹ค.
  • ์„ ์  ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹ :

    • Shortest-Remaining Time-First (SRTF)
      • ํ˜„์žฌ ์ˆ˜ํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ๋‚จ์€ burst time๋ณด๋‹ค ๋” ์งง์€ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด์˜ค๋ฉด cpu๋ฅผ ๋บด์•—๊น€.
    • average time ์ธก๋ฉด์—์„œ ๊ฐ€์žฅ optimal ํ•˜๋‹ค.
    • ๋ฌธ์ œ์ ) starvation : cpu ์‚ฌ์šฉ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๋Š” ๊ณ„์†ํ•ด์„œ cpu๋ฅผ ํ• ๋‹น๋ฐ›์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

Priority Scheduling (์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง)

  • preemptive

    • ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์ด ์˜ค๋ฉด ์„ ์ ๋‹นํ•˜๋Š” ๋ฐฉ์‹

  • nonpreemptive

    • ์ •์ˆ˜ ๊ฐ’์œผ๋กœ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌ๋ฐ›๊ฒŒ ๋˜๋Š”๋ฐ, ๋” ์ž‘์€ ์ˆœ์œ„๊ฐ€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค.
    • ์ถ”์ƒ์ ์ธ ๊ฐœ๋…์ด๊ธฐ ๋•Œ๋ฌธ์— SJF๋„ ์ผ์ข…์˜ ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง (cpu ์‚ฌ์šฉ์‹œ๊ฐ„์ด ๋” ์ž‘์„์ˆ˜๋ก ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ–๋Š”)
  • cf. ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์˜ ๋ฌธ์ œ์ ์€ starvation
    computer system์—์„œ ํšจ์œจ์„ฑ์„ ์ค‘์š”์‹œํ•˜์ง€๋งŒ ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ์ฐจ๋ณ„๋˜๋Š” ๊ฒƒ์„ ๋ง‰์•„์•ผํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
    -> aging(๋…ธํ™”) ๊ธฐ๋ฒ• ๋„์ž…, ์•„๋ฌด๋ฆฌ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๋„ ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ์šฐ์„ ์ˆœ์œ„๋ฅผ ์กฐ๊ธˆ์”ฉ ๋†’์—ฌ์ฃผ๋Š” ๊ธฐ๋ฒ•

Round Robin (RR)

  • ํ˜„๋Œ€์ ์ธ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์Šค์ผ€์ค„๋ง์€ RR์— ๊ธฐ๋ฐ˜ํ•˜๊ณ  ์žˆ๋‹ค.
  • cpu๋ฅผ ์ค„ ๋–„ ๊ทธ๋ƒฅ ์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ํ• ๋‹น์‹œ๊ฐ„์„ ์„ธํŒ…ํ•ด์„œ ๋„˜๊ฒจ์ฃผ๊ณ  ํ• ๋‹น ์‹œ๊ฐ„์ด ๋๋‚˜๋ฉด timer interruupt๊ฐ€ ๊ฑธ๋ ค์„œ ๋นผ์•—๊ธฐ๋Š” ๊ฒƒ์ด ์ „๋ถ€ round robin์„ ๋ฐ”ํƒ•์œผ๋กœ ํ•œ ๊ฒƒ์ด๋‹ค. ์ด๋Š” ๋ชจ๋‘ ์„ ์ ํ˜•(preemptive) scheduling ์ด๋‹ค.

  • cpu๋ฅผ ์ค„ ๋•Œ ๋™์ผํ•œ ํฌ๊ธฐ์˜ ํ• ๋‹น ์‹œ๊ฐ„(time quantum)์„ ๊ฐ€์ง„๋‹ค.
  • ํ• ๋‹น ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ์„ ์ (preempted)๋‹นํ•˜๊ณ  ready queue์˜ ์ œ์ผ ๋’ค์— ๊ฐ€์„œ ๋‹ค์‹œ ์ค„์„ ์„ ๋‹ค.

  • ๋ˆ„๊ฐ€ cpu๋ฅผ ์˜ค๋ž˜ ์“ธ์ง€ ๋ชจ๋ฅด๋Š” ์ƒํ™ฉ์—์„œ ๊ตณ์ด ์˜ˆ์ธกํ•  ํ•„์š” ์—†์ด,
    cpu๋ฅผ ์งง๊ฒŒ ์“ฐ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋นจ๋ฆฌ cpu๋ฅผ ์“ฐ๊ณ  ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด round robin ์Šค์ผ€์ค„๋ง์˜ ์žฅ์ ์ด๋‹ค.

  • ํ˜„์žฌ queue์— n๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๊ณ , ๊ฐ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ฃผ์–ด์ง„ ์‹œ๊ฐ„์ด q๋ผ๊ณ  ํ•  ๋•Œ,
    ํŠน์ • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ ์–ด๋„ (n-1)*q ๋งŒํผ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ์ ์–ด๋„ ๋‚ด ์ฐจ๋ก€๊ฐ€ ํ•œ ๋ฒˆ ๋Œ์•„์˜ฌ ๊ฒƒ.

  • q๋ฅผ ์งง๊ฒŒ ํ•  ์ˆ˜๋ก ๋” ๋น ๋ฅด๊ฒŒ ๋‚ด ์ฐจ๋ก€๊ฐ€ ๋‹ค๊ฐ€์˜ฌ ๊ฒƒ์ด๊ณ , ์งง๊ฒŒ ์“ฐ๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋” ๋นจ๋ฆฌ cpu๋ฅผ ์“ฐ๊ณ  ๋‚˜๊ฐ€๊ฒŒ ๋œ๋‹ค.
    (์‘๋‹ต์‹œ๊ฐ„์ด ๋นจ๋ผ์ง€๋Š” ๊ฒƒ์ด RR์˜ ์žฅ์ )

  • RR์€ CPU๋ฅผ ์˜ค๋ž˜ ์“ฐ๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๊ทธ๋งŒํผ ๋ฐ˜๋ณตํ•ด์„œ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋‹ˆ๊นŒ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๊ณ ,
    ์งง๊ฒŒ ์“ฐ๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์งง์•„์ง„๋‹ค. ์ฆ‰ cpu๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹œ๊ฐ„์— ๋น„๋ก€ํ•˜๊ฒŒ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋‚˜๋ฆ„๋Œ€๋กœ ๊ณต์ •ํ•œ ์Šค์ผ€์ค„๋ง์ด๋‹ค.

  • ํ• ๋‹น์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋ฉด FCFS์™€ ๊ฐ™์€ ์„ฑ๋Šฅ์„ ๋„๊ฒŒ ๋  ๊ฒƒ์ด๊ณ ,
    ํ• ๋‹น์‹œ๊ฐ„์ด ์งง์•„์ง€๋ฉด RR ์ธก๋ฉด์—์„œ๋Š” ์ด์ƒ์ ์ด์ง€๋งŒ, context switch ์˜ค๋ฒ„ํ—ค๋“œ๋กœ ์‹œ์Šคํ…œ ์ „์ฒด ์„ฑ๋Šฅ์ด ๋‚ฎ์•„์ง€๋Š” ๋ฌธ์ œ์ ์ด ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ๋‹ค.
    ๊ทธ๋ž˜์„œ ์ ๋‹นํ•œ ํฌ๊ธฐ๋กœ ์ง€์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๊ณ , ๊ทธ ํฌ๊ธฐ๊ฐ€ 10-100 millisecond ๋กœ ์•Œ๋ ค์ ธ์žˆ๋‹ค.

Time Quantum(ํ• ๋‹น ์‹œ๊ฐ„)์ด 20์ธ ๊ฒฝ์šฐ์˜ RR ์˜ˆ์ œ์ด๋‹ค.

  • P1, P2, P3, P4 ๋ฅผ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ์“ฐ์ง€๋งŒ,
    P2๋Š” ํ• ๋‹น์‹œ๊ฐ„๋ณด๋‹ค ์งง๊ธฐ ๋•Œ๋ฌธ์— ๋” ๋นจ๋ฆฌ ์“ฐ๊ณ  ๋‚˜๊ฐ€๋ฒ„๋ฆฌ๊ณ ,
    ๋‚˜๋จธ์ง€๋Š” ๊ณ„์†ํ•ด์„œ ์“ฐ๋‹ค๊ฐ€ ๋ณธ์ธ์ด ์“ธ ๋งŒํผ ๋‹ค ์“ฐ๋ฉด ๋น ์ ธ๋‚˜๊ฐ€๋Š” ๋ฐฉ์‹์ด๋‹ค.

  • SJF ๋ณด๋‹ค average turnaround time์€ ๊ธธ์ง€๋งŒ ์ตœ์ดˆ๋กœ ๊ธฐ๋‹ค๋ ค์•ผํ•˜๋Š” ๋Œ€๊ธฐ์‹œ๊ฐ„์ธ response time์€ ๋” ์งง๋‹ค.

  • ๋งŒ์•ฝ cpu ์‚ฌ์šฉ์‹œ๊ฐ„์ด ๋ชจ๋‘ ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค๋“ค์ผ ๋•Œ (e.g. 4๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค์˜ burst time์ด ์ „๋ถ€ 100์ดˆ์ผ ๋•Œ),
    400์ดˆ ์‹œ์ ์—์„œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค ๋๋‚˜๊ณ  ๋‚˜๊ฐ€๊ฒŒ ๋œ๋‹ค.
  • ๊ทธ๋Ÿฐ๋ฐ ์ด ๊ฒฝ์šฐ์—” ๊ทธ๋ƒฅ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰์‹œ์ผฐ๋‹ค๋ฉด ์ ์–ด๋„ ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ์‹คํ–‰ํ•˜๊ณ  ๋‚˜๊ฐ”์„ ํ…๋ฐ
    RR์€ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋งˆ์ง€๋ง‰๊นŒ์ง€ cpu๋ฅผ ์กฐ๊ธˆ์”ฉ ์ œ๊ณต๋ฐ›์œผ๋ฉด์„œ waiting time์ด ๊ต‰์žฅํžˆ ๊ธธ์–ด์ง€๊ฒŒ ๋˜๊ณ , ๊ทธ๋Ÿฐ ์ธก๋ฉด์—์„  RR์ด ์ข‹์ง€ ์•Š๋‹ค. (RR์— ํ˜ธ์˜์ ์ด์ง€ ์•Š์€ ์˜ˆ)

  • ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ์งง์€ ํ”„๋กœ์„ธ์Šค์™€ ๊ธด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„ž์—ฌ์žˆ๋‹ค.

CPU ์Šค์ผ€์ค„๋ง์ด ํ•„์š”ํ•œ ์ด์œ ๋ผ ํ•˜๋ฉด,

์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ์•ˆ์— ์žˆ๋Š” job๋“ค์ด Homogeneous ํ•˜์ง€ ์•Š๊ณ , I/O bound job ํŠนํžˆ ์‚ฌ๋žŒ๋“ค๊ณผ interaction ํ•˜๋Š” job๊ณผ cpu๋งŒ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•˜๋ ค๋Š” job๋“ค์ด ์„ž์—ฌ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•˜๋‹ค.

cf. Homogeneous : ๊ฐ™์€ ํ”Œ๋žซํผ, ๊ฐ™์€ ์ข…๋ฅ˜, ๊ฐ™์€ ํ™˜๊ฒฝ Heterogenous : ๋‹ค๋ฅธ ์ œํ’ˆ, ๋‹ค๋ฅธ ํ™˜๊ฒฝ, ๋‹ค๋ฅธ ์ข…๋ฅ˜ (ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์„ Heterogenous ๋ผ๊ณ  ํ‘œํ˜„)

Multilevel Queue

  • ready queue์— cpu๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ค„์€ ์—ฌ๋Ÿฌ ์ค„๋กœ ์ค„์„œ๊ธฐ๋ฅผ ํ•œ๋‹ค.
  • ๋งจ ์œ— ์ฆ์ด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ค„์ด๊ณ , ์•„๋ž˜๋กœ ๊ฐˆ ์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์•„์ง„๋‹ค.
  • cpu๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์œผ๋ฉด ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, cpu๊ฐ€ ํ•˜๋‚˜๋ผ๋ฉด ์ด ์ค„์—์„œ ์–ด๋Š ํ•˜๋‚˜์˜ job๋งŒ ๋‚˜์™€์„œ cpu๋ฅผ ๋ฐ›์„ ๊ฒƒ์ด๋‹ค.

  • ์ด ์˜ˆ์‹œ๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ 5๊ฐœ ๋‚˜๋‰˜์–ด์ ธ์žˆ๋Š”๋ฐ ๊ฐ€์žฅ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ฒƒ์ด system processes. ์•„๋ž˜๋กœ ๊ฐˆ ์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์•„์ง„๋‹ค. (์™„์ „ํžˆ ๊ณ„๊ธ‰์ œ) cf. batch processes: cpu๋งŒ ์˜ค๋ž˜ ์‚ฌ์šฉํ•˜๋Š” ๊ทธ๋Ÿฐ job๋“ค

  • ์ฆ‰, cpu๋Š” ๊ฐ€์žฅ ๋†’์€ ๊ณ„๊ธ‰์„ ๊ฐ–๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ฐจ๋ก€๊ฐ€ ์˜ค๊ณ , ์œ— ์ค„์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—†๋‹ค๋ฉด ์•„๋žซ ์ค„์˜ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ cpu๋ฅผ ์ฃผ๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์ด๋‹ค.



- ready queue๋ฅผ ์—ฌ๋Ÿฌ ์ค„๋กœ ์ค„ ์„ธ์šฐ๊ธฐ๋ฅผ ํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์„  queue๊ฐ€ ๋‘ ๊ฐœ์ด๋‹ค.

- foreground queue์—๋Š” interactiveํ•œ job๋“ค - background queue์—๋Š” batch, no human interactionํ•œ job๋“ค

- ๊ฐ ์ค„ ๋งˆ๋‹ค ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์ด ํ•„์š”ํ•œ๋ฐ
foreground์— ์ค„ ์„œ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋‹ค๋ฉด ์ด ์นœ๊ตฌ๋“ค์€ RR ๋ฐฉ์‹์œผ๋กœ ์Šค์ผ€์ค„๋งํ•  ๊ฒƒ์ธ๊ฐ€
background job์€ cpu๋งŒ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์ด๊ณ  ์‘๋‹ต์‹œ๊ฐ„์ด ๋น ๋ฅด๋‹ค๊ณ  ์ข‹์„ ๊ฒƒ์ด ์—†๊ธฐ์— ์ค‘๊ฐ„์— cpu๋ฅผ ์–ป์—ˆ๋‹ค๊ฐ€ ๋นผ์•—๋Š” context switching์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ FCFS ์Šค์ผ€์ค„๋ง. ์ฆ‰, ๋จผ์ € ์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.
-> ์ฆ‰, ์ค„์˜ ํŠน์„ฑ์— ๋งž๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์„ ์ฑ„ํƒํ•ด์•ผ ํ•œ๋‹ค.

- ๋˜ ์–ด๋Š queue์—๊ฒŒ cpu๋ฅผ ์ค„ ๊ฒƒ์ธ์ง€, ์ด๋ฒˆ์—” ์–ด๋Š ์ค„์—๊ฒŒ cpu๋ฅผ ์ค„ ๊ฒƒ์ธ์ง€, ๊ทธ ์ค„ ์•ˆ์—์„œ๋Š” ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์—๊ฒŒ cpu๋ฅผ ์ค„ ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.

- ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ•ํ•˜๊ฒŒ ์ ์šฉํ•˜๋Š” ๋ฐฉ์‹์—์„œ๋Š” `starvation` ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. (๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์Šค์ผ€์ค„๋ง์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•  ๊ฒƒ)

- RR์€ ๊ณต์ •ํ•œ ์Šค์ผ€์ค„๋ง์ด๋ผ๋ฉด Multilevel์€ ์ƒ๋Œ€์ ์œผ๋กœ ์ฐจ๋ณ„์ด ์กด์žฌํ•˜๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์ด๋‹ค.

Multilevel Feedback Queue

  • ํ๋ฅผ ๋ช‡ ๊ฐœ ๋‘˜ ๊ฒƒ์ธ๊ฐ€
  • ๊ฐ ํ์—์„  ์–ด๋–ค ์Šค์ผ€์ค„๋ง์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ์ง€
  • ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ณณ์—์„œ ๋‚ฎ์€ ๊ณณ์œผ๋กœ ๋–จ์–ด์ง€๋Š” ๊ธฐ์ค€์€ ์–ด๋–ป๊ฒŒ ์ •ํ•  ใ…“ใ„ฑใ……์ธ๊ฐ€
  • ์Šน๊ฒฉ๋˜๋Š” ๊ธฐ์ค€์€ ์–ด๋–ป๊ฒŒ ์ •ํ•  ๊ฒƒ์ธ๊ฐ€
  • ์ฒ˜์Œ ํ”„๋กœ์„ธ์Šค ๋“ค์–ด๊ฐˆ ๋• ์–ด๋Š ํ๋กœ ๋“ค์–ด๊ฐˆ ๊ฒƒ์ธ๊ฐ€

์ด๋Ÿฐ ์‹์œผ๋กœ ์—ฌ๋Ÿฌ ๊ธฐ์ค€์ด ์ •ํ•ด์ ธ์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

Multilevel Queue vs Multilevel Feedback queue

  • Multilevel queue๋Š” ๊ฐ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ์ค‘์š”๋„์— ๋”ฐ๋ผ queue๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ queue์—์„œ ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•ด ํšจ์œจ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.
    ๋‹จ์ ์€ ํ•œ ๋ฒˆ ํ•ด๋‹น ํ์— ๋“ค์–ด๊ฐ€๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค๋ฅธ ํ๋กœ ์ด๋™๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์ด ๊ฑฐ์˜ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰, ์Šค์ผ€์ค„๋ง ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋‚ฎ์€ ๋Œ€์‹ ์— inflexible ์œ ์—ฐํ•˜์ง€ ๋ชปํ•˜๋‹ค.

  • Multilevel Feedback Queue ๋Š” ํ์— ์˜๊ตฌ์ ์œผ๋กœ ํ• ๋‹น๋˜๋Š” ๋ฉ€ํ‹ฐ๋ ˆ๋ฒจํ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๋‹ค๋ฅด๊ฒŒ ํ ๊ฐ„์˜ ์ด๋™์ด ํ—ˆ์šฉ๋œ๋‹ค.
    Multilevel queue์˜ ํ™•์žฅ๋ฒ„์ „์ด๋ผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

Multilevel queue๊ฐ€ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ๋“ค์–ด๊ฐ€๋Š” ์ž…๊ตฌ๊ฐ€ ๋‹ฌ๋ž๋‹ค๋ฉด,

Multilevel Feedback queue๋Š” ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ œ์ผ ์œ„์— ์žˆ๋Š” ํ๋กœ ์ผ๋‹จ ๋“ค์–ด์˜จ๋‹ค.
๋งŒ์•ฝ ์ œ์ผ ์œ„์— ์žˆ๋Š” queue๋Š” RR๋กœ ์Šค์ผ€์ค„๋งํ•œ๋‹ค๊ณ  ํ•  ๋•Œ, time-quantum์„ 8๋กœ ์Šค์ผ€์ค„๋ง ํ•œ๋‹ค. ์ž์‹ ์˜ time quantum์„ ๋‹ค ์ฑ„์šฐ์ง€ ๋ชปํ•œ process๋Š” ๋ƒ…๋‘๊ณ , ๋‹ค ์ฑ„์šด ํ”„๋กœ์„ธ์Šค๋Š” ๊ทธ ๋ฐ‘์˜ ๋ ˆ๋ฒจ์— ์žˆ๋Š” ํ๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค. ๊ทธ ๋ฐ‘์— ์žˆ๋Š” ํ๋Š” time-quantum์˜ ํฌ๊ธฐ๋ฅผ ์ฒซ ๋ฒˆ์งธ ์žˆ๋Š” ํ์˜ ๋‘ ๋ฐฐ๋กœ ๋Œ๋ฆฐ๋‹ค. ๋งˆ์ง€๋ง‰ queue๋Š” ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋Œ๋ฆฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ FCFS๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

  • ์ด ํŠน์ง•์€ cpu burst์™€ ์ค‘์š”๋„์˜ ์ƒ๊ด€๊ด€๊ณ„์— ์žˆ๋‹ค. ๋ณดํ†ต ์‚ฌ์šฉ์ž์™€ interactiveํ•˜์ง€ ์•Š์€, background process๋Š” cpu burst๊ฐ€ ๋งค์šฐ ํฌ๋‹ค๋Š” ํŠน์ง•์„ ์ด์šฉํ•œ ๊ฒƒ์ด๋‹ค. ์ฆ‰, cpu burst๊ฐ€ ํฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ๋‹ค๊ณ  ํŒ๋ณ„ํ•˜๊ณ , ์‚ฌ์šฉ์ž์™€ interactiveํ•œ ํ”„๋กœ์„ธ์Šค๋Š” CPU burst๊ฐ€ ์ž‘๋‹ค๋Š” ํŠน์ง•์„ ๊ฐ€์ง€๋ฏ€๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํŠน์ง•์„ ์ด์šฉํ•œ ๊ฒƒ์ด Multilevel Feedback Queue ์ด๋‹ค.

  • time quantum์„ ๋‹ค ์ฑ„์› ๋‹ค๋Š” ๊ฒƒ์€ CPU burst process์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ณ , ๊ทธ๋ž˜์„œ ํ•œ ๋ฒˆ ๋” ๋ฐ‘์œผ๋กœ ๋‚ด๋ ค๋ดค์„ ๋•Œ 16์ผ ๋•Œ๋„ ๋‹ค ์ฑ„์› ์„ ๊ฒฝ์šฐ์—” CPU bound process ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์•„์˜ˆ ๋ฐ‘์œผ๋กœ ๋‚ด๋ ค์„œ CPU bound processes๋Š” ์‚ฌ์šฉ์ž์™€ ๋Œ€ํ™”ํ˜•์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ฏ€๋กœ context switching์„ ์•ˆํ•˜๊ณ  ๊ทธ๋Œ€๋กœ ์ญ‰ ์ˆ˜ํ–‰์‹œ์ผœ์ฃผ๋Š” ๊ฒƒ์ด ์œ ๋ฆฌํ•˜๋ฏ€๋กœ FCFS๋กœ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐˆ์ˆ˜๋ก CPU Burst๊ฐ€ ํฐ ๊ฒƒ์ด๋‹ˆ๊นŒ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์ ์  ๋‚ฎ์•„์ง„๋‹ค ๋ผ๋Š” ๋ฃฐ์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ์ด๋‹ค.

  • Multilevel feedback queue์˜ ๋ฌธ์ œ์ ์€ interactiveํ•œ ์ฆ‰, ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด์˜ค๋ฉด queue 0๋งŒ ๊ณ„์† ์ˆ˜ํ–‰๋˜๊ณ  ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋Š” ๋ฐ€๋ฆฌ๋Š” starvation ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ํ•ด๊ฒฐ๋ฐฉ์•ˆ์œผ๋กœ๋Š” aging ๋ฐฉ์‹์„ ๋„์ž…ํ•ด์„œ ํ•ด๊ฒฐ. (๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ํ์— ๋‹ค์‹œ ๊ฐ–๋‹ค๋†“๋Š” ๊ฒƒ)

  • ์žฅ์ ์œผ๋กœ๋Š” ์œ ์—ฐ์„ฑ์ด ๋›ฐ์–ด๋‚˜๊ณ , SJF ์•Œ๊ณ ๋ฆฌ์ฆ˜์ฒ˜๋Ÿผ turnaround ํ‰๊ท  ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. (๋” ์งง์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ๋Œ๊ฒŒ ํ•ด์ฃผ๋ฏ€๋กœ) ๋˜ํ•œ interactiveํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•ž์— ์˜ค๋‹ˆ๊นŒ response time์ด ์งง์•„์ง„๋‹ค.

Multiple-Processor Scheduling

CPU๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ๋•Œ์˜ ์Šค์ผ€์ค„๋ง์œผ๋กœ๋Š”,

  • SMP ๋ชจ๋“  CPU๋“ค์ด ๋Œ€๋“ฑํ•œ ๊ฒƒ์œผ๋กœ, cpu๊ฐ€ ์•Œ์•„์„œ ์Šค์ผ€์ค„๋ง์„ ํ•ด์ฃผ๋Š” ๊ฒฝ์šฐ

  • Asymmetric multiprocessing CPU๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋Š”๋ฐ ๊ทธ ์ค‘์—์„œ ํ•˜๋‚˜์˜ cpu๊ฐ€ ์ „์ฒด์ ์ธ ์ปจํŠธ๋กค์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ.(๋ฐ์ดํ„ฐ์˜ ์ ‘๊ทผ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ์ฑ…์ž„์ง„๋‹ค) ๋‚˜๋จธ์ง€๋Š” ๋”ฐ๋ฅด๊ฒŒ ๋œ๋‹ค.

Real-Time Scheduling

real time job์€ ์–ด๋–ค deadline์ด ์žˆ๋Š” job์œผ๋กœ, ์ •ํ•ด์ง„ ์‹œ๊ฐ„ ๋‚ด์— ๋ฐ˜๋“œ์‹œ ์‹คํ–‰์ด ๋˜์•ผ ํ•˜๋Š” job๋“ค์ด๋‹ค.

cpu ์Šค์ผ€์ค„๋ง์„ ํ•  ๋•Œ๋„ real time job์€ ๋ฐ˜๋“œ์‹œ deadline์„ ๋ณด์žฅํ•ด์ค˜์•ผ ํ•˜๋ฏ€๋กœ, cpu๋ฅผ ์ฃผ๋Š” ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒƒ์ด ์•„๋‹Œ deadline ๋‚ด์—์„œ ๋๋‚˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•ด์•ผ ํ•œ๋‹ค. CPU๋ฅผ ๊ทธ๋•Œ๊ทธ๋•Œ ์Šค์ผ€์ค„๋ง์„ ํ•˜๊ธฐ๋ณด๋‹ค๋Š” real time job๋“ค์ด ์ฃผ์–ด์ ธ์žˆ๊ณ  ๋ฏธ๋ฆฌ ์Šค์ผ€์ค„๋งํ•ด์„œ deadline์ด ๋ณด์žฅ๋  ์ˆ˜ ์žˆ๋„๋ก ์ ์žฌ์ ์†Œ์— ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

soft real-time์€ ์˜ํ™”๋ฅผ ๋ณด๋Š” ๊ฒƒ์„ ์˜ˆ์‹œ๋กœ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค. deadline์ด ์กด์žฌํ•˜์ง€๋งŒ ์กฐ๊ธˆ ์–ด๊ฒจ๋„ ํฐ ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ์‹œ์Šคํ…œ๋“ค์ด๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ๋น„ํ•ด ์šฐ์„ ์ˆœ์œ„๋งŒ ์ข€ ๋†’์—ฌ์ค˜์„œ cpu๋ฅผ ๋จผ์ € ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ๋” ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๋ฉด์ ‘ ์งˆ๋ฌธ

  1. ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ‰๊ฐ€ ๊ธฐ์ค€๋“ค
  2. ๋‹ค๋‹จ๊ณ„ ํ”ผ๋“œ๋ฐฑ ํ ์Šค์ผ€์ค„๋ง์˜ ํŠน์ง•๊ณผ ์™œ ๊ทธ๋Ÿฐ ํŠน์ง•์„ ๊ฐ–๋Š”์ง€ (๋‹ค๋‹จ๊ณ„ ํ ์Šค์ผ€์ค„๋ง๊ณผ ๋น„๊ตํ•ด์„œ)
  3. ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์˜ ํŠน์ง•๊ณผ, ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง์˜ ํŠน์ง•. ๊ทธ๋ฆฌ๊ณ  ์Šค์ผ€์ค„๋ง ์˜ˆ์‹œ๋“ค

[ref] https://jhnyang.tistory.com/156 https://murphymoon.tistory.com/entry/CPU-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8-4