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

โ˜‘๏ธ ์Šค์ผ€์ค„๋ง์˜ ๋‹จ๊ณ„

  1. ์žฅ๊ธฐ ์Šค์ผ€์ค„๋ง(Long-term Scheduling)
    1. ์žฅ๊ธฐ ์Šค์ผ€์ค„๋ง์€ ๊ณ ์ˆ˜์ค€ ์Šค์ผ€์ค„๋ง, ์ž‘์—… ์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ ๋„ ํ•จ
    2. ์ „์ฒด ์‹œ์Šคํ…œ์˜ ๋ถ€ํ•˜๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์ž‘์—…์„ ์‹œ์ž‘ํ• ์ง€ ๋ง์ง€๋ฅผ ๊ฒฐ์ •
    3. ๊ฐ€์žฅ ํฐ ํ‹€์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” CPU ์Šค์ผ€์ค„๋ง์œผ๋กœ ์‹œ์Šคํ…œ ๋‚ด์˜ ์ „์ฒด ์ž‘์—…์ˆ˜๋ฅผ ์กฐ์ ˆ
  2. ์ค‘๊ธฐ ์Šค์ผ€์ค„๋ง(Medium-term Scheduling)
    1. ์ค‘๊ธฐ ์Šค์ผ€์ค„๋ง์€ ์ค‘๊ฐ„ ์ˆ˜์ค€ ์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ
    2. ์ค‘๊ธฐ ์Šค์ผ€์ค„๋ง์€ ์ด๋ฏธ ํ™œ์„ฑํ™”๊ฐ€ ๋œ ํ”„๋กœ์„ธ์Šค๋“ค์— ๋Œ€ํ•œ ๊ด€๋ฆฌ๋ฅผ ํ•จ
    3. → ์ด๋ฏธ ํ™œ์„ฑํ™”๋œ ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์ค‘์ง€์™€ ํ™œ์„ฑํ™”๋กœ ์ „์ฒด ์‹œ์Šคํ…œ์˜ ํ™œ์„ฑํ™”๋œ ํ”„๋กœ์„ธ์Šค ์ˆ˜๋ฅผ ์กฐ์ ˆํ•˜์—ฌ ๊ณผ๋ถ€ํ•˜๋ฅผ ๋ง‰์Œ
    4. ์šด์˜์ฒด์ œ๋Š” ์ฒ˜๋ฆฌ๊ฐ€ ๋ณด๋ฅ˜๋œ ํ”„๋กœ์„ธ์Šค๋“ค์„ ์ฒ˜๋ฆฌ ์žฌ๊ฐœ๊ฐ€ ๊ฐ€๋Šฅํ•  ๋•Œ๊นŒ์ง€ ์ฃผ๊ธฐ์–ต์žฅ์น˜์—์„œ ํ•˜๋“œ ๋””์Šคํฌ๋กœ ์˜ฎ๊ธฐ๋Š”๋ฐ, ์ด ๊ณผ์ •์„ ์Šค์™‘์•„์›ƒ(Swap Out)์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ณ , ๋ฐ˜๋Œ€๋ฅผ ์Šค์™‘์ธ(Swap In)์ด๋ผ๊ณ  ํ•จ
  3. ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋ง(Short-term Scheduling)
    1. ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋ง์€ ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์˜ ์Šค์ผ€์ค„๋ง์œผ๋กœ ์ €์ˆ˜์ค€ ์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ
    2. ์–ด๋–ค ํ”„๋กœ์„ธ์Šค์— CPU๋ฅผ ํ• ๋‹นํ• ์ง€, ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋ฅผ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋ณด๋‚ผ์ง€ ๋“ฑ์„ ๊ฒฐ์ •.
    3. ๋ณดํ†ต CPU์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ  ํ•˜๋ฉด ๋ฐ”๋กœ ์ด ๋‹จ๊ณ„๋ฅผ ๋งํ•จ

โ˜‘๏ธ ์Šค์ผ€์ค„๋ง์˜ ๋ชฉ์ 

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

 


์Šค์ผ€์ค„๋ง ์‹œ ๊ณ ๋ ค ์‚ฌํ•ญ

โ˜‘๏ธ ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง๊ณผ ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง

  • ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง(Preemptive Scheduling)
    • ‘์„ ์ ’์€ ๋นผ์•—์„ ์ˆ˜ ์žˆ์Œ์„ ๋œปํ•จ
    • ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰์ค‘์ด๋”๋ผ๋„ ์šด์˜์ฒด์ œ๊ฐ€ CPU๋ฅผ ๊ฐ•์ œ๋กœ ๋นผ์•—์„ ์ˆ˜ ์žˆ๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹
    • Timeout, I/O Interrupt, System call emd
    • ๋ฌธ๋งฅ๊ตํ™˜ ๊ฐ™์€ ๋ถ€๊ฐ€์ ์ธ ์ž‘์—…์œผ๋กœ ์ธํ•ด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒ
  • ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง(Non-Preemptive Scheduling)
    • ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ด๋ฅผ ๋นผ์•—์„ ์ˆ˜ ์—†๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹
    • ๋ฌธ๋งฅ๊ตํ™˜์— ์˜ํ•œ ๋‚ญ๋น„๊ฐ€ ์ ์ง€๋งŒ, CPU ์‚ฌ์šฉ ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค ๋•Œ๋ฌธ์— CPU ์‚ฌ์šฉ ์‹œ๊ฐ„์ด ์งง์€ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ค๋žซ๋™์•ˆ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ๋  ์ˆ˜ ์žˆ์Œ

 


โ˜‘๏ธ ํ”„๋กœ์„ธ์Šค ์šฐ์„ ์ˆœ์œ„

  • ๋Œ€๋ถ€๋ถ„์˜ CPU์Šค์ผ€์ค„๋Ÿฌ๋Š” ์šฐ์„ ์ˆœ์œ„๋ฅผ ์‚ฌ์šฉ → ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ํ”„๋กœ์„ธ์Šค์˜ ์ค‘์š”๋„๊ฐ€ ๋‹ค๋ฅด๋‹ค๋Š” ์˜๋ฏธ
  • ํ”„๋กœ์„ธ์Šค๋Š” ํฌ๊ฒŒ ์ปค๋„ ํ”„๋กœ์„ธ์Šค์™€ ์ผ๋ฐ˜ํ”„๋กœ์„ธ์Šค๋กœ ๋‚˜๋ˆ„๋ฉฐ, ๋ณดํ†ต ์ปค๋„ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋†’์€ ์šฐ์„ ์ˆœ์œ„์— ๋‘ 

โ˜‘๏ธ CPU bound process์™€ I/O bound process

  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐ ์ƒํƒœ์— ์žˆ๋‹ค๊ฐ€ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰ํ•˜๋ฉด CPU burst, ์ž…์ถœ๋ ฅ ์ž‘์—…์„ ํ•˜๋ฉด I/Oburst๋ผ๊ณ  ํ•จ
  • CPU bound process (CPU ์ง‘์ค‘ ํ”„๋กœ์„ธ์Šค) : ์ˆ˜ํ•™ ์—ฐ์‚ฐ๊ณผ ๊ฐ™์ด CPU๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜์—ฌ CPU burst๊ฐ€ ๋งŽ์€ ํ”„๋กœ์„ธ์Šค
  • I/O bound process (์ž…์ถœ๋ ฅ ์ง‘์ค‘ ํ”„๋กœ์„ธ์Šค) : ์ž…์ถœ๋ ฅ์„ ๋งŽ์ด ์‚ฌ์šฉํ•ด I
  • ๋‘ ํ”„๋กœ์„ธ์Šค ๊ฐ„์—๋Š” I/O bound process๋ฅผ ๋จผ์ € ์‹คํ–‰์ƒํƒœ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ํšจ์œจ์ 
  • → I/O bound process์˜ ๊ฒฝ์šฐ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„๋„ ๊ธˆ๋ฐฉ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋น ์ง€๋Š” ๋ฐ˜๋ฉด CPU bound process์˜ ๊ฒฝ์šฐ ํ• ๋‹น๋ฐ›์€ CPU ์‹œ๊ฐ„์„ ์ „๋ถ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ

โ˜‘๏ธ ์ „๋ฉด ํ”„๋กœ์„ธ์Šค์™€ ํ›„๋ฉด ํ”„๋กœ์„ธ์Šค

  • ์ „๋ฉด ํ”„๋กœ์„ธ์Šค : GUI๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์šด์˜์ฒด์ œ์—์„œ ํ™”๋ฉด์˜ ๋งจ ์•ž์— ๋†“์ธ ํ”„๋กœ์„ธ์Šค. ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•ด ์ƒํ˜ธ์ž‘์šฉ ํ”„๋กœ์„ธ์Šค๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ
  • ํ›„๋ฉด ํ”„๋กœ์„ธ์Šค : ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉ์ด ์—†๋Š” ํ”„๋กœ์„ธ์Šค์ด๋ฉฐ, ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ์—†์ด ์ž‘๋™ํ•˜์—ฌ ์ผ๊ด„ ์ž‘์—… ํ”„๋กœ์„ธ์Šค๋ผ๊ณ  ๋ถˆ๋ฆผ

 


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

โ˜‘๏ธ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ ํƒ ๊ธฐ์ค€

  1. CPU ์‚ฌ์šฉ๋ฅ  : ์ „์ฒด ์‹œ์Šคํ…œ์˜ ๋™์ž‘ ์‹œ๊ฐ„ ์ค‘ CPU๊ฐ€ ์‚ฌ์šฉ๋œ ์‹œ๊ฐ„์„ ์ธก์ •
  2. ์ฒ˜๋ฆฌ๋Ÿ‰ : ๋‹จ์œ„ ์‹œ๊ฐ„ ๋‹น ์ž‘์—…์„ ๋งˆ์นœ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜
  3. ๋Œ€๊ธฐ ์‹œ๊ฐ„ : ์ž‘์—…์„ ์š”์ฒญํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „๊นŒ์ง€ ๋Œ€๊ธฐํ•œ ์‹œ๊ฐ„
  4. ์‘๋‹ต ์‹œ๊ฐ„ : ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘ ํ›„ ์ฒซ๋ฒˆ์งธ ์ถœ๋ ฅ ๋˜๋Š” ๋ฐ˜์‘์ด ๋‚˜์˜ฌ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„
  5. ๋ณ€ํ™˜ ์‹œ๊ฐ„ : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋œ ํ›„ ์ข…๋ฃŒ๋˜์–ด ์‚ฌ์šฉํ•˜๋˜ ์ž์›์„ ๋ชจ๋‘ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„

โ˜‘๏ธ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ข…๋ฅ˜

๐Ÿ“Œ ์„ ์ž… ์„ ์ฒ˜๋ฆฌ(FCFS: First-Come First-Served) ์Šค์ผ€์ค„๋ง

  • ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ค€๋น„ ๋Œ€๊ธฐ์—ด์— ๋„์ฐฉํ•˜๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹
  • ๋‹จ์ˆœํ•˜๊ณ  ๊ณตํ‰ํ•˜์ง€๋งŒ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ฐจ์ง€ํ•˜๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์€ ํ•˜์—ผ์—†์ด ๊ธฐ๋‹ค๋ ค ์‹œ์Šคํ…œ์˜ ํšจ์œจ์„ฑ์ด ๋–จ์–ด์ง€๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ. (→ ํ˜ธ์œ„ ํšจ๊ณผ :: Convoy Effect)

๐Ÿ“Œ ์ตœ๋‹จ ์ž‘์—… ์šฐ์„ (SJF: Shortest Job First) ์Šค์ผ€์ค„๋ง

  • ์ค€๋น„ ํ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง์€ ์ž‘์—…๋ถ€ํ„ฐ CPU์— ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹
  • ์ž‘์—… ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค์˜ ์ฒ˜๋ฆฌ๊ฐ€ ๊ณ„์†ํ•ด์„œ ๋’ค๋กœ ๋ฐ€๋ฆฌ๋Š” ์•„์‚ฌ(starvation) ํ˜„์ƒ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ
  • ์šด์˜์ฒด์ œ๊ฐ€ ํ”„๋กœ์„ธ์Šค์˜ ์ข…๋ฃŒ ์‹œ๊ฐ„์„ ์ •ํ™•ํ•˜๊ฒŒ ์˜ˆ์ธกํ•˜๊ธฐ ์–ด๋ ค์›€. ๋•Œ๋ฌธ์— SJF ์Šค์ผ€์ค„๋ง์„ ์‚ฌ์šฉํ•˜๊ธฐ ํž˜๋“ฆ

๐Ÿ“Œ ๋ผ์šด๋“œ ๋กœ๋นˆ(RR: Round Robin) ์Šค์ผ€์ค„๋ง

  • ๊ฐ ํ”„๋กœ์„ธ์Šค์— ๋™์ผํ•œ ํฌ๊ธฐ์˜ ์‹œ๊ฐ„์„ ํ• ๋‹น๋ฐ›์€ ํ›„, ํ•ด๋‹น ์‹œ๊ฐ„ ๋™์•ˆ ์ž‘์—…์„ ์™„๋ฃŒํ•˜์ง€ ๋ชปํ•˜๋ฉด ์ค€๋น„ ํ์˜ ๋งจ ๋’ค๋กœ ๊ฐ€์„œ ์ž๊ธฐ ์ฐจ๋ก€๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐฉ์‹
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ผ์ • ์‹œ๊ฐ„ ๋™์•ˆ ์‚ฌ์šฉํ•œ ํ›„, ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ž์˜ ๊ธด ์ž‘์—…์„ ๋ฌด์ž‘์ • ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ฝ˜๋ฒ ์ด ํšจ๊ณผ๊ฐ€ ์ค„์–ด๋“ฆ
  • ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๊ฐ€ ๋„ˆ๋ฌด ํฐ ๊ฒฝ์šฐ FCFS ์Šค์ผ€์ค„๋ง๊ณผ ๋‹ค๋ฅผ๊ฒŒ ์—†์–ด์ง
  • ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๊ฐ€ ๋„ˆ๋ฌด ์ž‘์€ ๊ฒฝ์šฐ ๋ฌธ๋งฅ ๊ตํ™˜์ด ๋„ˆ๋ฌด ์ž์ฃผ ์ผ์–ด๋‚˜ ์ „๋ฐ˜์ ์ธ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง
  • ๊ฒฐ๋ก ์ ์œผ๋กœ ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๋Š” ๋˜๋„๋ก ์ž‘๊ฒŒ ์„ค์ •ํ•˜๋˜ ๋ฌธ๋งฅ ๊ตํ™˜์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ๊ณ ๋ คํ•˜์—ฌ ์ ๋‹นํ•œ ํฌ๊ธฐ๋กœ ํ•˜๋Š”๊ฒƒ์ด ์ค‘์š”

๐Ÿ“Œ ์ตœ์†Œ ์ž”๋ฅ˜ ์‹œ๊ฐ„ ์šฐ์„ (SRT: Shortest Remaining Time) ์Šค์ผ€์ค„๋ง

  • SJF ์Šค์ผ€์ค„๋ง๊ณผ RR ์Šค์ผ€์ค„๋ง์„ ํ˜ผํ•ฉํ•œ ๋ฐฉ์‹.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ RR ์Šค์ผ€์ค„๋ง์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ, CPU๋ฅผ ํ• ๋‹น๋ฐ›์„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒํ•  ๋•Œ, ๋‚จ์•„์žˆ๋Š” ์ž‘์—…์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์ ์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒ
  • ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์™€ ํ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ๋‚จ์€ ์‹œ๊ฐ„์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ๊ณ„์‚ฐํ•˜๊ณ , ๋‚จ์€ ์‹œ๊ฐ„์ด ๋” ์ ์€ ํ”„๋กœ์„ธ์Šค์™€ ๋ฌธ๋งฅ ๊ตํ™˜์„ ํ•ด์•ผํ•˜๋ฏ€๋กœ ์ถ”๊ฐ€ ์ž‘์—… ์‹œ๊ฐ„์ด ๋ฐœ์ƒ

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

  • ์ •์ˆ˜๋กœ ์šฐ์„ ์ˆœ์œ„ ๊ฐ’์„ ์„ค์ •ํ•˜์—ฌ ์Šค์ผ€์ค„๋งํ•˜๋Š” ๋ฐฉ์‹. ์ฆ‰, ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ๋ฐฉ์‹
  • ๋น„์„ ์ ํ˜• ๋ฐฉ์‹๊ณผ ์„ ์ ํ˜• ๋ฐฉ์‹์— ๋ชจ๋‘ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง ์—ญ์‹œ SJF์ฒ˜๋Ÿผ Starvation ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, Aging ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ

๐Ÿ“Œ ๋‹ค๋‹จ๊ณ„ํ(MQ: Multilevel Queue) ์Šค์ผ€์ค„๋ง

  • ํ”„๋กœ์„ธ์Šค ํŠน์„ฑ๋ณ„๋กœ ์ค€๋น„ ํ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋‘์–ด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•˜๊ณ , ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ํ๋“ค์ด ๋ชจ๋‘ ๋น„์—ˆ์„๋•Œ๋งŒ ๋‹ค์Œ ๋‹จ๊ณ„์˜ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„์˜ ํ ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹
  • ํ•œ ๋ฒˆ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋งค๊ฒจ์„œ ์ค€๋น„ ํ์— ๋“ค์–ด๊ฐ€๋ฉด ์ด ์šฐ์„ ์ˆœ์œ„๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์Œ
  • ๊ฐ ํ์—๋Š” ์ž์ฒด ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Œ

๐Ÿ“Œ ๋‹ค๋‹จ๊ณ„ ํ”ผ๋“œ๋ฐฑ ํ(MFQ: Multi-level Feedback Queue) ์Šค์ผ€์ค„๋ง

  • ํ˜„์žฌ ์‚ฌ์šฉ๋˜๋Š” CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž„
  • Multilevel Feedback Queue ์—ญ์‹œ ํ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ถ„ํ• ํ–ˆ๋‹ค๋Š” ์ ์—์„œ๋Š” Multilevel Queue์™€ ๋™์ผํ•˜์ง€๋งŒ, ๋‹ค๋ฅธ ์ ์€ ๋ฐ”๋กœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ
  • ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ํ•œ ๋ฒˆ์”ฉ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‚ฎ์ถค์œผ๋กœ์จ, ๋‹ค๋‹จ๊ณ„ ํ์—์„œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰์ด ์—ฐ๊ธฐ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•จ
  • ๋ฐ˜๋Œ€๋กœ, ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฃผ์–ด์ง„ ํƒ€์ž„ ํ€€ํ…€์„ ๋ชจ๋‘ ์†Œ์ง„ํ•œ ํ›„ CPU๋ฅผ ๊ฐ•์ œ๋กœ ํšŒ์ˆ˜๋‹นํ•˜๋ฉด, ์ด ํ”„๋กœ์„ธ์Šค๋Š” ๊ณ„์‚ฐ ์„ฑํ–ฅ์ด ๊ฐ•ํ•ด์ง„ ๊ฒƒ์œผ๋กœ ์ธ์‹ํ•˜์—ฌ ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž…/์ถœ๋ ฅ ์„ฑํ–ฅ ๊ธฐ์ค€ ํ•œ ๋‹จ๊ณ„ ๋‚ฎ์€ ์ค€๋น„ ํ๋กœ ์ด๋™์‹œํ‚ด
  • ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค CPU๋ฅผ ์–ป์„ ํ™•๋ฅ ์ด ์—ฌ์ „ํžˆ ๋‚ฎ์Œ. ๋”ฐ๋ผ์„œ ์–ด๋ ต๊ฒŒ ์–ป์€ CPU๋ฅผ ์ข€ ๋” ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ์˜ ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๋ฅผ ํฌ๊ฒŒ ์„ค์ •ํ•จ.
  • ๋งจ ๋งˆ์ง€๋ง‰ ํ๋Š” FCFS๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋จ

[์šด์˜์ฒด์ œ(OS)] CPU ์Šค์ผ€์ค„๋ง - (1) CPU ์Šค์ผ€์ค„๋ง์˜ ๊ฐœ๋…

[์šด์˜์ฒด์ œ(OS)] CPU ์Šค์ผ€์ค„๋ง - (2) ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜

'CS > OS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[CS] ๊ฒฝ์Ÿ ์ƒํƒœ(Race Condition)  (0) 2024.02.25
[CS] ๋ฐ๋“œ๋ฝ  (0) 2024.02.06
[CS] IPC(Inter Process Communication)  (0) 2024.02.06
[CS] PCB & Context Switching  (0) 2024.02.01
[CS] ์‹œ์Šคํ…œ ์ฝœ(System Call)  (0) 2024.02.01