[์šด์˜์ฒด์ œ] CPU ์Šค์ผ€์ค„๋Ÿฌ(CPU Scheduler)

๐Ÿงช Computer Science/Operating System

์Šค์ผ€์ค„๋ง ๋Œ€์ƒ์€ Ready Queue์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์ด๋‹ค.

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

ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ–ˆ๋‹ค๋ฉด I/O๋‚˜ ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ ๋˜๋Š” ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ๊นŒ์ง€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ

FCFS(First Come First Served)

  • ํŠน์ง•

    • ํ”„๋กœ์„ธ์Šค์˜ ๋„์ฐฉ ์ˆœ์„œ๋Œ€๋กœ CPU๋ฅผ ํ• ๋‹น
  • ๋ฌธ์ œ์ 

    • convoy effect
      • ์†Œ์š”์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ๋„๋‹ฌํ•˜์—ฌ ํšจ์œจ์„ฑ์„ ๋‚ฎ์ถ”๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค.

SJF(Shortest Job First)

  • ํŠน์ง•

    • ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ๋„์ฐฉํ–ˆ์–ด๋„ CPU ์ž‘์—… ์‹œ๊ฐ„์ด ์งง์€ ํ”„๋กœ์„ธ์Šค์— ๋จผ์ € CPU๋ฅผ ํ• ๋‹น
  • ๋ฌธ์ œ์ 

    • starvation
      • ์‚ฌ์šฉ ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๋Š” ๊ฑฐ์˜ ์˜์›ํžˆ CPU๋ฅผ ํ• ๋‹น๋ฐ›์„ ์ˆ˜ ์—†๋‹ค.


์„ ์ ํ˜•(Preemptive) ์Šค์ผ€์ค„๋ง

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰์ค‘์ธ ๋™์•ˆ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ

SRTF(Shortest Remaining Time First)

  • ํŠน์ง•

    • ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์Šค์ผ€์ค„๋ง์ด ์ด๋ฃจ์–ด์ง„๋‹ค.
  • ๋ฌธ์ œ์ 

    • starvation

    • ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„๋‹ฌํ•  ๋•Œ๋งˆ๋‹ค ์Šค์ผ€์ค„๋ง์„ ๋‹ค์‹œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— CPU ์ž‘์—… ์‹œ๊ฐ„์„ ์ธก์ •ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.


Round Robin

  • ํŠน์ง•

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

    • time quantum์ด ๋„ˆ๋ฌด ์ปค์ง€๋ฉด FCFS์™€ ๊ฐ™์•„์ง€๊ณ , ๋„ˆ๋ฌด ์ž‘์•„์ง€๋ฉด ์žฆ์€ ์ปจํ…์ŠคํŠธ ์Šค์œ„์น˜๋กœ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.


Multi-level Queue

  • ํŠน์ง•

    • ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ฐ ๊ทธ๋ฃน์— ๋”ฐ๋ผ Ready Queue๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋‘”๋‹ค. ๊ฐ ํ๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ทœ์น ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค๋“ค์ด CPU๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ์œ„ํ•ด ํ•œ ์ค„๋กœ ์„œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ์ค„๋กœ ์„ ๋‹ค.
  • ๋ฌธ์ œ์ 

    • starvation


Multi-level feedback Queue

  • ํŠน์ง•

    • Multi-level Queue์™€ ๋™์ผํ•œ ๊ฐœ๋…์„ ๊ฐ€์ง€์ง€๋งŒ, ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋‚˜์˜ ํ์—์„œ ๋‹ค๋ฅธ ํ๋กœ ์ด๋™ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค.
    • ์ฆ‰, starvation์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.


Priority: ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ์„ ํƒ๋˜๋Š” ์Šค์ผ€์ค„๋ง์ด๋‹ค. ์„ ์ ๊ณผ ๋น„์„ ์  ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋‹ค. starvation ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋‹ค.