๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ŒCS/OS

[OS] CPU ์Šค์ผ€์ค„๋ง

by dar0m! 2021. 8. 11.

์Šค์ผ€์ค„๋ง(Scheduling)

๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์šด์˜ ์ฒด์ œ์˜ ๋™์ž‘ ๊ธฐ๋ฒ•์ด๋‹ค. ์šด์˜์ฒด์ œ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ CPU ๋“ฑ์˜ ์ž์› ๋ฐฐ์ •์„ ์ ์ ˆํžˆ ํ•จ์œผ๋กœ์จ ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ ํ˜•

  • 1๋‹จ๊ณ„ ์Šค์ผ€์ค„๋ง : ์žฅ๊ธฐ ์Šค์ผ€์ค„๋ง = ์ž‘์—… ์Šค์ผ€์ค„๋ง = Job scheduling
    • ์ž‘์—…์ด ์‹œ์Šคํ…œ์— ๋“ค์–ด์˜ค๋Š” ๊ฒƒ์„ ์Šน์ธ.
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„ํ(ready queue)๋กœ ๋“ค์–ด๊ฐ„๋‹ค.
  • 2๋‹จ๊ณ„ ์Šค์ผ€์ค„๋ง : ์ค‘๊ธฐ ์Šค์ผ€์ค„๋ง
    • ํ”„๋กœ์„ธ์Šค๋“ค์ด ํ”„๋กœ์„ธ์„œ๋ฅผ ์„œ๋กœ ์ฐจ์ง€ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์–ด๋Š ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ CPU๋ฅผ ์ฐจ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ• ์ง€ ๊ฒฐ์ •
    • ํ”„๋กœ์„ธ์Šค๋“ค์„ ๋ณด๋ฅ˜์‹œํ‚ค๊ณ  ๋‹ค์‹œ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ(์Šค์™€ํ•‘) ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๋‹จ๊ธฐ์ ์ธ ๋ถ€ํ•˜๋ฅผ ์กฐ์ ˆํ•œ๋‹ค. ์ด๋กœ์จ ์‹œ์Šคํ…œ์„ ์ ์ ˆํžˆ ์šด์˜ํ•œ๋‹ค.
    • ์Šค์™‘์€ ์ž‘์—…์˜ ํ˜ผํ•ฉ์„ ๊ฐœ์„ ํ•˜๊ฑฐ๋‚˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•˜๋‹ค.
  • 3๋‹จ๊ณ„ ์Šค์ผ€์ค„๋ง : ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋ง = CPU ์Šค์ผ€์ค„๋ง
    • CPU๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์–ด๋Š ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋ฐฐ๋‹นํ• ์ง€ ๊ฒฐ์ •

๋ชฉํ‘œ

  • ๋‹จ์œ„์‹œ๊ฐ„๋‹น ์ฒ˜๋ฆฌ๋Ÿ‰ ์ตœ๋Œ€ํ™”
  • ์ž์›ํ• ๋‹น์˜ ๊ณต์ •์„ฑ ๋ณด์žฅ
    • ๊ท ๋“ฑํ•˜์ง€ ์•Š๋‹ค๋ฉด ๋ฌดํ•œ๋Œ€๊ธฐ์— ๋น ์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ์ ์ ˆํ•œ ๋ฐ˜ํ™˜์‹œ๊ฐ„ ๋ณด์žฅ
  • ์ž์› ์‚ฌ์šฉ์˜ ๊ท ํ˜• ์œ ์ง€
  • ์„œ๋น„์Šค ์‚ฌ์šฉ๊ธฐํšŒ ํ™•๋Œ€
  • ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ ๋ณด์žฅ
  • ์‹คํ–‰ ๋Œ€๊ธฐ ๋ฐฉ์ง€
  • ์„œ๋น„์Šค ์ˆ˜ ๊ฐ์†Œ ๋ฐฉ์ง€
  • ์˜ค๋ฒ„ํ—ค๋“œ ์ตœ์†Œํ™”
  • ์šฐ์„ ์ˆœ์œ„ ๋ฐฐ์ •

ํ‰๊ฐ€ ๊ธฐ์ค€

  • CPU ์‚ฌ์šฉ๋ฅ (CPU Utilization) : ์ „์ฒด ์‹œ์Šคํ…œ ์‹œ๊ฐ„ ์ค‘ CPU๊ฐ€ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์˜ ๋น„์œจ.
  • ์ฒ˜๋ฆฌ๋Ÿ‰(Throughput) : CPU๊ฐ€ ๋‹จ์œ„ ์‹œ๊ฐ„๋‹น ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๊ฐœ์ˆ˜.
  • ์‘๋‹ต ์‹œ๊ฐ„(Response Time) : ๋Œ€ํ™”์‹ ์‹œ์Šคํ…œ์—์„œ ์š”์ฒญ ํ›„ ์‘๋‹ต์ด ์˜ค๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ๊นŒ์ง€์˜ ์‹œ๊ฐ„.
    • ๋Œ€ํ™”์‹ ์‹œ์Šคํ…œ(์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ) : ์ผ๊ด„ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์— ๋Œ€์‘๋˜๋Š” ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์œผ๋กœ์จ, ์‹œ์Šคํ…œ๊ณผ ์‚ฌ์šฉ์ž๊ฐ€ ๋ชจ๋‹ˆํ„ฐ์™€ ์ž…๋ ฅ ์žฅ์น˜๋ฅผ ํ†ตํ•ด ๋Œ€ํ™”ํ•˜๋“ฏ์ด ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹
  • ๋Œ€๊ธฐ ์‹œ๊ฐ„(Waiting Time) : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„ ํ ๋‚ด์—์„œ ๋Œ€๊ธฐํ•˜๋Š” ์‹œ๊ฐ„์˜ ์ดํ•ฉ.
  • ๋ฐ˜ํ™˜ ์‹œ๊ฐ„(Turnaround Time) : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘ํ•ด์„œ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„.

 

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

์ž์›์„ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์— ์–ผ๋งˆ๋‚˜ ํ• ๋‹นํ•˜๋Š”์ง€ ์ •์ฑ…์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ CPU ์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ  ํ•œ๋‹ค.

  • ๋ชฉ์  : ํ”„๋กœ์„ธ์Šค๋“ค์ด CPU๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ

CPU ์Šค์ผ€์ค„๋ง์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค.

  1. ๋น„์„ ์ (Non-Preemptive) ์Šค์ผ€์ค„๋ง
  2. ์„ ์ (Preemptive) ์Šค์ผ€์ค„๋ง

๊ฒฐ์ • ์‹œ์ 

CPU ์Šค์ผ€์ค„๋ง์˜ ๊ฒฐ์ • ์‹œ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค์˜ ์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๋•Œ์ด๋‹ค.
  1. ์‹คํ–‰ → ๋Œ€๊ธฐ
  2. ์‹คํ–‰ → ์ค€๋น„
  3. ๋Œ€๊ธฐ → ์ค€๋น„
  4. ์‹คํ–‰ → ์ข…๋ฃŒ

 

๋น„์„ ์  ์Šค์ผ€์ค„๋ง(Non-Preemptive Scheduling)

์ด๋ฏธ ํ• ๋‹น๋œ CPU๋ฅผ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ•์ œ๋กœ ๋นผ์•—์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ํ•˜๋Š” ๊ธฐ๋ฒ•

1๋ฒˆ๊ณผ 4๋ฒˆ ์ƒํ™ฉ์—์„œ๋งŒ ์ˆ˜ํ–‰๋œ๋‹ค.

์žฅ์ 

  • ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋˜๋ฏ€๋กœ ๊ณต์ •์„ฑ์ด ์žˆ๋‹ค.
  • ๋‹ค์Œ์— ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ํ”„๋กœ์„ธ์Šค์™€ ๊ด€๊ณ„์—†์ด ์‘๋‹ต ์‹œ๊ฐ„์„ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์„ ์  ๋ฐฉ์‹๋ณด๋‹ค ์Šค์ผ€์ค„๋Ÿฌ ํ˜ธ์ถœ ๋นˆ๋„๊ฐ€ ๋‚ฎ๊ณ  ๋ฌธ๋งฅ ๊ตํ™˜์— ์˜ํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ๋‹ค.
  • ์ผ๊ด„ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์— ์ ํ•ฉ

๋‹จ์ 

  • ๊ณต์ •์„ฑ์€ ๊ฐ–์ท„์ง€๋งŒ ์œตํ†ต์„ฑ์€ ์—†์Œ.
    • CPU ์‚ฌ์šฉ ์‹œ๊ฐ„์ด ๊ธด ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU ์‚ฌ์šฉ ์‹œ๊ฐ„์ด ์งง์€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์˜ค๋žซ๋™์•ˆ ๋Œ€๊ธฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฒ˜๋ฆฌ์œจ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

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

  1. FCFS ์Šค์ผ€์ค„๋ง(First Come First Served Scheduling)
    • FIFO(First In First Out)๋ผ๊ณ ๋„ ํ•จ
    • ์ค€๋น„์ƒํƒœ ํ์— ๋„์ฐฉํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ฐจ๋ก€๋Œ€๋กœ CPU๋ฅผ ํ• ๋‹น
    • ๋จผ์ € ๋„์ฐฉํ•œ ์ž‘์—…์ด ๋จผ์ € ์ฒ˜๋ฆฌ๋˜๋Š” ๊ณต์ •์„ฑ
    • ์œตํ†ต์„ฑ์ด ์—†์Œ
    • ๊ฐ€์žฅ ๊ฐ„๋‹จํ•จ
  2. SJF ์Šค์ผ€์ค„๋ง(Shortest Job First Scheduling)
    • ์ตœ๋‹จ์‹œ๊ฐ„ ์ž‘์—… ์šฐ์„  ,SJN์ด๋ผ๊ณ ๋„ํ•จ
    • ์ค€๋น„์ƒํƒœ ํ์—์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ ์‹คํ–‰์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹น
    • ๊ฐ€์žฅ ์ ์€ ํ‰๊ท ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ œ๊ณต - ์งง์€ ์ž‘์—…์‹œ๊ฐ„์„ ๊ฐ–๋Š” ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์œ ๋ฆฌ
    • ๊ธด ์ž‘์—…์‹œ๊ฐ„์˜ ์ž‘์—…์€ ๋ฌดํ•œ์ • ์—ฐ๊ธฐ๋  ์ˆ˜ ์žˆ์Œ
  3. HRRN ์Šค์ผ€์ค„๋ง(Highest Response Ratio Next Scheduling)
    • ์‹คํ–‰์‹œ๊ฐ„์ด ๊ธธ์–ด์„œ ์ƒ๋Œ€์ ์œผ๋กœ ๋Œ€๊ธฐ์‹œ๊ฐ„๋„ ๊ธธ์—ˆ๋˜ SJF๊ธฐ๋ฒ•์„ ๋ณด์™„ํ•œ ๊ธฐ๋ฒ•
    • ์‹คํ–‰์‹œ๊ฐ„๊ณผ ๋Œ€๊ธฐ์‹œ๊ฐ„์„ ์ด์šฉํ•œ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ณต์‹์„ ์ด์šฉํ•˜์—ฌ ์šฐ์„  ์ˆœ์œ„๋ฅผ ์ •ํ•จ - ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ณ„์‚ฐํ•œ ๊ฐ’์ด ํฐ ์ˆ˜ ๋ถ€ํ„ฐ ์šฐ์„ ํ•จ
    • ์šฐ์„ ์ˆœ์œ„ ๊ณ„์‚ฐ์‹ : ์šฐ์„ ์ˆœ์œ„ = (๋Œ€๊ธฐ์‹œ๊ฐ„+์‹คํ–‰์‹œ๊ฐ„) / ์‹คํ–‰์‹œ๊ฐ„
    • ์‹คํ–‰์‹œ๊ฐ„์ด ์งง๊ฑฐ๋‚˜ ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์Œ

 

์„ ์  ์Šค์ผ€์ค„๋ง(Preemptive Scheduling)

ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์„ ๋•Œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ๊ฐ•์ œ๋กœ ๋นผ์•—์•„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ•

1๋ฒˆ ๋ถ€ํ„ฐ 4๋ฒˆ๊นŒ์ง€ ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ์ˆ˜ํ–‰๋œ๋‹ค.

์žฅ์ 

  • ํ”„๋กœ์„ธ์Šค ํ•˜๋‚˜๊ฐ€ ์žฅ์‹œ๊ฐ„ ๋™์•ˆ ํ”„๋กœ์„ธ์„œ๋ฅผ ๋…์ ํ•˜๋ ค๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์— ํ”„๋กœ์„ธ์„œ๋ฅผ ์„œ๋น„์Šคํ•  ๊ธฐํšŒ๋ฅผ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๋‹ค.
    • ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU ์‚ฌ์šฉ ์‹œ๊ฐ„์„ ๋™์ผํ•˜๊ฒŒ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋น ๋ฅธ ์‘๋‹ต์‹œ๊ฐ„์„ ์š”ํ•˜๋Š” ๋Œ€ํ™”์‹ ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์— ์ ํ•ฉํ•˜๋ฉฐ ๊ธด๊ธ‰ํ•œ ํ”„๋กœ์„ธ์„œ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๊ธด๊ธ‰ ์ฒ˜๋ฆฌ๋ฅผ ์š”์ฒญํ•  ๋•Œ ์šฉ์ดํ•˜๋‹ค.

๋‹จ์ 

  • ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ปค์งˆ ์ˆ˜ ์žˆ์–ด ํšจ๊ณผ์ ์œผ๋กœ ์ด์šฉํ•˜๋ ค๋ฉด, ๋ฉ”๋ชจ๋ฆฌ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งŽ์ด ์ ์žฌ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
    • ์ฆ‰, ํ”„๋กœ์„ธ์„œ๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ• ๋•Œ๋งˆ๋‹ค ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ค€๋น„ ์ƒํƒœ์— ์žˆ์–ด์•ผ ํšจ๊ณผ์ ์ด๋‹ค.
  • ๋”ฐ๋ผ์„œ ์„ ์  ์Šค์ผ€์ค„๋ง์—๋Š” ์šฐ์„ ์ˆœ์œ„๋ผ๋Š” ๊ฐœ๋…์„ ๋ฐ˜๋“œ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋Š”๋ฐ, ์šฐ์„ ์ˆœ์œ„๋Š” ์˜๋ฏธ ์žˆ๊ฒŒ ๋ถ€์—ฌํ•˜์ง€ ์•Š์œผ๋ฉด ํšจ๊ณผ๊ฐ€ ์—†๋‹ค.

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

  1. RR ์Šค์ผ€์ค„๋ง(Round Robin Scheduling)
    • ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์—์„œ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉ๋จ
    • ์‹œ๋ถ„ํ• ์— ์˜ํ•œ ๋™์ž‘์„ ํ•˜๋ฏ€๋กœ ํ• ๋‹นํ•˜๋Š” ์‹œ๊ฐ„์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ CPU๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํšจ๊ณผ์— ๋Œ€ํ•œ ์˜ํ–ฅ์ด ํผ
      • ํ• ๋‹น์‹œ๊ฐ„(Time Quantum)์ด ํฌ๋ฉด FCFS์™€ ๊ฐ™์€ ๋™์ž‘์„ ํ•จ
      • ํ• ๋‹น์‹œ๊ฐ„(Time Quantum)์ด ์ž‘์œผ๋ฉด ์žฆ์€ ๋ฌธ๋งฅ๊ตํ™˜์œผ๋กœ ์ธํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•จ
    • ์ค€๋น„์ƒํƒœ ํ์— ๋„์ฐฉํ•˜๋Š” ์ˆœ์„œ์˜ ์ฐจ๋ก€๋Œ€๋กœ CPU๋ฅผ ํ• ๋‹น ๋ฐ›์•„ ์‹คํ–‰ํ•˜์ง€๋งŒ ํ• ๋‹น๋œ ์ผ์ •์‹œ๊ฐ„ ๋™์•ˆ ์‹คํ–‰์„ ์™„๋ฃŒํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ → ๋‹ค์Œ ์ˆœ์œ„์˜ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ๋น„์›Œ์ฃผ๊ณ  ์ค€๋น„์ƒํƒœ ํ์˜ ๋งจ ๋’ค๋กœ ๋“ค์–ด๊ฐ
      • ์ค€๋น„ํ์— ๋„์ฐฉํ•˜๋Š” ์ˆœ์„œ์˜ ์ฐจ๋ก€๋Œ€๋กœ CPU๋ฅผ ํ• ๋‹น ๋ฐ›์•„ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋ฒ•์€ FCFS์™€ ๊ฐ™์Œ
  2. SRTF ์Šค์ผ€์ค„๋ง(Shortest Remaining-Time First Scheduling)
    • ์„ ์  SJF๊ธฐ๋ฒ•์ด๋ผ๊ณ ๋„ ํ•จ
    • ๋น„์„ ์  SJF๊ธฐ๋ฒ•์„ ์„ ์  ํ˜•ํƒœ๋กœ ๋ณ€ํ˜•ํ•œ ๊ธฐ๋ฒ•
    • ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ๋‚จ์€ ์‹คํ–‰์‹œ๊ฐ„๊ณผ ์ค€๋น„ํ์— ์ƒˆ๋กœ ๋“ค์–ด์˜จ ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰์‹œ๊ฐ„์„ ๋น„๊ตํ•˜์—ฌ ๋” ์งง์€ ์‹คํ–‰์‹œ๊ฐ„์„ ๊ฐ–๋Š” ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ธฐ๋ฒ•
    • โ€‹์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์— ํšจ๊ณผ์ 
    • ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค์™€ ์ค€๋น„์ƒํƒœ ํ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰์‹œ๊ฐ„์„ ์ถ”์ ํ•˜์—ฌ ๋ณด์œ ํ•˜๊ณ  ์žˆ์–ด์•ผํ•˜๋ฏ€๋กœ ์˜ค๋ฒ„ํ—ค๋“œ ๋ฐœ์ƒ์ด ์ฆ๊ฐ€ํ•จ
    • ๊ธด ์ž‘์—…์„ ์š”๊ตฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” SJF๋ณด๋‹ค ๋Œ€๊ธฐ์‹œ๊ฐ„ ๊ธบ
  3. ๋‹ค๋‹จ๊ณ„ ํ ์Šค์ผ€์ค„๋ง(MLQ, Multilevel Queue Scheduling)
    • ํ”„๋กœ์„ธ์Šค๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ ์„œ ๊ฐ๊ฐ์˜ ๊ทธ๋ฃน๋งˆ๋‹ค ๊ฐ๊ฐ์˜ ์ค€๋น„์ƒํƒœ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ฒ•
      • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ๋“ค์ด ์‹คํ–‰ ๋ชปํ•˜๋Š” ๊ฑธ ๋ฐฉ์ง€ํ•˜๊ณ ์ž ๊ฐ ํ๋งˆ๋‹ค ๋‹ค๋ฅธ Time Quantum์„ ์„ค์ • ํ•ด์ฃผ๋Š” ๋ฐฉ์‹ ์‚ฌ์šฉ
      • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ๋Š” ์ž‘์€ Time Quantum ํ• ๋‹น. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ๋Š” ํฐ Time Quantum ํ• ๋‹น.
    • ์‹œ์Šคํ…œ ํ”„๋กœ์„ธ์Šค, ๋Œ€ํ™”ํ˜• ํ”„๋กœ์„ธ์Šค, ํŽธ์ง‘ ํ”„๋กœ์„ธ์Šค ์ผ๊ด„์ฒ˜๋ฆฌ ํ”„๋กœ์„ธ์Šค ๋“ฑ์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ ํ”„๋กœ์„ธ์Šค ๋ณ„๋กœ ์ค€๋น„ํ๋ฅผ ๋ฐฐ์น˜ํ•จ
      • ๊ฐ๊ฐ์˜ ์ค€๋น„์ƒํƒœ ํ๋Š” ๋…์ž์ ์ธ ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ• ์‚ฌ์šฉํ•จ
      • ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๋Ÿฌ ์ค€๋น„ํ ์ค‘ ํ•˜๋‚˜์— ์ง„์ž…ํ•˜๋ฉด ๋‹ค๋ฅธ ์ค€๋น„ํ๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†์Œ
    • ํ•ญ์ƒ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ํ์˜ ํ”„๋กœ์„ธ์Šค์— CPU๋ฅผ ํ• ๋‹น
      • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ์—์„œ ์ž‘์—… ์‹คํ–‰ ์ค‘์ด๋”๋ผ๋„ ์ƒ์œ„ ๋‹จ๊ณ„์˜ ํ์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๋ฉด CPU๋ฅผ ๋นผ์•—๋Š” ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง
  4. ๋‹ค๋‹จ๊ณ„ ํ”ผ๋“œ๋ฐฑ ํ ์Šค์ผ€์ค„๋ง(MFQ, Multilevel Feedback Queue Scheduling)
      • ๋‹ค ๋‹จ๊ณ„ ํ + ๋™์ ์ธ ํ”„๋กœ์„ธ์Šค ์šฐ์„  ์ˆœ์œ„ ๋ณ€ํ™” ์ ์šฉ
      • ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ ์‹œ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„  ์ˆœ์œ„ ์ค€๋น„ ํ์— ๋“ฑ๋ก๋˜๋ฉฐ ๋“ฑ๋ก๋œ ํ”„๋กœ์„ธ์Šค๋Š” FCFS ์ˆœ์„œ๋กœ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰๋œ๋‹ค. ํ•ด๋‹น ํ์˜ CPU ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰(Time Quantum)์ด ๋๋‚˜๋ฉด ํ•œ ๋‹จ๊ณ„ ์•„๋ž˜์˜ ์ค€๋น„ ํ์— ๋“ค์–ด๊ฐ„๋‹ค.
      • ๋‹จ๊ณ„๊ฐ€ ๋‚ด๋ ค๊ฐˆ์ˆ˜๋ก ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰(Time Quantum)์ด ์ฆ๊ฐ€ํ•œ๋‹ค.
      • ํ ์‚ฌ์ด์˜ ํ”„๋กœ์„ธ์Šค ์ด๋™ ๊ฐ€๋Šฅํ•˜๋ฉฐ CPU Burst๋Š” ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„์˜ ํ, I/O Burst๋Š” ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ํ์— ๋ฐฐ์น˜ํ•œ๋‹ค.
      • ๊ฐ€์žฅ ํ•˜์œ„ ํ๋Š” FCFS ์Šค์ผ€์ค„๋ง
      • ๋งจ ์•„๋ž˜ ํ์—์„œ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๋Œ€๊ธฐํ•˜๋ฉด ๋‹ค์‹œ ์ƒ์œ„ ํ๋กœ ์ด๋™ (์—์ด์ง• ๊ธฐ๋ฒ•์„ ํ†ตํ•œ ๊ธฐ์•„์ƒํƒœ ์˜ˆ๋ฐฉ)
      • ๋‹ค๋‹จ๊ณ„ ํ”ผ๋“œ๋ฐฑ ํ ์Šค์ผ€์ค„๋ง์˜ ๊ฒฝ์šฐ ํ์˜ ์ˆ˜, ๊ฐ ํ์— ๋Œ€ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์šฐ์„ ์ˆœ์œ„ ๊ฒฉ์ƒ ๋˜๋Š” ๊ฒฉํ•˜ ์‹œ๊ธฐ ๊ฒฐ์ •, ์ฒ˜์Œ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ง„์ž…ํ•ด์•ผ ํ•  ํ ๋“ฑ๋“ฑ ๋งค์šฐ ๋ณต์žกํ•œ ํŒ๋‹จ์„ ์š”๊ตฌํ•œ๋‹ค.

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


๋งŒ์•ฝ, ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์˜ CPU burst time์ด 10์ดˆ๋ผ๋ฉด, ์ด ํ”„๋กœ์„ธ์Šค์˜ ์–ด๋–ค ํŠน์ • ์ž‘์—…์ด ์™„๋ฃŒ๋˜๊ธฐ ์œ„ํ•ด์„œ CPU๊ฐ€ 10์ดˆ ๋™์•ˆ ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž‘์—…ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.
I/O burst๊ฐ€ ์™”๋‹ค๋Š” ๊ฒƒ์€ CPU ์ž‘์—… ํ›„ ํ‚ค๋ณด๋“œ๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ์„ ๋ฐ›๋Š” ์ž‘์—…์ด ๋’ค๋”ฐ๋ผ์˜จ๋‹ค๋“ ๊ฐ€, ์–ด๋–ค I/O ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์–ด์•ผ ๋‹ค์Œ CPU๊ฐ€ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค.

๋”ฐ๋ผ์„œ ํ”„๋กœ์„ธ์Šค๋Š” CPU Bound process ์™€ I/O bound Process๋กœ ํฌ๊ฒŒ ๋‘ ์ข…๋ฅ˜๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.
CPU burst๊ฐ€ ํฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU Bound process,
I/O burst๊ฐ€ ํฐ ํ”„๋กœ์„ธ์Šค๋ฅผ I/O bound process๋ผ๊ณ  ํ•œ๋‹ค.

 

MLQ์™€ MFQ์˜ ์ฐจ์ด์ 

๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ MLQ ์Šค์ผ€์ค„๋ง์˜ ๊ฒฝ์šฐ ํ์™€ ํ ์‚ฌ์ด์— ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ด๋™์„ ํ•  ์ˆ˜ ์—†๋Š” ๋ฐ˜๋ฉด, MFQ ์Šค์ผ€์ค„๋ง์˜ ๊ฒฝ์šฐ ํ ์‚ฌ์ด์— ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ MFQ ์Šค์ผ€์ค„๋ง์— ๋น„ํ•ด MLQ ์Šค์ผ€์ค„๋ง์€ ์Šค์ผ€์ค„๋ง ๋ถ€๋‹ด์ด ์ ์ง€๋งŒ ์œ ์—ฐ์„ฑ์€ ๋–จ์–ด์ง„๋‹ค.

๋˜ํ•œ MLQ ์Šค์ผ€์ค„๋ง์˜ ๊ฒฝ์šฐ ํ•˜์œ„ ๋‹จ๊ณ„์˜ ํ์— ์žˆ์„์ˆ˜๋ก CPU ํ• ๋‹น์„ ๋ฐ›์ง€ ๋ชปํ•˜์—ฌ ๊ธฐ์•„ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ MFQ ์Šค์ผ€์ค„๋ง์˜ ๊ฒฝ์šฐ๋Š” ์—์ด์ง• ๊ธฐ๋ฒ•์„ ํ†ตํ•ด ๊ธฐ์•„ ํ˜„์ƒ์„ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ฐธ๊ณ 

๋Œ“๊ธ€