๊ณ„๋ž€์†Œ๋…„ 2024. 5. 1. 20:53

1. ์Šค์ผ€์ค„๋ง

 

๊ฐœ๋…: ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋ชฉ์ ์€ ํ•ญ์ƒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋„๋ก ํ•˜์—ฌ CPU ์‚ฌ์šฉ ํšจ์œจ์„ ๊ทน๋Œ€ํ™” ํ•˜๋Š”๋ฐ ์žˆ๋‹ค.

 

CPU - I/O ๋ฒ„์ŠคํŠธ ์ฃผ๊ธฐ

ํ”„๋กœ์„ธ์Šค๋Š” ์‹คํ–‰๋˜๋Š” ๋™์•ˆ CPU ์‹คํ–‰๊ณผ ์ž…์ถœ๋ ฅ ๋Œ€๊ธฐ๋ผ๋Š” ๋‘ ์ฃผ๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค.

๊ณ„์‚ฐ ์ค‘์‹ฌ ํ”„๋กœ์„ธ์Šค์˜ ๊ฒฝ์šฐ ์ ์€ ์ˆ˜์˜ ๋งค์šฐ ๊ธด CPU ๋ฒ„์ŠคํŠธ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ์ž…์ถœ๋ ฅ ์ค‘์‹ฌ ํ”„๋กœ์„ธ์Šค๋Š” ๋งŽ์€ ์ˆ˜์˜ ์งง์€ CPU ๋ฒ„์ŠคํŠธ๋ฅผ ๊ฐ€์ง„๋‹ค.

 

CPU ์Šค์ผ€์ค„๋Ÿฌ

CPU๊ฐ€ ์œ ํœด ์ƒํƒœ๊ฐ€ ๋˜๋ฉด ์ค€๋น„์™„๋ฃŒ ํ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•˜๋‚˜ ์„ ํƒํ•ด์„œ ์‹คํ–‰ํ•œ๋‹ค. ์ด ์„ ํƒ์€ ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ํ•œ๋‹ค.

CPU ์Šค์ผ€์ค„๋ง์— ๋Œ€ํ•œ ๊ฒฐ์ •์€ 4๊ฐ€์ง€ ์ƒํ™ฉ์—์„œ ์ผ์–ด๋‚œ๋‹ค.

 

1. ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ƒํƒœ์—์„œ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ(์ž…์ถœ๋ ฅ ์š”์ฒญ, ์ž์‹ ํ”„๋กœ์„ธ์Šค๋“ค ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ข…๋ฃŒ๋˜๋Š”๊ฒƒ์„ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ์œ„ํ•ด wait๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ)
2.
ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ƒํƒœ์—์„œ ์ค€๋น„์™„๋ฃŒ ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ(์ธํŠธ๋ŸฝํŠธ ๋ฐœ์ƒ)
3.
ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐ ์ƒํƒœ์—์„œ ์ค€๋น„์™„๋ฃŒ ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ(์ž…์ถœ๋ ฅ ์™„๋ฃŒ)
4.
ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒํ•  ๋•Œ 

 

  • ๋น„์„ ์ (nonpreemptive) ์Šค์ผ€์ค„๋ง: ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU์— ํ• ๋‹น๋˜๋ฉด ๊ทธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ๋Œ€๊ธฐ์ค‘ ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ๊นŒ์ง€๋งŒ CPU๋ฅผ ์ ์œ ํ•œ๋‹ค. ์‹คํ–‰์„ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„ ํƒ๋˜์–ด์•ผ ํ•œ๋‹ค. 
  • ์„ ์ (preemptive) ์Šค์ผ€์ค„๋ง: ์ด์™€๋Š” ๋ฐ˜๋Œ€๋กœ ์„ ํƒ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ๋‹ค. ํŠน์ • ์กฐ๊ฑด์ด ๋งŒ์กฑ๋˜๋ฉด ํ˜„์žฌ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ์˜์‚ฌ์™€ ์ƒ๊ด€์—†์ด ์‹คํ–‰์„ ์ค‘๋‹จํ•˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ CPU์— ํ• ๋‹นํ•œ๋‹ค. ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ์— ์ด๋ฅผ ๋Œ€๋น„ํ•ด์•ผ ํ•œ๋‹ค.

 

์ •๋ฆฌํ•˜์ž๋ฉด 1๊ณผ 4๋Š” non-preemptive ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋˜์–ด์•ผ ํ•˜์ง€๋งŒ, 2์™€ 3์€ preemptiveํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

Dispatcher

์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์„ ํƒํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ CPU์— ํ• ๋‹นํ•ด์ฃผ๋Š” ์š”์†Œ๋ฅผ ๋งํ•œ๋‹ค. ๋””์ŠคํŒจ์ฒ˜๋Š” ๋ฌธ๋งฅ์ „ํ™˜ + ๋ชจ๋“œ ์ „ํ™˜์˜ ์ž„๋ฌด๋ฅผ ๋งก๊ณ  ์žˆ๋‹ค.

๋””์ŠคํŒจ์ฒ˜๊ฐ€ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ํŒจ์น˜ ์ง€์—ฐ์ด๋ผ ํ•œ๋‹ค.

 

2. ์Šค์ผ€์ค„๋ง ๊ธฐ์ค€

User-Oriented scheduling  (Minimize)

  • ์ „์ฒด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ (turnaround time) : ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ œ์‹œ๋œ ์‹œ์ ์—์„œ ์ข…๋ฃŒ ๋  ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์œผ๋กœ, ๋ฉ”๋ชจ๋ฆฌ์— ์ ์žฌ๋˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ์†Œ๋น„ํ•œ ์‹œ๊ฐ„+์ค€๋น„์™„๋ฃŒ ํ์—์„œ ๋Œ€๊ธฐํ•œ ์‹œ๊ฐ„+CPU์—์„œ ์‹คํ–‰ํ•œ ์‹œ๊ฐ„+์ž…์ถœ๋ ฅ ์‹œ๊ฐ„
  • ๋Œ€๊ธฐ ์‹œ๊ฐ„ (waiting time) : ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„์™„๋ฃŒ ํ์—์„œ ๋Œ€๊ธฐํ•œ ์ด ์‹œ๊ฐ„
  • ์‘๋‹ต ์‹œ๊ฐ„ (response time): ์„œ๋น„์Šค๋ฅผ ์š”์ฒญํ•œ ํ›„์— ๊ทธ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ฒซ ๋ฐ˜์‘์ด ๋‚˜์˜ค๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„

ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„(์š”์ฒญ ์ ‘์ˆ˜ ํ›„ ์‘๋‹ต ์‹œ์ž‘๊นŒ์ง€์˜ ์‹œ๊ฐ„)์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๋™์‹œ์— ์ ์ ˆํ•œ ์‘๋‹ต์„ ๋ฐ›๋Š” ๋Œ€ํ™”ํ˜• ์‚ฌ์šฉ์ž ์ˆ˜๋ฅผ ์ตœ๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.


System-Oriented scheduling  (Maximize)

  • ์ฒ˜๋ฆฌ์œจ (throughput) : ์‹œ๊ฐ„๋‹น ์™„๋ฃŒ๋˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜
  • CPU ์‚ฌ์šฉ ํšจ์œจ (CPU utilization) : CPU๋ฅผ ์–ผ๋งˆ๋‚˜ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ–ˆ๋Š”๊ฐ€, ์•ˆ์‰ฌ๊ณ  ์ž‘์—…ํ–ˆ๋‹ค๋ฉด 100%

 

์‹œ์Šคํ…œ ๊ด€์ ์—์„œ๋Š” ์ตœ๋Œ€ํ™”ํ•˜๊ณ  ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ๋Š” ์ตœ์†Œํ™”ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ด์ƒ์ ์ด๋‹ค.

 

์ถ”๊ฐ€๋กœ

  • fairness: ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋„ starvation์ด ์—†์–ด์•ผ ํ•œ๋‹ค. (ํ•˜์ง€๋งŒ, response time์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋œ ๊ณต์ •ํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค.) 
  • Balance resource: keep all resources of the System busy

Other (non-performance related) system- oriented scheduling policy goals:

 

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

  • ์„ ์  - SRTF, ์šฐ์„ ์ˆœ์œ„, RR, MLQ(RR+์šฐ์„ ์ˆœ์œ„), MLFQ(MLQ+ํ๋“ค ์‚ฌ์ด ์ด๋™ ํ—ˆ์šฉ)
  • ๋น„์„ ์  - FCFS, SJF, ์šฐ์„ ์ˆœ์œ„

1)FCFS(First-Come First-Served)

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

  • Non-preemptive
  • Response time: slow if there is a large varaiance in process execution times -> ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ง€๋‚˜์น˜๊ฒŒ ์˜ค๋ž˜ ์ ์œ  = convoy effect
  • Throughput: low
  • Fairness: short process & I/O bound process์—๊ฒŒ penalty
  • Starvation: ๋ฐœ์ƒ ์•ˆํ•จ, ์ˆœ์ฐจ์ ์ด๋ฏ€๋กœ
  • Overhead: minimal, context switching์ด ๊ฑฐ์˜ ์ผ์–ด๋‚˜์ง€ ์•Š์Œ

 

2)SRTF(Shortest-Remaining-Time-First)

๋‹ค์Œ CPU๋ฒ„์ŠคํŠธ ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค ์ˆœ์œผ๋กœ ์Šค์ผ€์ค„๋งํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ™์€ CPU ๋ฒ„์ŠคํŠธ ์‹œ๊ฐ„์„ ๊ฐ€์ง€๋ฉด FCFS ์ •์ฑ…์„ ๋”ฐ๋ฅธ๋‹ค.

  • Preemptive
  • Response time: ์ข‹์€ ํŽธ์ด๋‹ค. process๊ฐ€ ๋™์ ์œผ๋กœ ํ• ๋‹น๋  ๋•Œ ํ‰๊ท  waiting time์„ ์ตœ์†Œํ™” ํ•ด์ค€๋‹ค.
  • Throughput: ๋†’๋‹ค. ์งง์€๊ฑฐ ๋จผ์ € ์‹คํ–‰ํ•˜๋ฏ€๋กœ
  • Fairness: long process๋“ค์ด penalty. ๊ทธ๋Ÿฌ๋‚˜ ๊ธด ์• ๋“ค๋„ ์„œ์„œํžˆ ์งง์•„์งˆ ์žˆ๋‹ค.
  • Starvation: long process๋“ค์—๊ฒŒ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
  • Overhead: ํด ์ˆ˜ ์žˆ๋‹ค. context swtiching and recording and estimating  CPU burst times 

 

 

3)SJF(Shortest-Job-First)

์ƒˆ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„์™„๋ฃŒ ํ์— ๋„์ฐฉํ•˜๋ฉด ์ด ํ”„๋กœ์„ธ์Šค์˜ ๋‹ค์Œ CPU ๋ฒ„์ŠคํŠธ ์‹œ๊ฐ„๊ณผ ํ˜„์žฌ ์ˆ˜ํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ๋‚จ์€ CPU ๋ฒ„์ŠคํŠธ ์‹œ๊ฐ„์„ ๋น„๊ตํ•˜์—ฌ, ์ƒˆ ํ”„๋กœ์„ธ์Šค์˜ ๋‹ค์Œ ์‹œ๊ฐ„์ด ์ˆ˜ํ–‰ ์ค‘ ํ”„๋กœ์„ธ์Šค์˜ ๋‚จ์€ ์‹œ๊ฐ„๋ณด๋‹ค ์ ์œผ๋ฉด ๊ธฐ์กด ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒํ•˜๊ณ  ์ƒˆ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ• ๋‹นํ•œ๋‹ค.

tie์ผ ๊ฒฝ์šฐ, FCFS๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค์˜ ๊ณผ๊ฑฐ ์„ฑ๋Šฅ๊ณผ ์˜ˆ์ธก์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ธธ์ด๋ฅผ ์˜ˆ์ธกํ•˜๊ธฐ์— ๊ทผ์‚ฌ์น˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • Non-preemptive
  • Response time: good for short proecesses. FCFS๋ณด๋‹จ ์ข‹์•„์กŒ์œผ๋‚˜ ๊ธด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์งง์€ ํ”„๋กœ์„ธ์Šค ์•ž์—์„œ ์‹คํ–‰์‹œ ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ ค์•ผํ•œ๋‹ค
  • Throughput: ๋†’๋‹ค.
  • Fairness: long process๋“ค์—๊ฒŒ penalty
  • Starvation: long process๋“ค์—๊ฒŒ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค
  • Overhead: ํด ์ˆ˜ ์žˆ๋‹ค. recording and estimating  CPU burst times 

 

4)Priority Scheduling(ํ˜„์žฌ OS์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ)

์šฐ์„ ์ˆœ์œ„๋Š” ์ค‘์š”๋„, ๋ˆ, ์ •์น˜ ๋“ฑ์„ ๊ธฐ์ค€์œผ๋กœ ์™ธ๋ถ€์ ์œผ๋กœ ์ •์˜

์šฐ์„ ์ˆœ์œ„๋Š” ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ ์‚ฌํ•ญ, ํŒŒ์ผ ์š”๊ตฌ ์‚ฌํ•ญ, CPU ์š”๊ตฌ ์‚ฌํ•ญ vs I/O ์š”๊ตฌ ์‚ฌํ•ญ ๋“ฑ์— ๋”ฐ๋ผ ๋‚ด๋ถ€์ ์œผ๋กœ ์ •์˜

SJF ๋˜ํ•œ ์ผ์ข…์˜ priority๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.  

Priority Scheduling๋Š” preemtpive(Mac, Windows)๋„ ๋˜๊ณ , non-preemptive(์ž„๋ฒ ๋””๋“œ์ปดํ“จํ„ฐ, ์‹ค์‹œ๊ฐ„ OS์˜ ๊ฒฝ์šฐ)๋„ ๋œ๋‹ค

  • ํ”„๋กœ์„ธ์Šค๊ฐ€ ready queue๋„์ฐฉ ์‹œ ์ƒˆ๋กœ ๋„์ฐฉํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์™€ ๋น„๊ตํ•˜์—ฌ ๋ฐ”๊พธ๋Š” preemptive
  • ์ค€๋น„์™„๋ฃŒ ํ์˜ head์— ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋„ฃ๋Š” non-preemptive

starvation: low-priority procsses์—๊ฒŒ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด aging ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋”๋ณด๊ธฐ
  • aging

์˜ค๋žœ ์‹œ๊ฐ„ ์‹œ์Šคํ…œ์—์„œ ๋Œ€๊ธฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ ์ง„์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ• (Ready queue์—์„œ ๊ธฐ๋‹ค๋ฆฌ๋Š”ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด์„œ, ๋”ฐ๋ผ์„œ I/O ํ•˜๋ฉด์„œ ์žˆ๋Š”๊ฑด ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ์•„๋‹ˆ๋‹ค.)

Priority๋Š” PCB์— ์ €์žฅ๋œ๋‹ค.

 

5)๋ผ์šด๋“œ๋กœ๋นˆ

์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์„ ์œ„ํ•ด ์„ค๊ณ„

time slice ( = time quantum)์„ ์ •์˜ํ•˜๊ณ , ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ์ตœ๋Œ€ํ•œ time slice๋™์•ˆ ์‹คํ–‰ํ•˜๊ณ , ์ด ์‚ฌ์ด์— ์™„๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฉด ready queue์˜ tail์— ์ถ”๊ฐ€ํ•œ๋‹ค.

time slice์•ˆ์— ์™„๋ฃŒ๋˜๋ฉด ready queue์˜ head์—์„œ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒํ•˜๊ณ  ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ time slice๋™์•ˆ ์‹คํ–‰ํ•œ๋‹ค.

ready queue๋Š” ์›ํ˜•ํ๋กœ ๋™์ž‘ํ•œ๋‹ค. CPU ์Šค์ผ€์ค„๋Ÿฌ๋Š” ready queue์—์„œ ์ฒซ๋ฒˆ์งธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒํ•ด ํ•œ ๋ฒˆ์˜ time slice ์ดํ›„์— ์ธํŠธ๋ŸฝํŠธ๋ฅผ ๊ฑธ๋„๋ก ํƒ€์ด๋จธ๋ฅผ ์„ค์ •ํ•œ ํ›„, ํ”„๋กœ์„ธ์Šค๋“ค์„ dispatch

  • Preemptive
  • Response time: ์งง์€ ํ”„๋กœ์„ธ์Šค๋“ค์—๊ฒŒ ์ข‹๋‹ค. ๊ธด ํ”„๋กœ์„ธ์Šค๋“ค์€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  • Throughput: time slice์— ์˜ํ•ด ๊ฒฐ์ •๋œ๋‹ค.
    • time slice๊ฐ€ ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด context switching์ด ๋„ˆ๋ฌด ์ž์ฃผ ์ผ์–ด๋‚˜์„œ ์•ˆ์ข‹๋‹ค.
    • ๋„ˆ๋ฌด ํฌ๋ฉด FCFS์™€ ๋™์ผํ•ด์ง„๋‹ค.
  • Fairness: I/O bound process์—๊ฒŒ penalty(I/O bound process๊ฐ€ CPU์—์„œ์˜ ์‹คํ–‰์‹œ๊ฐ„์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ณ  I/O ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ ์ผ๋ถ€ ์‹œ๊ฐ„์ด ๋‚ญ๋น„ ๋  ์ˆ˜ ์žˆ๋‹ค.) -> ๋™์‹œ๋ณ‘๋ ฌ์„ฑ ์ข‹์•„์ง„๋‹ค.(์ƒˆ๋ผ CPU๋“ค์ด๋†€์ง€์•Š๊ฒŒ ๋˜๊ธฐ๋•Œ๋ฌธ)
  • Starvation: ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. ๋ชจ๋‘ ๋™์ผํ•œ time slice๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ
  • Overhead: ๋‚ฎ๋‹ค. ๊ธฐ๊ณ„์ ์œผ๋กœ ๋‹ค์Œ๊ฑฐ ๋Œ๋ฆฌ๊ธฐ์— ๋‚ฎ์€ํŽธ

 

6)๋‹ค์ค‘๋ ˆ๋ฒจ ํ ์Šค์ผ€์ค„๋ง(MLQ)

์•ž์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Ready queue๊ฐ€ ํ•œ๊ฐœ์ด๋‹ค. ์ด์ œ, ์ค€๋น„์™„๋ฃŒ ํ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ๋กœ ๋‚˜๋ˆ„์–ด ์‚ฌ์šฉํ•œ๋‹ค.

ํ”„๋กœ์„ธ์Šค์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ ํŠน์ • ํ์— ํ• ๋‹น๋˜๋ฉฐ, ์ด๋•Œ ๊ฐ ํ๋Š” ๋…์ž์ ์ธ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค.

preemptively or non-preemptively

๋”๋ณด๊ธฐ

foreground -  background

 

์‰˜์—์„œ ps์น˜๋ฉดํ”„๋กœ์„ธ์Šค๊ฐ€๋‹ค๋ณด์ด๋Š”๋ฐ, ์ด๋Š”foreground

background๋กœ ๋Œ๋ฆฌ๋ ค๋ฉด &๋กœ ๋Œ๋ฆฌ๋ฉด๋œ๋‹ค.

System(kernel process 3๊ฐ€์ง€: scheduler, Pager ), interactive(e.g. office, game), editing, computing

e.g. 80% of CPU time to foreground, using RR & 20% of CPU time to background, using FCFS

1) ์ƒ์œ„ ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ํ•˜์œ„ ์šฐ์„ ์ˆœ์œ„ ํ๋ณด๋‹ค ์ ˆ๋Œ€์  ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ, preemptiveํ•˜๋‹ค.

2) ํ ๊ฐ„์— ์ผ์ • ๋น„์œจ๋กœ CPU ์‹œ๊ฐ„์„ ํ• ๋‹นํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

7)๋‹ค์ค‘๋ ˆ๋ฒจ ํ”ผ๋“œ๋ฐฑ ํ ์Šค์ผ€์ค„๋ง(MLFQ)

MLQ๋Š” ์œ ์—ฐ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. (ํ”„๋กœ์„ธ์Šค๋“ค์ด ์‹œ์Šคํ…œ ์ง„์ž… ์‹œ ์˜๊ตฌ์ ์œผ๋กœ ํ•˜๋‚˜์˜ ํ์— ํ• ๋‹น๋˜๊ณ  ๋‹ค๋ฅธ ํ๋กœ ์ด๋™๋ถˆ๊ฐ€)

์ด์™€๋‹ฌ๋ฆฌ MLFQ๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ๊ฐ„์— ์ด๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ์ฆ‰, ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฉด ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ํ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

preemptively or non-preemptively

CPU ๋ฒ„์ŠคํŠธ ์‹œ๊ฐ„ ํŠน์„ฑ์ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋“ค์„ ๋ถ„๋ฆฌํ•˜์—ฌ starvation๊ณผ convoy effect๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์ฃผ ๋ชฉํ‘œ์ด๋‹ค.

๋Œ€ํ™”์‹ ํ”„๋กœ์„ธ์Šค์™€ ์ž…์ถœ๋ ฅ ์ค‘์‹ฌ ํ”„๋กœ์„ธ์Šค๋Š” ์ƒ์œ„ ํ์— ํ• ๋‹น๋˜๊ณ  CPU ์ค‘์‹ฌ ํ”„๋กœ์„ธ์Šค๋Š” ํ•˜์œ„ ํ์— ํ• ๋‹น๋œ๋‹ค.

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

์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ์—์„œ ๊ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•˜๊ณ , ๊ฐ CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ๋กœ ์ด๋™
์˜ค๋ž˜๋œ ํ”„๋กœ์„ธ์Šค๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ๋กœ ์ด๋™ -> aging๊ณผ ๋น„์Šทํ•œ ๋ฐฉ์‹์œผ๋กœ starvation ์˜ˆ๋ฐฉ

Feedback = ๊ณผ๊ฑฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฏธ๋ž˜๋ฅผ ์˜ˆ์ธก - ๊ณผ๊ฑฐ์— CPU๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ž‘์—…(SRT์— ๊ฐ€๊นŒ์šด ์ž‘์—…)์„ ์„ ํ˜ธ

  • Kernel processes have negative values.
  • Userprocesses have positive values.

์ฐธ๊ณ ๋ฌธํ—Œ

https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/6_CPU_Scheduling.html

 

Operating Systems: CPU Scheduling

CFS ( Completely Fair Scheduler ) Performance The Linux CFS scheduler provides an efficient algorithm for selecting which task to run next. Each runnable task is placed in a red-black tree—a balanced binary search tree whose key is based on the value of

www.cs.uic.edu