๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

OS

5์žฅ CPU scheduling

 

reference: kocw์˜ ๋ฐ˜ํšจ๊ฒฝ ๊ต์ˆ˜๋‹˜ ๊ฐ•์˜์™€ ๊ถŒ์ง„์šฑ ๊ต์ˆ˜๋‹˜ ๊ฐ•์˜(๋Œ€ํ•™ ์ •๊ทœ ์ˆ˜์—…)
์ˆ˜์—…์„ ๋“ฃ๊ณ ๋‚˜์„œ ๊ฐ•์˜ ๊ต์žฌ๋ฅผ ํƒ€์ดํ•‘ํ•˜๊ณ  ํ•„๊ธฐํ•œ ๋ถ€๋ถ„์„ ์ถ”๊ฐ€์ ์œผ๋กœ ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์›น๋ทฐ์—์„œ toc๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
github์˜ md ํŒŒ์ผ๋กœ ๋ณด๋Š” ๊ฒŒ ํŽธํ•˜์‹œ๋‹ค๋ฉด, ์—ฌ๊ธฐ๋กœ ์ด๋™ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.


1. CPU scheduling์ด ํ•„์š”ํ•œ ์ด์œ 

CPU-burst Time์˜ ๋ถ„ํฌ

์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ job (=process)๊ฐ€ ์„ž์—ฌ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— CPU scheduling์ด ํ•„์š”ํ•˜๋‹ค.

interactive job์—๊ฒŒ ์ ์ ˆํ•œ response ์ œ๊ณตํ•ด์•ผ ํ•˜๊ณ  cpu์™€ I/O ์žฅ์น˜ ๋“ฑ ์‹œ์Šคํ…œ ์ž์›์„ ๊ณจ๊ณ ๋ฃจ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

Q. ๋นจ๊ฐ„์ƒ‰ ๋ถ€๋ถ„๊ณผ ๊ฐ™์ด cpu๋ฅผ ์งง๊ฒŒ ํ”„๋กœ๊ทธ๋žจ๊ณผ ํŒŒ๋ž€์ƒ‰ ๋ถ€๋ถ„๊ณผ ๊ฐ™์ด cpu๋ฅผ ๊ธธ๊ฒŒ ์“ฐ๋Š” ํ”„๋กœ๊ทธ๋žจ ์ค‘ CPU๋ฅผ ๋ˆ„๊ตฌํ•œํ…Œ ๋จผ์ € ์ฃผ์–ด์•ผ ํ• ๊นŒ์š”? (= cpu scheduling)

A. ์ด์งˆ์ ์ธ ์ž‘์—…์ด ์„ž์—ฌ์žˆ์„ ๋•Œ, I/O bound job์— ๋จผ์ € ์ฃผ๋Š” ๊ฒƒ์ด ์ข‹์Œ. ์ด์œ ๋Š” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์„ ๋จผ์ € ์š”์ฒญํ•˜๋Š” ๊ฒŒ ์ข‹๊ณ  I/O ์ž‘์—…์€ ๋ณดํ†ต ์‚ฌ์šฉ์ž์™€ interactionํ•˜๋Š” ์ž‘์—…์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

2. ํ”„๋กœ์„ธ์Šค์˜ ํŠน์„ฑ ๋ถ„๋ฅ˜

  • I/O-bound process
    • CPU๋ฅผ ์žก๊ณ  ๊ณ„์‚ฐํ•˜๋Š” ์‹œ๊ฐ„๋ณด๋‹ค I/O์— ๋งŽ์€ ์‹œ๊ฐ„์ด ํ•„์š”ํ•œ job
    • many short CPU bursts
    •  
      ์ฆ‰, ์ค‘๊ฐ„์ค‘๊ฐ„ I/O๊ฐ€ ๋งŽ์ด ๋ผ์–ด๋“ค์–ด์„œ CPU bursts๊ฐ€ ์ž˜๋ ค ์งง์•„์ง. ๋Œ€์‹  ์ˆ˜๋Š” ๋งŽ์•„์ง
    • CPU burst: cpu๋ฅผ ํ•œ ๋ฒˆ์— ์–ผ๋งˆ๋‚˜ ๊ธธ๊ฒŒ ์“ฐ๋Š๋ƒ
    • ์ฃผ๋กœ ์‚ฌ๋žŒ๊ณผ interactionํ•˜๋Š” ๊ฒŒ ๋งŽ์Œ.
  • CPU-bound process
    • ๊ณ„์‚ฐ ์œ„์ฃผ์˜ job
    • few, very long CPU bursts

3. CPU Scheduler & Dispatcher

CPU Scheduler ์™€ Dispatcher ๋ชจ๋‘ ์šด์˜์ฒด์ œ์˜ ํŠน์„ฑ ์ฝ”๋“œ์˜ ์ผ๋ถ€์ด๋‹ค. ํ•˜๋“œ์›จ์–ด๋‚˜ ๋‹จ๋…์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.

  • Cpu Scheduler
    • ready ์ƒํƒœ์˜ ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ ์ด๋ฒˆ์— CPU๋ฅผ ์ค„ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณ ๋ฅธ๋‹ค. ๊ฒฐ์ •ํ•œ๋‹ค.
  • Dispatcher
    • CPU์˜ ์ œ์–ด๊ถŒ์„ CPU scheduler์— ์˜ํ•ด ์„ ํƒ๋œ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋„˜๊ธด๋‹ค.
    • ์ด ๊ณผ์ •์„ context switch(๋ฌธ๋งฅ ๊ตํ™˜)์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • CPU scheduling์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ๋Š” ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์ด๋‹ค.
    1. Running ใ…ก> Blocked
    2. Running ใ…ก> Ready
    3. Blocked ใ…ก> Ready
    4. Terminate

1, 4 ์—์„œ ์Šค์ผ€์ค„๋ง์€ nonpreemptive (- ๊ฑ์ œ๋กœ ๋นผ์•—์ง€ ์•Š๊ณ  ์ž์ง„ ๋ฐ˜๋‚ฉ)

์ด์™ธ์˜ ๋ชจ๋“  ์Šค์ผ€์ค„๋ง์€ preemptive (- ๊ฐ•์ œ๋กœ cpu๋ฅผ ๋นผ์•—๊น€)

4. Scheduling Criteria

= Performance Index ( = Performance Measure, ์„ฑ๋Šฅ ์ฒ™๋„) ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ๋ฌด์—‡์ด ์ข‹์€๊ฐ€ ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋Š” ์ฒ™๋„, ๋ฐฉ๋ฒ•

  • CPU utilization (์ด์šฉ๋ฅ )
    • keep the CPU as busy as possible
    • ๋น„์œ : ์ฃผ๋ฐฉ์žฅ์ด ๋†€์ง€ ์•Š๊ณ  ์ผํ•œ ์‹œ๊ฐ„์˜ ๋น„์œจ
    • ๋†’์„์ˆ˜๋ก ์ข‹์Œ
  • Throughput (์ฒ˜๋ฆฌ๋Ÿ‰)
    • the number of processes that complete their execution per time unit
    • ๋น„์œ : ์ฃผ๋ฐฉ์žฅ์ด ์†๋‹˜ ๋ช‡ ๋ช…์„ ๋ฐ›์•˜๋ƒ
    • ๋†’์„์ˆ˜๋ก ์ข‹์Œ
  • Turnaround time (์†Œ์š” ์‹œ๊ฐ„, ๋ฐ˜ํ™˜ ์‹œ๊ฐ„)
    • amount of time to execute a particular process
    • ๋น„์œ : ์ค‘๊ตญ์ง‘ ๋“ค์–ด์™€์„œ ๋‹ค ๋จน๊ณ  ๋‚˜๊ฐ„ ์‹œ๊ฐ„
    • ์งง์„์ˆ˜๋ก ์ข‹์Œ
  • Waiting time (๋Œ€๊ธฐ ์‹œ๊ฐ„)
    • amount of time a process has been waiting in the ready queue
    • cpu ์“ฐ๋Ÿฌ ์™€์„œ ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„์˜ ํ•ฉ
    • ๋น„์œ : ๋‹จ๋ฌด์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„, ์ดํ›„์— ์งœ์žฅ๋ฉด ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„, ์ดํ›„์— ํƒ•์ˆ˜์œก ๊ธฐ๋‹ค๋ฆฐ ์‹œ๊ฐ„์˜ ํ•ฉ
    • ์งง์„์ˆ˜๋ก ์ข‹์Œ
  • Response time (์‘๋‹ต ์‹œ๊ฐ„)
    • amount of time it takes from when a request was submitted until the first response is produced, not output (for time-sharing environment)
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ cpu๋ฅผ ์“ฐ๋Ÿฌ ๋“ค์–ด์™€์„œ ์ฒ˜์Œ cpu๋ฅผ ์“ฐ๊ธฐ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฒ˜์Œ ์‹œ์ž‘ํ•ด์„œ ์ฒ˜์Œ์œผ๋กœ cpu๋ฅผ ์–ป์€ ์‹œ๊ฐ„์ด ์•„๋‹˜
    • ๋น„์œ : ๋‹จ๋ฌด์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„
    • ์งง์„์ˆ˜๋ก ์ข‹์Œ

5. Scheduling Algorithms

5-1. FCFS (First-Come First-Service)

์˜ˆ๋ฅผ ๋“ค๋ฉด, ํ™”์žฅ์‹ค์—์„œ, ์€ํ–‰์—์„œ ์˜จ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋˜๊ณ  ์•ž ์‚ฌ๋žŒ์„ ๋‚ด์ซ“์„ ์ˆ˜ ์—†๋‹ค.

CPU ์ž…์žฅ์—์„œ ๋ณด๋ฉด ๋นผ์•—์„ ์ˆ˜ ์—†๋‹ค๋Š” ๋œป์ด๋‹ค. (nonpreemptive)

 

์˜ˆ์‹œ๋ฅผ ๋ด๋ณด์ž.

ํ”„๋กœ์„ธ์Šค์˜ ๋„์ฐฉ ์ˆœ์„œ๋ฅผ Burst Time์ด ์งง์€ ์ˆœ์„œ๋กœ ๋ฐ”๊ฟจ๋”๋‹ˆ waiting time(๋Œ€๊ธฐ ์‹œ๊ฐ„)์ด ํ˜„์ €ํžˆ ์ค„์–ด๋“ค์—ˆ๋‹ค.

*Burst Time: CPU ์‚ฌ์šฉ ์‹œ๊ฐ„

Convey effect(ํ˜ธ์œ„ ํšจ๊ณผ): short process behind long process ์ „์Ÿ ์‹œ ์ข‹์€ ํšจ๊ณผ๋กœ, ์˜ˆ๋ฅผ ๋“ค๋ฉด ์ž˜ ์‹ธ์šฐ๋Š” ์‚ฌ๋žŒ์ด ์•ž์—์„œ ์˜ค๋ž˜ ๋ฒ„ํ…จ์ฃผ๋ฉด ๋’ค ์‚ฌ๋žŒ๋“ค์€ ์˜ค๋ž˜ ์‚ฌ๋Š” ๊ฒƒ์œผ๋กœ ๋น„์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ CPU ๊ด€์ ์—์„œ๋Š” ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๋ฏ€๋กœ ๋ถ€์ •์ ์ธ ํšจ๊ณผ์ด๋‹ค.

5-2. SJF (Shortest-Job-First)

๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ๋‹ค์Œ๋ฒˆ CPU burst time์„ ๊ฐ€์ง€๊ณ  ์Šค์ผ€์ค„๋ง์— ํ™œ์šฉํ•œ๋‹ค.

CPU burst time์ด ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์ผ ๋จผ์ € ์Šค์ผ€์ค„ํ•œ๋‹ค.

๋‘ ์ข…๋ฅ˜๋กœ ๋‚˜๋‰œ๋‹ค.

  • Nonpreemptive
    ๊ทธ๋Ÿฐ๋ฐ ์ด ๋ฐฉ๋ฒ•์— ์น˜๋ช…์ ์ธ ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค. ์˜์›ํžˆ ๋‚ด ์ฐจ๋ก€๊ฐ€ ์˜ค์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
  • ๋‚˜๋Š” ํ™”์žฅ์‹ค์„ 10๋ถ„ ์“ธ๊ฑฐ๋ผ์„œ ์งง๊ฒŒ ์“ฐ๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ์–‘๋ณดํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, 5๋ถ„ 1๋ถ„์„ ์‚ฌ์šฉํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์ด ๊ณ„์† ์˜จ๋‹ค๋ฉด ๋‚œ ํ‰์ƒ ํ™”์žฅ์‹ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์„ ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์„ Starvation์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • *Arrival Time: Ready Queue์— ๋„์ฐฉํ•˜๋Š” ์‹œ์ .
  • ์ผ๋‹จ CPU๋ฅผ ์žก์œผ๋ฉด ์ด๋ฒˆ CPU burst๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ CPU๋ฅผ ์„ ์ ๋‹นํ•˜์ง€ ์•Š๋Š”๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด, ๋‹ค ์ˆ˜ํ–‰๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์ค€๋‹ค๋Š” ๋œป์ด๋‹ค.
  • Preemptive
  • ํ˜„์žฌ ์ˆ˜ํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ๋‚จ์€ burst time ๋ณด๋‹ค ๋” ์งง์€ CPU burst time์„ ๊ฐ€์ง€๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๋ฉด CPU๋ฅผ ๋นผ์•—๊ธด๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ SRTF๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด์— ๋Œ€ํ•œ ์˜ˆ์‹œ๋Š” ์•„๋ž˜์—์„œ ๋”ฐ๋กœ ๋‹ค๋ฃฌ๋‹ค.

SJF is optimal

์™œ? ์ฃผ์–ด์ง„ ํ”„๋กœ์„ธ์Šค๋“ค์— ๋Œ€ํ•ด minimum average waiting time์„ ๋ณด์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๋” ์งง๊ฒŒ ์Šค์ผ€์ค„๋งํ•  ์ˆ˜๋Š” ์—†๋‹ค.

5-3. SRTF (Shortest-Remaining-Time-First)

์—ฌ๊ธฐ์„œ ๋ฌธ์ œ์ ์€ CPU๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ์— ๋“ค์–ด์˜ค๋Š” ์‹œ์ ์— CPU burst time์„ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์—†๋‹ค๋Š” ์ ์ด๋‹ค. ํ”„๋กœ๊ทธ๋žจ์€ ๋ณต์žกํ•˜๊ณ  ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๊ณผ๊ฑฐ๋ฅผ ๋ณด๊ณ  ์˜ˆ์ธกํ•œ๋‹ค.

Q. ๊ทธ๋Ÿฌ๋‹ค๋ฉด ๋‹ค์Œ๋ฒˆ CPU burst time์„ ์–ด๋–ป๊ฒŒ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ์„๊นŒ?

A. (์šด์˜์ฒด์ œ์—์„œ ๋”ฑ ํ•œ ๋ฒˆ ๋‚˜์˜ค๋Š” ์ˆ˜์‹)

์ ํ™”์‹์„ ํ’€๋ฉด,

α์™€ 1-α ๊ฐ€ ๋‘˜ ๋‹ค 1 ์ดํ•˜์ด๋ฏ€๋กœ ํ›„์† term์€ ์„ ํ–‰ term๋ณด๋‹ค ์ ์€ ๊ฐ€์ค‘์น˜์˜ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ ์ตœ๊ทผ(์ง์ „)์˜ ๊ฐ’์„ ๋” ๋งŽ์ด ๋ฐ˜์˜ํ•˜๊ณ  ์žˆ๋‹ค.

5-4. Priority Scheduling

  • highest priority ๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ CPU๋ฅผ ํ• ๋‹นํ•œ๋‹ค.
  • ๊ฐ€์žฅ ์ž‘์€ ์ •์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„์ด๋‹ค.
  • preempitive์™€ nonpreemptive๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.
  • SJF๋Š” ์ผ์ข…์˜ priority scheduling์ด๋‹ค. predicted next cpu burst time์„ ์šฐ์„  ์ˆœ์œ„๋กœ ๊ฐ–๋Š”๋‹ค.
  • ๊ทธ๋Ÿฐ๋ฐ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋Š”, Starvation - low priority processes may never execute ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์€ Aging - as time progresses increase the priority of the process

5-5. RR (Round Robin)

  • ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ๋™์ผํ•œ ํฌ๊ธฐ์˜ ํ• ๋‹น ์‹œ๊ฐ„(time quantum)์„ ๊ฐ€์ง„๋‹ค. (์ผ๋ฐ˜์ ์œผ๋กœ 10~100 ms)
  • ํ• ๋‹น ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ํ”„๋กœ์„ธ์Šค๋Š” ์„ ์ (preempted-cpu๋ฅผ ๋นผ์•—๊น€)๋‹นํ•˜๊ณ  ready queue์˜ ์ œ์ผ ๋’ค์— ๊ฐ€์„œ ๋‹ค์‹œ ์ค„์„ ์„ ๋‹ค.
  • n๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ready queue์— ์žˆ๊ณ  ํ• ๋‹น ์‹œ๊ฐ„์ด q time unit์ธ ๊ฒฝ์šฐ ๊ฐ ํ”„๋กœ์„ธ์Šค๋Š” ์ตœ๋Œ€ q time unit ๋‹จ์œ„๋กœ CPU ์‹œ๊ฐ„์˜ 1/n์„ ์–ป๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๋„ (n-1)q time unit ์ด์ƒ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์Œ์„ ๋ณด์žฅํ•œ๋‹ค.
  • q (ํ• ๋‹น ์‹œ๊ฐ„)์ด ๊ธธ์–ด์ง€๋ฉด ๊ทธ๋ƒฅ FIFO๊ฐ€ ๋˜๊ณ , ๋ฐ˜๋Œ€๋กœ ์งง์•„์ง€๋ฉด ๋นˆ๋ฒˆํ•œ ๋ฌธ๋งฅ ๊ตํ™˜์œผ๋กœ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ปค์ง„๋‹ค.
  •  
  • ์ผ๋ฐ˜์ ์œผ๋กœ SJF๋ณด๋‹ค average turnaround time(์ด ์†Œ์š” ์‹œ๊ฐ„)์€ ๊ธธ์ง€๋งŒ response time(์ฒซ ์‘๋‹ต ์‹œ๊ฐ„)๋Š” ๋” ์งง๋‹ค.

heterogeneousํ•  ๋•Œ, ์ฆ‰ long job๊ณผ short job์ด ์„ž์—ฌ์žˆ์„ ๋•Œ RR์ด ์ง„๊ฐ€๋ฅผ ๋ฐœํœ˜ํ•œ๋‹ค.

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

5-6. Multilevel Queue

CPU๋Š” 1๊ฐœ์ธ๋ฐ ์ค„(ํ)์„ ์—ฌ๋Ÿฌ ์ค„๋กœ ์„œ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

  • ready queue๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋ถ„ํ• 
    • foreground (interactive)
    • background (batch - no human interaction)
  • ๊ฐ ํ๋Š” ๋…๋ฆฝ์ ์ธ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐ€์ง„๋‹ค.
    • foreground - RR. interactiveํ•˜๋‹ˆ๊นŒ ์‘๋‹ต ์‹œ๊ฐ„์ด ๋น ๋ฅธ ๊ฒŒ ์ข‹์Œ.
    • background - FCFS. long job์ด ๋งŽ์•„์„œ context switch ์—†์ด ์ญ‰ ์‹คํ–‰ํ•˜๋Š” ๊ฒŒ ์ข‹์Œ.
  • ํ์— ๋Œ€ํ•œ ์Šค์ผ€์ค„๋ง์ด ํ•„์š”ํ•˜๋‹ค.
    • ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€, Fixed priority scheduling
      • serve all from foreground then from background fore ํ›„์— back์„ ์„œ๋น„์Šคํ•˜๋„๋ก ๊ณ ์ •
      • Possibility of starvation
    • ๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€, Time slice
      • ๊ฐ ํ์— cpu time์„ ์ ์ ˆํ•œ ๋น„์œจ๋กœ ํ• ๋‹น
      • ์˜ˆ๋ฅผ ๋“ค์–ด, ํ˜„์žฌ cpu time์— foreground์—๋Š” 80%๋ฅผ ํ• ๋‹นํ•˜๊ณ  background์—๋Š” 20% ํ• ๋‹นํ•œ๋‹ค.
  •  
    ์‹ ๋ถ„์˜ ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค. ํ•œ ๋ฒˆ ์ •ํ•ด์ง„ ์‹ ๋ถ„(ํ)๋กœ ํ‰์ƒ์„ ์‚ด๊ฒŒ ๋œ๋‹ค.

5-7. Multilevel Feedback Queue

  • ์œ„(multilevel queue)์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • aging์„ ์ด์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Multilevel-feedback-queue scheduler๋ฅผ ์ •์˜ํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
    • Queue์˜ ์ˆ˜
    • ๊ฐ ํ์˜ scheduling algorithm
    • Process๋ฅผ ์ƒ์œ„ ํ๋กœ ๋ณด๋‚ด๋Š” ๊ธฐ์ค€ (์Šน๊ฒฉ)
    • Process๋ฅผ ํ•˜์œ„ ํ๋กœ ๋‚ด์ซ“๋Š” ๊ธฐ์ค€ (๊ฐ•๋“ฑ)
    • ํ”„๋กœ์„ธ์Šค๊ฐ€ cpu ์„œ๋น„์Šค๋ฅผ ๋ฐ›์œผ๋ ค ํ•  ๋•Œ ๋“ค์–ด๊ฐˆ ํ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ธฐ์ค€
  • Multilevel Feedback Queue๋ฅผ ๊ตฌํ˜„ํ•œ ํ•œ ์˜ˆ์‹œ์•„๋ž˜๋กœ ๊ฐˆ์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์•„์ง„๋‹ค.๋™์ผํ•˜๊ฒŒ 16ms์„ ๋” ์ผ๋Š”๋ฐ ๋‚จ์œผ๋ฉด ์•„๋ž˜๋กœ ๋„˜์–ด๊ฐ€๊ณ  8+16ms์— ๋๋‚ด์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ ๊ทธ ์•„๋ž˜์˜ ํ๋กœ ์ซ“๊ฒจ๋‚˜์„œ FCFS ์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.
  • ๋จผ์ € ๋ˆ„๊ตฌ๋“  new job์€ ๋งจ ์œ— ์ค„(queue)์— ์„œ๋Š”๋ฐ cpu ํ• ๋‹น ์‹œ๊ฐ„์ด 8ms์ด๋‹ค. 8ms ๋™์•ˆ์— ๋‹ค ์“ฐ๊ณ  ๋‚˜๊ฐ€๋ฉด ๊ทธ๋ƒฅ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋‚˜๊ฐ€๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๊ณ  8ms ์„ ์“ฐ๊ณ  ๋‚จ์€ ๊ฒฝ์šฐ, ์•„๋ž˜์˜ ํ๋กœ ๋‚ด๋ ค๊ฐ„๋‹ค.
  •  

5-8. ์ด ์™ธ์˜ ์Šค์ผ€์ค„๋ง

์œ„์—์„œ ์‚ดํŽด๋ณธ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ•œ์ •๋œ ์ž์›(1๊ฐœ์˜ cpu)์—์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์Šค์ผ€์ค„๋ง ํ• ์ง€์— ๊ด€ํ•œ ๋‚ด์šฉ์ด์—ˆ๋‹ค. ์•„๋ž˜๋Š” ์ด์™€๋Š” ์ข€ ๋‹ค๋ฅธ ๋‚ด์šฉ์ด๋ฏ€๋กœ ์ด๋ ‡๊ฒŒ ํ—ค๋”๋ฅผ ์žก์•„๋ณด์•˜๋‹ค.

Multiple-Processor Scheduling

CPU๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ๋ฅผ ๋œปํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ, ์Šค์ผ€์ค„๋ง์€ ๋”์šฑ ๋ณต์žกํ•ด์ง„๋‹ค. ํ™”์žฅ์‹ค์— ์นธ์ด 1๊ฐœ๊ฐ€ ์•„๋‹Œ ์—ฌ๋Ÿฌ ๊ฐœ, ์€ํ–‰์— ์ฐฝ๊ตฌ๊ฐ€ 1๊ฐœ๊ฐ€ ์•„๋‹Œ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒƒ์œผ๋กœ ํ™•์žฅ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ cpu๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ๋Š” ์˜ˆ์™ธ์ ์ธ ์ƒํ™ฉ์ด๋‹ค. ์ผ๋ฐ˜์ ์ธ ์ปดํ“จํ„ฐ์—๋Š” cpu๊ฐ€ 1๊ฐœ ๋“ค์–ด๊ฐ€๋‹ˆ๊นŒ.

  • Homogeneous processor์ธ ๊ฒฝ์šฐ
    • Queue์— ํ•œ ์ค„๋กœ ์„ธ์›Œ์„œ ๊ฐ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์•Œ์•„์„œ ๊บผ๋‚ด๊ฐ€๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋ฐ˜๋“œ์‹œ ํŠน์„ฑ ํ”„๋กœ์„ธ์„œ์—์„œ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฌธ์ œ๊ฐ€ ๋” ๋ณต์žกํ•ด์ง„๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค๋ฉด, ๋ฏธ์šฉ์‹ค์—์„œ ๋ฏธ์šฉ์‚ฌ ์—ฌ๋Ÿฌ ๋ช…์ธ๋ฐ ์ž๋ฆฌ๊ฐ€ ๋น„์—ˆ๋‹ค๊ณ  ๋ฐ”๋กœ ๊ฐ€์ง€ ์•Š๊ณ  ์›ํ•˜๋Š” ๋””์ž์ด๋„ˆ๊ป˜ ๋ฐ›๊ธฐ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด ์ˆ˜ ์žˆ๋‹ค.
  • Long sharing
    • ์ผ๋ถ€ ํ”„๋กœ์„ธ์„œ์— job์ด ๋ชฐ๋ฆฌ์ง€ ์•Š๋„๋ก ๋ถ€ํ•˜๋ฅผ ์ ์ ˆํžˆ ๊ณต์œ ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ํ•„์š”ํ•˜๋‹ค.
    • ๋ณ„๊ฐœ์˜ ํ๋ฅผ ๋‘๋Š” ๋ฐฉ๋ฒ• vs ๊ณต๋™ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
    • ํ™”์žฅ์‹ค์—์„œ ๊ฐ ์นธ ๋ณ„๋กœ ์ค„์„ ์„ค ๊ฒƒ์ธ์ง€ ํ•œ ์ค„ ์„œ๊ธฐ๋ฅผ ํ•  ๊ฒƒ์ธ์ง€ ๋กœ ๋น„์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Symmetric Multiprocessing (SMP)
    • ๊ฐ ํ”„๋กœ์„ธ์„œ๊ฐ€ ๊ฐ์ž ์•Œ์•„์„œ ์Šค์ผ€์ค„๋ง์„ ๊ฒฐ์ •ํ•œ๋‹ค.
    • ๋ชจ๋“  ํ”„๋กœ์„ธ์„œ๊ฐ€ ๋Œ€๋“ฑํ•œ ๊ด€๊ณ„์— ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
  • Asymmetirc multiprocessing
    • ์œ„์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์„œ๊ฐ€ ์‹œ์Šคํ…œ ๋ฐ์ดํ„ฐ์˜ ์ ‘๊ทผ๊ณผ ๊ณต์œ ๋ฅผ ์ฑ…์ž„์ง€๊ณ  ๋‚˜๋จธ์ง€ ํ”„๋กœ์„ธ์„œ๋Š” ๊ฑฐ๊ธฐ์— ๋”ฐ๋ฅด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
    • ํ•œ ๋งˆ๋””๋กœ, cpu ์ค‘์—์„œ๋„ ๋Œ€์žฅ cpu๊ฐ€ ์žˆ๊ณ  ๊ทธ์˜ ๋ช…๋ น์„ ๋”ฐ๋ฅด๋Š” ๋ฐฉ์‹์ด๋‹ค.

5-9. Real-Time Scheduling

real time ์ด๋ž€ dead line์ด ์žˆ์–ด์„œ ์ฃผ์–ด์ง„ ์‹œ๊ฐ„ ๋‚ด์— ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

  • Hard real-time systems
    • hard real-time task๋Š” ์ •ํ•ด์ง„ ์‹œ๊ฐ„ ์•ˆ์— ๋ฐ˜๋“œ์‹œ ๋๋‚ด๋„๋ก ์Šค์ผ€์ค„๋งํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ
    • ๊ทธ๋ž˜์„œ ์˜คํ”„๋ผ์ธ์ด๋‹ค. ์ฆ‰ ํ”„๋กœ์„ธ์Šค ๋„์ฐฉ ์‹œ๊ฐ„์„ ๋ฏธ๋ฆฌ ์•Œ๊ณ  ์Šค์ผ€์ค„๋ง ํ•œ๋‹ค.
  • Soft real-time computing
    • soft real-time task๋Š” ์ผ๋ฐ˜ ํ”„๋กœ์„ธ์Šค์— ๋น„ํ•ด ๋†’์€ priority๋ฅผ ๊ฐ–๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.
    • ์˜ˆ์‹œ๋กœ ๋™์˜์ƒ ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์ƒ๊ฐํ•ด๋ณด๋ฉด, ์ดˆ๋‹น 24 frame์„ ๋ฐ˜๋“œ์‹œ decodingํ•ด์„œ ๋‚ด๋ณด๋‚ด์ค˜์•ผํ•œ๋‹ค. ๋ฐ๋“œ๋ผ์ธ์„ ์ง€ํ‚ค์ง€ ๋ชปํ•˜๋ฉด ๋™์˜์ƒ์ด ๋Š๊ธด๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์ธ ์ปดํ“จํ„ฐ๋Š” real-time ์Šค์ผ€์ค„๋ง์„ ์“ฐ์ง€ ์•Š๋Š”๋ฐ (๋น„์‹ธ๊ณ  ์–ด๋ ค์›€), ๋™์˜์ƒ ์ฒ˜๋ฆฌ๋ฅผ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’๊ฒŒ ๋‘์–ด ์ฒ˜๋ฆฌํ•œ๋‹ค.

5-10.Thread Scheduling

  • Local Scheduling
    • User level thread์˜ ๊ฒฝ์šฐ, OS๊ฐ€ ์Šค๋ ˆ๋“œ์˜ ์กด์žฌ๋ฅผ ๋ชจ๋ฅด๊ธฐ์—, ์‚ฌ์šฉ์ž ์ˆ˜์ค€์˜ thread library์— ์˜ํ•ด ์–ด๋–ค thread๋ฅผ ์Šค์ผ€์ค„ํ• ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. ์ฆ‰ ํ”„๋กœ์„ธ์Šค ๋‚ด๋ถ€์—์„œ ์–ด๋Š thread์— cpu๋ฅผ ์ค„์ง€ ๊ฒฐ์ •ํ•œ๋‹ค.
  • Global Scheduling
    • Kernal level thread์˜ ๊ฒฝ์šฐ, OS๊ฐ€ ์Šค๋ ˆ๋“œ์˜ ์กด์žฌ๋ฅผ ์•Œ๊ธฐ์—, ์ผ๋ฐ˜ ํ”„๋กœ์„ธ์Šค์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ปค๋„์˜ ๋‹จ๊ธฐ ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์–ด๋–ค thread๋ฅผ ์Šค์ผ€์ค„ํ• ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค. ์ฆ‰ OS๊ฐ€ ์ง์ ‘ ๊ฒฐ์ •ํ•œ๋‹ค.

6. Algorithm Evaluation

Q. ์–ด๋–ค CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ข‹์€๊ฑด์ง€ ์–ด๋–ป๊ฒŒ ์ธก์ •ํ• ๊นŒ?

A. ์•„๋ž˜ 3๊ฐœ์˜ ๋ฐฉ๋ฒ•์ด ์žˆ์–ด.

  • Queueing models
    • ํ™•๋ฅ  ๋ถ„ํฌ๋กœ ์ฃผ์–ด์ง€๋Š” arrival rae์™€ service rate ๋“ฑ์„ ํ†ตํ•ด ๊ฐ์ข… performance index ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. 1960๋…„ ๋Œ€์— ์“ฐ๋˜ ์ด๋ก ์  ๋ฐฉ๋ฒ•์ด๋‹ค.
  • Implementation(๊ตฌํ˜„) & Measurement(์„ฑ๋Šฅ ์ธก์ •)
    • ์‹ค์ œ ์‹œ์Šคํ…œ์— ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„! ํ•˜์—ฌ ์‹ค์ œ ์ž‘์—…์— ๋Œ€ํ•ด์„œ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•˜์—ฌ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋„ˆ๋ฌด ์–ด๋ ค์šด ๋ฐฉ๋ฒ•์ด๋‹ค.
  • Simulation(๋ชจ์˜ ์‹คํ—˜)
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ชจ์˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์ž‘์„ฑ ํ›„ trace (input์ด ๋˜๋Š” ์ž‘์—…๋“ค)๋ฅผ ์ž…๋ ฅ์œผ๋กœ ํ•˜์—ฌ ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•ด๋ณธ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ trace๊ฐ€ ์‹ ๋น™์„ฑ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

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

8์žฅ Memory Management  (0) 2021.06.19
7์žฅ Deadlock  (0) 2021.06.19
6์žฅ Process Synchronization  (0) 2021.06.19
4์žฅ Process Management  (0) 2021.06.18
3์žฅ Process  (0) 2021.06.18
2์žฅ System Structure & Program Execution  (0) 2021.06.18