[์šด์˜์ฒด์ œ] CPU ์Šค์ผ€์ค„๋ง

CPU ์Šค์ผ€์ค„๋ง์ด๋ž€? 

์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ CPU๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž˜ ๋ฐฐ์ •ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ
์˜ค๋ฒ„ํ—ค๋“œ๋Š” ์ค„์ด๊ณ , ์‚ฌ์šฉ๋ฅ ์€ ๋Š˜๋ฆฌ๊ณ  ๊ธฐ์•„ ํ˜„์ƒ์€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ 
Batch System : ๊ฐ€๋Šฅํ•˜๋ฉด ๋งŽ์€ ์ผ์„ ์ˆ˜ํ–‰, ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์ค‘์š”ํ•˜๋‹ค. 
Interactive System : ๋น ๋ฅธ ์‘๋‹ต์‹œ๊ฐ„ == ์ ์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„ 
Real-time System : ๋ฐ๋“œ๋ผ์ธ ๋งž์ถ”๊ธฐ

์„ ์ ๊ณผ ๋น„์„ ์  ์Šค์ผ€์ค„๋ง 

  1. ์„ ์  ์Šค์ผ€์ค„๋ง : OS๊ฐ€ CPU์˜ ์‚ฌ์šฉ๊ถŒ์„ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋บ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ 
  2. ๋น„์„ ์  ์Šค์ผ€์ค„๋ง : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ I/O๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์‹คํ–‰ ๋ณด์žฅ

CPU ์Šค์ผ€์ค„๋ง์˜ ์ข…๋ฅ˜ 

๋น„์„ ์  ์Šค์ผ€์ค„๋ง : FCFS (Fist Come First Served)

  1. FIFO(First In First Out)๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜, ๋ง ๊ทธ๋Œ€๋กœ ๊ฐ€์žฅ ๋จผ์ € ๋“ค์–ด์˜จ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € CPU๋ฅผ ํ• ๋‹น๋ฐ›๋Š”๋‹ค. 
  2. ๋งŒ์•ฝ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•ž์ชฝ์œผ๋กœ ์˜ค๊ฒŒ ๋˜๋ฉด ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง„๋‹ค. 

๋น„์„ ์  ์Šค์ผ€์ค„๋ง : SJF (Shortest Job First) 

  1. FCFS์˜ ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ํฌ๋‹ค๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. 
  2. FCFS๊ฐ€ ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•ž์œผ๋กœ ์˜ค๊ฒŒ ๋˜๋ฉด ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง„๋‹ค๋Š” ์ ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ์งง์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € CPU๋ฅผ ํ• ๋‹น์‹œํ‚ค๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 
  3. FCFS๋ณด๋‹ค ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ฐ์†Œํ–ˆ์ง€๋งŒ, ์งง์€ ์ž‘์—…์— ์œ ๋ฆฌํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์กด์žฌํ•˜๋‹ค.
  4. ํ•˜์ง€๋งŒ CPU๊ฐ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ „์— ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜ํ–‰์‹œ๊ฐ„์„ ์•Œ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์—ˆ๊ธฐ์— ์‹ค์ œ๋กœ ์ ์šฉ์‹œํ‚ค๋Š” ์–ด๋ ค์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. 

๋น„์„ ์  ์Šค์ผ€์ค„๋ง : HRN (Hightest Response-ratio Next) 

  1. ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ณต์‹์„ ์ด์šฉํ•˜์—ฌ ๊ณ„์‚ฐํ•˜์—ฌ SJF์˜ ๋‹จ์ ์ธ ์ ์œ  ๋ถˆํ‰๋“ฑ(์งง์€ ์ž‘์—…์— ์œ ๋ฆฌ)๋ฅผ ๋ณด์™„ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.
  2. ์šฐ์„ ์ˆœ์œ„ = (๋Œ€๊ธฐ์‹œ๊ฐ„ + ์‹คํ–‰์‹œ๊ฐ„) / ์‹คํ–‰์‹œ๊ฐ„ 
  3. ์˜ค๋žซ๋™์•ˆ ๋Œ€๊ธฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ฆ๊ฐ€์‹œํ‚ด์œผ๋กœ์„œ ๊ธฐ์•„ ๋ฌธ์ œ๋„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์„ ์  ์Šค์ผ€์ค„๋ง : Priority Scheduling 

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

์„ ์  ์Šค์ผ€์ค„๋ง : Round Robin 

  1. FCFS์™€ ๋™์ผํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋˜์ง€๋งŒ ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋™์ผํ•œ ์‹œ๊ฐ„์˜ ํƒ€์ž„ ํ€€ํ…€ ๋งŒํผ CPU๋ฅผ ํ• ๋‹น ๋ฐ›๋Š”๋‹ค.
  2. ๋งŒ์•ฝ ํƒ€์ž„ ํ€€ํ…€์ด ํฌ๋ฉด FCFS์™€ ๋™์ผํ•ด์ง€๊ณ , ์ž‘์œผ๋ฉด Context Switching์ด ์žฆ์•„์ ธ์„œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋œ๋‹ค.

์„ ์  ์Šค์ผ€์ค„๋ง : Multilevel-Queue 

  1. ํ”„๋กœ์„ธ์Šค์˜ ๊ทธ๋ฃน์— ๋”ฐ๋ผ ํ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ถ„๋ฆฌํ•ด๋†“๊ณ  ํ ๋ณ„๋กœ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜(๋ณดํ†ต RR or FCFS)์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. 
  2. foreground(Interactive Processes, System Processes)๋Š” Round Robin ์Šค์ผ€์ค„๋ง์„ ์ ์šฉ์‹œ์ผœ Interactiveํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  background๋Š”(Batch Processes) ํ”„๋กœ์„ธ์Šค๋“ค์€ FCFS ์Šค์ผ€์ค„๋ง์„ ์ ์šฉ์‹œํ‚จ๋‹ค. 
  3. ํŠน์ • ํ์— ๋“ค์–ด๊ฐ€๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ๋‹ค๋ฅธ ํ๋กœ ์ด๋™ํ•˜์ง€ ๋ชปํ•œ๋‹ค.
  4. ๋Œ€๊ธฐ์—ด ๊ฐ„์˜ ์Šค์ผ€์ค„๋ง์€ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค.
  • ๊ณ ์ • ์šฐ์„  ์ˆœ์œ„ ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง ๋ฐฉ๋ฒ• 

๊ฐ ํ๋Š” ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ๋ณด๋‹ค ์ ˆ๋Œ€์ ์œผ๋กœ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ 3๋ฒˆ ํ๋Š” 1,2๋ฒˆ ํ๊ฐ€ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ์™„๋ฃŒํ•  ๋•Œ ๊นŒ์ง€ ์ ˆ๋Œ€๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค. 

  • ํƒ€์ž„ ์Šฌ๋ผ์ด์‹ฑ 

ํƒ€์ž„ ํ€€ํ…€์„ ํ๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. 

 

 

์„ ์  ์Šค์ผ€์ค„๋ง : Multilevel-Feedback-Queue 

  1. Multilevel Queue์™€ ๋‹ค๋ฅด๊ฒŒ ํ”„๋กœ์„ธ์Šค์˜ ํ ๊ฐ„ ์ด๋™์ด ํ—ˆ์šฉ๋œ๋‹ค.
  2. ์šฐ์„ ์ˆœ์œ„๋Š” ์ค‘์š”๋„๋ฅผ ํŒ๋‹จํ•˜์—ฌ ์ง€์ •๋˜์ง€๋งŒ ์ด๊ฒƒ์ด ์ ˆ๋Œ€์ ์ด์ง€ ์•Š์„์ˆ˜๋„ ์žˆ๋‹ค, Multilevel Queue๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์ž˜๋ชป๋œ ๊ฒƒ์„ ์•Œ์•„๋„ ์ˆ˜์ •ํ•˜์ง€ ๋ชปํ•˜์ง€๋งŒ Multilevel Feedback Queue๋Š” ์ž˜๋ชป๋œ ๊ฒƒ์„ ์•Œ๋ฉด ํ”ผ๋“œ๋ฐฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 
  3. ํ”ผ๋“œ๋ฐฑ์„ ์œ„ํ•ด ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ํ๋กœ ๊ฒฉ์ƒ์‹œํ‚ค๋Š” ์‹œ๊ธฐ ๊ฒฐ์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๊ฒฉํ•˜์‹œํ‚ค๋Š” ์‹œ๊ธฐ ๊ฒฐ์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋งˆ์ง€๋ง‰์œผ๋กœ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์–ด๋Š ํ์— ๋“ค์–ด๊ฐˆ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์กด์žฌํ•œ๋‹ค. 
  4. ๋‚ฎ์€ ์šฐ์„  ์ˆœ์œ„ ํ์˜ ํ”„๋กœ์„ธ์Šค๋Š” ๋†’์€ ์šฐ์„  ์ˆœ์œ„ ํ๊ฐ€ ๋น„์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋†’์€ ์šฐ์„  ์ˆœ์œ„ ํ์— ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๋‚ฎ์€ ์šฐ์„  ์ˆœ์œ„ ํ์—์„œ ์‹คํ–‰ ์ค‘์ด๋˜ ํ”„๋กœ์„ธ์Šค๋Š” ์ค‘๋‹จ๋œ๋‹ค.
  • ๋™์ž‘ ๋ฐฉ์‹
    1. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰์„ ์‹œ์ž‘ํ•˜๋ฉด ๋จผ์ € ํ1์— ๋“ค์–ด๊ฐ„๋‹ค.
    2. ํ 1์—์„œ ํ”„๋กœ์„ธ์Šค๋Š” ํ€€ํ…€ 4๋กœ ์‹คํ–‰๋˜๊ณ  ํ€€ํ…€ 4๋ฅผ ํ†ตํ•ด ์™„๋ฃŒ๋˜๊ฑฐ๋‚˜ I/O์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ณ  ๋‹ค์‹œ ํ1์—์„œ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.
    3. ๋งŒ์•ฝ ํ€€ํ…€ 4๋กœ ์™„๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฉด ํ2๋กœ ์ด๋™ํ•œ๋‹ค.
    4. 2,3๋ฒˆ ๊ณผ์ •๋„ ํ2์—์„œ ๋ฐ˜๋ณต๋˜์ง€๋งŒ ํ€€ํ…€ 8๋กœ ์‹คํ–‰๋˜๋ฉฐ, ๋งŒ์•ฝ ํ€€ํ…€8๋กœ ์™„๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฉด ํ3์œผ๋กœ ์ด๋™ํ•˜๊ฒŒ ๋œ๋‹ค.
    5. ๋งˆ์ง€๋ง‰ ๋Œ€๊ธฐ์—ด ํ”„๋กœ์„ธ์Šค๋Š” FCFS ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰๋˜๊ฒŒ ๋œ๋‹ค.

์Šค์ผ€์ค„๋ง์˜ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ค€ 

  1. Response Time : ์ž‘์—…์ด ์ฒ˜์Œ ์‹คํ–‰๋˜๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„
  2. Turnaroudn TIme : ์‹คํ–‰ ์‹œ๊ฐ„๊ณผ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๋ชจ๋‘ ํ•ฉํ•œ ์‹œ๊ฐ„์œผ๋กœ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„

 

Reference

https://www.geeksforgeeks.org/multilevel-queue-mlq-cpu-scheduling/

 

Multilevel Queue (MLQ) CPU Scheduling - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

https://gyoogle.dev/blog/computer-science/operating-system/CPU%20Scheduling.html

 

CPU Scheduling | ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป Tech Interview

CPU Scheduling 1. ์Šค์ผ€์ค„๋ง CPU ๋ฅผ ์ž˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž˜ ๋ฐฐ์ •ํ•˜๊ธฐ ์กฐ๊ฑด : ์˜ค๋ฒ„ํ—ค๋“œ ↓ / ์‚ฌ์šฉ๋ฅ  ↑ / ๊ธฐ์•„ ํ˜„์ƒ ↓ ๋ชฉํ‘œ Batch System: ๊ฐ€๋Šฅํ•˜๋ฉด ๋งŽ์€ ์ผ์„ ์ˆ˜ํ–‰. ์‹œ๊ฐ„(time) ๋ณด๋‹จ ์ฒ˜๋ฆฌ๋Ÿ‰(throughout)

gyoogle.dev

https://www.geeksforgeeks.org/multilevel-feedback-queue-scheduling-mlfq-cpu-scheduling/

 

Multilevel Feedback Queue Scheduling (MLFQ) CPU Scheduling - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org