CS/์šด์˜์ฒด์ œ

[์šด์˜์ฒด์ œ] ch05. CPU Scheduling

rngPwns 2025. 4. 21. 08:57

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

์ „์ฒด ๊ฐœ์š”

CPU burst time์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์‹œ๊ฐ„์„ ์˜๋ฏธํ•จ.
์ด ๋ถ„ํฌ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์งง์€ burst time์„ ๊ฐ–๊ณ , ์ผ๋ถ€๋งŒ์ด ๋งค์šฐ ๊ธด burst time์„ ๊ฐ–๋Š”๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Œ.


๊ทธ๋ž˜ํ”„ ํ•ด์„

  • x์ถ•: CPU ์‚ฌ์šฉ ์‹œ๊ฐ„ (burst duration, ๋‹จ์œ„: milliseconds)
  • y์ถ•: ํ•ด๋‹น ์‹œ๊ฐ„์˜ ์‚ฌ์šฉ ๋นˆ๋„ (frequency)

โ— I/O bound job

  • ๋งค์šฐ ์งง์€ CPU ์‚ฌ์šฉ ํ›„ I/O ์š”์ฒญ
  • ์งง์€ burst time์„ ์ž์ฃผ ๋ฐ˜๋ณต (๊ทธ๋ž˜ํ”„ ์™ผ์ชฝ์˜ ๋พฐ์กฑํ•œ ๊ณ ๋ด‰)
  • โœ๏ธ ํ•„๊ธฐ: โ€œํ”ํ•œ ์œ ํ˜• (์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ), ์ฆ‰์‹œ ์‘๋‹ต ์š”๋งโ€

โ— CPU bound job

  • ์—ฐ์‚ฐ๋Ÿ‰์ด ๋งŽ์•„ ํ•œ ๋ฒˆ์— CPU๋ฅผ ์˜ค๋ž˜ ์ ์œ 
  • ๊ธด burst time (๊ทธ๋ž˜ํ”„ ์˜ค๋ฅธ์ชฝ์˜ ๋‚ฎ๊ณ  ๊ธด tail)
  • โœ๏ธ ํ•„๊ธฐ: โ€œ์‹ ๊ฒฝ๋ง ํ•™์Šต ๋“ฑ ๊ธด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ํ•„์š”โ€

โœ… ์•”๊ธฐ ํฌ์ธํŠธ

  • ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์„ธ์Šค๋Š” burst time์ด ์งง๋‹ค (I/O bound)
  • ์ผ๋ถ€๋งŒ์ด burst time์ด ๊ธธ๋‹ค (CPU bound)
  • ๊ทธ๋ž˜ํ”„๋Š” hyperexponential ๋ถ„ํฌ๋ฅผ ๋”ฐ๋ฅธ๋‹ค
  • ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์งง์€ burst์— ๋น ๋ฅด๊ฒŒ ๋ฐ˜์‘ํ•˜๊ณ , ๊ธด burst๋„ ๊ณต์ •ํ•˜๊ฒŒ ๋ฐฐ๋ถ„ํ•ด์•ผ ํ•œ๋‹ค
  • Interactive job์— ๋น ๋ฅธ response ์ œ๊ณต์ด ํ•ต์‹ฌ
  • CPU์™€ I/O ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ๋ถ„๋ฐฐํ•ด์•ผ ํ•œ๋‹ค

โœ๏ธ ํ•˜๋‹จ ํ•„๊ธฐ ์š”์•ฝ

  • "์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ job์ด ์„ž์—ฌ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์Šค์ผ€์ค„๋ง์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•จ"
  • "โ†’ Interactive job์€ ์‘๋‹ต์†๋„ ์ค‘์š”"
  • "โ†’ CPU bound๋Š” ์ž์› ์ ์œ ์‹œ๊ฐ„ ๊ธธ์ง€๋งŒ ํšจ์œจ ๊ณ ๋ ค ํ•„์š”"

์ด ์Šฌ๋ผ์ด๋“œ๋Š” CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋™๊ธฐ๋ถ€์—ฌ ์Šฌ๋ผ์ด๋“œ์•ผ.
์™œ SJF ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด burst time ์˜ˆ์ธก ๊ธฐ๋ฐ˜์œผ๋กœ ์›€์ง์ด๋Š”์ง€, ์™œ preemption์ด ์ค‘์š”ํ•œ์ง€ ์ดํ•ดํ•˜๋Š” ๊ธฐ๋ฐ˜์ด ๋ผ!
 
 
 
 

๐Ÿ“„ CPU and I/O Bursts in Program Execution

์ „์ฒด ์š”์•ฝ

ํ”„๋กœ์„ธ์Šค๋Š” CPU ์ž‘์—…(CPU burst)๊ณผ ์ž…์ถœ๋ ฅ ์ž‘์—…(I/O burst)์„ ๋ฒˆ๊ฐˆ์•„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ์‹คํ–‰๋œ๋‹ค.
์ด ํ๋ฆ„์„ ์šด์˜์ฒด์ œ๊ฐ€ ์Šค์ผ€์ค„๋ง์„ ํ†ตํ•ด ๊ด€๋ฆฌํ•ด์•ผ ํ•จ.


๊ทธ๋ฆผ ๊ตฌ์กฐ ํ•ด์„ค

  • CPU burst: ๊ณ„์‚ฐ, ๋ฉ”๋ชจ๋ฆฌ ์—ฐ์‚ฐ, ๋ณ€์ˆ˜ ์กฐ์ž‘ ๋“ฑ โ†’ CPU๊ฐ€ ์ฒ˜๋ฆฌ
  • I/O burst: ๋””์Šคํฌ, ํŒŒ์ผ ๋“ฑ ์ž…์ถœ๋ ฅ โ†’ I/O ์žฅ์น˜๊ฐ€ ์ฒ˜๋ฆฌ

์ˆœ์„œ ์˜ˆ์‹œ

โ†’ CPU burst
โ†’ I/O burst (blocked)
โ†’ CPU burst
โ†’ I/O burst
โ†’ CPU burst
โ†’ I/O burst ...
 
  • ๊ฐ I/O burst ๋™์•ˆ์—๋Š” CPU๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ ๊ฐ€๋Šฅ
  • โœ๏ธ ํ•„๊ธฐ: โ€œprocess๋Š” CPU burst โ†” I/O burst ์™”๋‹ค๊ฐ”๋‹ค ๋ฐ˜๋ณตํ•˜๋ฉฐ ์‹คํ–‰๋œ๋‹คโ€

์ƒํƒœ ์ „์ด ํ๋ฆ„

  1. running โ†’ blocked: I/O ์š”์ฒญ ์‹œ
  2. blocked โ†’ ready: I/O ์™„๋ฃŒ ์‹œ (์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ)
  3. ready โ†’ running: CPU ํ• ๋‹น๋˜๋ฉด ๋‹ค์‹œ ์‹คํ–‰
  • โœ๏ธ ํ•„๊ธฐ:
    • โ€œrunning โ†’ blocked (I/O ์š”์ฒญ ์‹œ)โ€
    • โ€œblocked โ†’ ready โ†’ running (I/O ์™„๋ฃŒ ํ›„ ์Šค์ผ€์ค„๋Ÿฌ ํ• ๋‹น ์‹œ)โ€

โœ… ์•”๊ธฐ ํฌ์ธํŠธ

  • ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” CPU burst์™€ I/O burst๊ฐ€ ๋ฐ˜๋ณต๋˜๋Š” ๊ตฌ์กฐ๋กœ ์‹คํ–‰๋œ๋‹ค
  • CPU burst๋Š” ์—ฐ์‚ฐ/์ œ์–ด, I/O burst๋Š” ์žฅ์น˜ ๋Œ€๊ธฐ/์ „์†ก
  • I/O burst ๋™์•ˆ ํ”„๋กœ์„ธ์Šค๋Š” blocked ์ƒํƒœ๋กœ ๋น ์ง€๊ณ , CPU๋Š” ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰
  • ์ด ํ๋ฆ„์„ ์šด์˜์ฒด์ œ๊ฐ€ ํšจ์œจ์ ์œผ๋กœ ์Šค์ผ€์ค„๋งํ•ด์•ผ ์‹œ์Šคํ…œ ์ž์›์„ ๋‚ญ๋น„ํ•˜์ง€ ์•Š์Œ
  • I/O๋Š” ์†๋„๊ฐ€ ๋А๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์— ์ ์ ˆํ•œ CPU-I/O ๋ณ‘ํ–‰ ์‹คํ–‰์ด ์ค‘์š”

โœ๏ธ ํ•„๊ธฐ ์š”์•ฝ ์ •๋ฆฌ

  • โ€œhard disk ์ ‘๊ทผ ๋งค์šฐ ๋А๋ฆผโ€
  • โ€œI/O๋Š” blocking operation โ†’ ๋ฐ”์œ I/O ์ž‘์—… ์ค‘์—๋Š” CPU ๋ชป ์”€โ€
  • โ€œblocked โ†’ ready ์ „์ด ํ›„, ๋‹ค์‹œ running ์ง„์ž…โ€
  • โ€œ์ „์ฒด ์ˆ˜ํ–‰ ์‹œ๊ฐ„ ์ค‘ I/O๊ฐ€ ๋งŽ์œผ๋ฉด ํšจ์œจ ๋–จ์–ด์ง โ†’ ์Šค์ผ€์ค„๋ง ํ•„์š”โ€

์ด ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•˜๋ฉด ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ค๊ณ„ ์ด์œ ,
์˜ˆ: Multilevel Feedback Queue๊ฐ€ ์™œ I/O bound์— ์œ ๋ฆฌํ•œ์ง€๊นŒ์ง€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์–ด!
 
 

๐Ÿ“„ FCFS (First-Come First-Served)

์ „์ฒด ์š”์•ฝ

FCFS๋Š” ๋จผ์ € ๋„์ฐฉํ•œ ํ”„๋กœ์„ธ์Šค๋ถ€ํ„ฐ ์‹คํ–‰ํ•˜๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์œผ๋กœ, ๋„์ฐฉ ์ˆœ์„œ๊ฐ€ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.


์˜ˆ์ œ ๊ตฌ์„ฑ

ProcessBurst Time
Pโ‚ 24
Pโ‚‚ 3
Pโ‚ƒ 3
  • ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ๋„์ฐฉํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •

์‹คํ–‰ ์ˆœ์„œ ๋ฐ Gantt Chart

  • ๋„์ฐฉ ์ˆœ์„œ๋Œ€๋กœ: Pโ‚ โ†’ Pโ‚‚ โ†’ Pโ‚ƒ
  • ์‹คํ–‰ ํ๋ฆ„ (์‹œ๊ฐ„ ๋‹จ์œ„):
 
|-------Pโ‚-------|--Pโ‚‚--|--Pโ‚ƒ--| 0 24 27 30

Waiting Time (๋Œ€๊ธฐ ์‹œ๊ฐ„)

  • Pโ‚: 0 (๋„์ฐฉํ•˜์ž๋งˆ์ž ์‹คํ–‰)
  • Pโ‚‚: 24 (Pโ‚ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆผ)
  • Pโ‚ƒ: 27 (Pโ‚ + Pโ‚‚ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆผ)

โ†’ ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„:
0+24+273=17\frac{0 + 24 + 27}{3} = \boxed{17}30+24+27=17


โœ… ์•”๊ธฐ ํฌ์ธํŠธ

  • FCFS๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋„์ฐฉ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•จ
  • ํ•œ ๋ฒˆ ์‹คํ–‰์ด ์‹œ์ž‘๋˜๋ฉด ์ค‘๊ฐ„์— ์ค‘๋‹จ๋˜์ง€ ์•Š์Œ (Non-preemptive)
  • burst time์ด ๊ธด ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋จผ์ € ์˜ค๋ฉด โ†’ ์ „์ฒด ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„ ์ฆ๊ฐ€ (convoy effect)
  • ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋น„ํšจ์œจ์ ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค

โœ๏ธ ํ•„๊ธฐ ์š”์•ฝ

  • โ€œready queue ์ˆœ์„œ: Pโ‚ โ†’ Pโ‚‚ โ†’ Pโ‚ƒโ€
  • โ€œPโ‚‚, Pโ‚ƒ๋Š” ์‹คํ–‰ ๋ชป ํ•˜๊ณ  ๊ธฐ๋‹ค๋ฆผโ€ โ†’ CPU ๋‚ญ๋น„๋Š” ์—†์ง€๋งŒ, ๋Œ€๊ธฐ ์‹œ๊ฐ„ ํผ
  • โ€œ์˜ˆ์ •๋œ ์‹คํ–‰ ์‹œ๊ฐ„โ€์ด๋ผ๋Š” ํ‘œํ˜„์œผ๋กœ burst time์„ ์ดํ•ดํ•จ

์ด ์Šฌ๋ผ์ด๋“œ๋Š” FCFS์˜ ๋‹จ์ˆœ์„ฑ๊ณผ ๋‹จ์ (๊ธด ์ž‘์—…์ด ์•ž์— ์žˆ์œผ๋ฉด ์ „์ฒด ์ง€์—ฐ)์„ ํ•จ๊ป˜ ๋ณด์—ฌ์ฃผ๋Š” ๋Œ€ํ‘œ ์˜ˆ์ œ์•ผ.
์ดํ›„ SJF, RR, Priority ์Šค์ผ€์ค„๋ง๊ณผ ๋น„๊ตํ•  ๋•Œ ๊ธฐ๋ณธ์ด ๋˜๋‹ˆ ๊ผญ ๊ธฐ์–ตํ•ด๋‘ฌ์•ผ ํ•ด!
 
 
 

๐Ÿ“„ Example of Non-Preemptive SJF 

์ด ์Šฌ๋ผ์ด๋“œ๋Š” SJF (Shortest Job First) - Non-Preemptive ๋ฐฉ์‹์˜ ์Šค์ผ€์ค„๋ง ์˜ˆ์ œ๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์–ด.
**๋„์ฐฉ ์‹œ๊ฐ„(Arrival Time)**๊ณผ **์‹คํ–‰ ์‹œ๊ฐ„(Burst Time)**์ด ์ฃผ์–ด์กŒ์„ ๋•Œ,
Non-Preemptive SJF๊ฐ€ ์–ด๋–ป๊ฒŒ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š”์ง€, **๊ฐ„ํŠธ ์ฐจํŠธ(Gantt Chart)**์™€ ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„๊นŒ์ง€ ๊ณ„์‚ฐํ•ด๋†“์€ ์•„์ฃผ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ œ์•ผ.
๊ทธ๋ฆผ์— ํฌํ•จ๋œ ๋ฉ”๋ชจ๊นŒ์ง€ ๋ฐ˜์˜ํ•ด์„œ ์ „์ฒด์ ์œผ๋กœ ์ •๋ฆฌํ•ด์ค„๊ฒŒ!


๐Ÿ“„ Example of Non-Preemptive SJF (Shortest Job First)


ํ”„๋กœ์„ธ์Šค ์ •๋ณด

ProcessArrival TimeBurst Time
Pโ‚ 0.0 7
Pโ‚‚ 2.0 4
Pโ‚ƒ 4.0 1
Pโ‚„ 5.0 4

์Šค์ผ€์ค„๋ง ๊ทœ์น™ (Non-Preemptive SJF)

Non-Preemptive SJF๋Š” ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ CPU๋ฅผ ์ ์œ ํ•˜๋ฉด ๋๋‚  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋กœ ๋ฐ”๊พธ์ง€ ์•Š์Œ.
๋‹จ, ๋‹ค์Œ์— ๋ˆ„๊ตฌ๋ฅผ ์‹คํ–‰ํ• ์ง€๋Š” ๋„์ฐฉํ•œ ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ burst time์ด ๊ฐ€์žฅ ์งง์€ ๊ฒƒ์„ ๊ณ ๋ฆ„.


์‹คํ–‰ ์ˆœ์„œ ๋ถ„์„

  1. ์‹œ๊ฐ„ 0: Pโ‚๋งŒ ๋„์ฐฉํ–ˆ์œผ๋ฏ€๋กœ โ†’ Pโ‚ ์‹คํ–‰ ์‹œ์ž‘
  2. ์‹œ๊ฐ„ 7: Pโ‚ ์ข…๋ฃŒ, ๋„์ฐฉํ•œ Pโ‚‚, Pโ‚ƒ, Pโ‚„ ์ค‘์—์„œ burst time ๊ฐ€์žฅ ์งง์€ Pโ‚ƒ ์„ ํƒ
  3. ์‹œ๊ฐ„ 8: Pโ‚ƒ ์ข…๋ฃŒ โ†’ ๋‚จ์€ Pโ‚‚(4), Pโ‚„(4) ์ค‘ ๋„์ฐฉ ๋น ๋ฅธ Pโ‚‚ ๋จผ์ €
  4. ์‹œ๊ฐ„ 12: Pโ‚‚ ์ข…๋ฃŒ โ†’ Pโ‚„ ์‹คํ–‰
  5. ์‹œ๊ฐ„ 16: Pโ‚„ ์ข…๋ฃŒ

โžก๏ธ Gantt Chart:

less
์ฝ”๋“œ ๋ณต์‚ฌ
|---Pโ‚---|Pโ‚ƒ|----Pโ‚‚----|----Pโ‚„----| 0 7 8 12 16

๋Œ€๊ธฐ ์‹œ๊ฐ„(Waiting Time) ๊ณ„์‚ฐ

  • Pโ‚: 0 (๋„์ฐฉํ•˜์ž๋งˆ์ž ์‹คํ–‰)
  • Pโ‚‚: 8 - 2 = 6
  • Pโ‚ƒ: 7 - 4 = 3
  • Pโ‚„: 12 - 5 = 7

โ†’ ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„:
0+6+3+74=4\frac{0 + 6 + 3 + 7}{4} = \boxed{4}40+6+3+7=4


โœ… ์•”๊ธฐ ํฌ์ธํŠธ ์š”์•ฝ

  • SJF(Non-Preemptive)๋Š” ๋„์ฐฉํ•œ ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ burst time์ด ๊ฐ€์žฅ ์งง์€ ๊ฒƒ๋ถ€ํ„ฐ ์„ ํƒ
  • ํ•œ ๋ฒˆ ์‹คํ–‰๋˜๋ฉด ์ข…๋ฃŒ๊นŒ์ง€ CPU ์ ์œ  (Preemption ์—†์Œ)
  • ๋Œ€๊ธฐ ์‹œ๊ฐ„์€ ์‹œ์ž‘ ์‹œ๊ฐ„ - ๋„์ฐฉ ์‹œ๊ฐ„
  • ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๊ณ„์‚ฐ์€ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ ๋Œ€๊ธฐ ์‹œ๊ฐ„์˜ ํ‰๊ท 

โœ๏ธ ๊ทธ๋ฆผ ํ•„๊ธฐ ๋‚ด์šฉ ์š”์•ฝ

  • โ€œ0์ดˆ์—๋Š” Pโ‚๋งŒ ๋„์ฐฉ โ†’ ๋ฌด์กฐ๊ฑด ์‹คํ–‰๋จโ€
  • โ€œ7์ดˆ๊นŒ์ง€๋Š” Pโ‚์ด ์ ์œ ํ•˜๊ณ  ์žˆ์–ด์„œ ์•„๋ฌด๋„ ๋ชป ์‹คํ–‰๋จโ€
  • โ€œ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๊ณ„์‚ฐ ์ˆœ์„œ ์ ํ˜€ ์žˆ์Œ (0, 6, 3, 7)โ€

์ด ์Šฌ๋ผ์ด๋“œ๋Š” SJF ๊ฐœ๋…์„ ์‹œ๊ฐ์ ์œผ๋กœ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ ์˜ˆ์ œ๋‹ˆ๊นŒ ์‹œํ—˜ ์ „์— ๊ผญ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ณด๊ธธ ์ถ”์ฒœํ•ด!
 

 
์ด ์Šฌ๋ผ์ด๋“œ๋Š” Preemptive SJF (Shortest Job First), ์ฆ‰ SRTF (Shortest Remaining Time First) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ์ œ์•ผ.
ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ด์–ด๋„, ๋” ์งง์€ ์ž‘์—…์ด ๋„์ฐฉํ•˜๋ฉด ์„ ์ (preemption)๋œ๋‹ค๋Š” ํŠน์ง•์ด ํ•ต์‹ฌ์ด๊ณ ,
์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๋Š” ์ด๋ก ์ƒ ์ตœ์  ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด์•ผ.
์ด๋ฒˆ์—๋„ ์Šฌ๋ผ์ด๋“œ์˜ ํ‘œ, Gantt ์ฐจํŠธ, ํ•„๊ธฐ๊นŒ์ง€ ์ „๋ถ€ ๋ฐ˜์˜ํ•ด์„œ ์ •๋ฆฌํ•ด์ค„๊ฒŒ!


๐Ÿ“„ Example of Preemptive SJF (SRTF)


ํ”„๋กœ์„ธ์Šค ์ •๋ณด

ProcessArrival TimeBurst Time
Pโ‚ 0.0 7
Pโ‚‚ 2.0 4
Pโ‚ƒ 4.0 1
Pโ‚„ 5.0 4

์‹คํ–‰ ํ๋ฆ„ ๋ถ„์„ (Preemption ์žˆ์Œ)

  1. 0~2: Pโ‚ ์‹œ์ž‘ (๋‚จ์€ ์‹œ๊ฐ„ 5)
  2. 2~4: Pโ‚‚ ๋„์ฐฉ โ†’ Pโ‚‚(4) vs Pโ‚(5) โ†’ Pโ‚‚ ์‹คํ–‰
  3. 4~5: Pโ‚ƒ ๋„์ฐฉ โ†’ Pโ‚ƒ(1) vs Pโ‚‚(2) โ†’ Pโ‚ƒ ์‹คํ–‰ (Pโ‚‚ ์„ ์ ๋จ)
  4. 5~7: Pโ‚ƒ ์ข…๋ฃŒ โ†’ Pโ‚‚(2) ๋ณต๊ท€
  5. 7~11: Pโ‚„ ๋„์ฐฉ โ†’ Pโ‚‚ ์ข…๋ฃŒ ํ›„ Pโ‚„ ์‹คํ–‰
  6. 11~16: ๋งˆ์ง€๋ง‰์œผ๋กœ Pโ‚ ์žฌ๊ฐœ โ†’ ์ข…๋ฃŒ

Gantt Chart

less
์ฝ”๋“œ ๋ณต์‚ฌ
|--Pโ‚--|--Pโ‚‚--|Pโ‚ƒ|--Pโ‚‚--|----Pโ‚„----|-----Pโ‚-----| 0 2 4 5 7 11 16

Waiting Time ๊ณ„์‚ฐ

ProcessStart - ArrivalTotal Wait
Pโ‚ (์žฌ๊ฐœ ์‹œ์  11 - ๋„์ฐฉ 0 - ์‹ค์ œ ์‹คํ–‰ 2์ดˆ) = 9  
Pโ‚‚ (์žฌ๊ฐœ๊นŒ์ง€ ๋Œ€๊ธฐ: 5~7) = 1  
Pโ‚ƒ ๋ฐ”๋กœ ์‹คํ–‰ โ†’ 0  
Pโ‚„ 7 - 5 = 2  

ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„=9+1+0+24=3\text{ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„} = \frac{9 + 1 + 0 + 2}{4} = \boxed{3}ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„=49+1+0+2=3


โœ… ์•”๊ธฐ ํฌ์ธํŠธ

  • SRTF (Preemptive SJF)๋Š” ๋‚จ์€ ์‹œ๊ฐ„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€์žฅ ์งง์€ ์ž‘์—…์„ ์šฐ์„  ์‹คํ–‰
  • ๊ธฐ์กด์— ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ณด๋‹ค ๋” ์งง์€ job์ด ๋„์ฐฉํ•˜๋ฉด ์„ ์ ๋œ๋‹ค
  • ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Optimal)
  • ๋‹จ์ : ์˜ˆ์ธก ์–ด๋ ค์›€, Starvation ๋ฐœ์ƒ ๊ฐ€๋Šฅ (๊ธด job์ด ๊ณ„์† ๋ฐ€๋ฆผ)

โœ๏ธ ํ•„๊ธฐ ์š”์•ฝ

  • "Pโ‚ƒ๊ฐ€ ๋„์ฐฉํ–ˆ์„ ๋•Œ Pโ‚‚๋ณด๋‹ค burst๊ฐ€ ๋” ์งง์•„์„œ ์„ ์ ๋จ (1 vs 2)"
  • "Pโ‚„ ๋„์ฐฉํ–ˆ์ง€๋งŒ Pโ‚‚๊ฐ€ ๋” ์งง์•„์„œ ๋จผ์ € ์‹คํ–‰"
  • "Non-preemptive๋ณด๋‹ค ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ฐ์†Œํ•จ โ†’ Optimal"

์ด ์Šฌ๋ผ์ด๋“œ๋Š” ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ์ด๋ก ์ ์œผ๋กœ ๊ฐ€์žฅ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์ด์ง€๋งŒ,
์‹ค์ œ๋กœ๋Š” burst time ์˜ˆ์ธก์ด ์–ด๋ ค์›Œ์„œ ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„๋˜๊ธด ํž˜๋“ค์–ด.
 
 
 
 

๐Ÿ“„ Example: RR (Round Robin) with Time Quantum = 20

 

 
์ด ์Šฌ๋ผ์ด๋“œ๋Š” RR (Round Robin) ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์˜ˆ์ œ๋ฅผ ๋ณด์—ฌ์ค˜.
Time Quantum์ด 20์ผ ๋•Œ, ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ CPU๋ฅผ ๋‚˜๋ˆ ์„œ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์‹œ๊ฐ์ ์œผ๋กœ ์„ค๋ช…ํ•˜๊ณ  ์žˆ๊ณ ,
์งง์€ ์ž‘์—… ์‘๋‹ต ์‹œ๊ฐ„(response time)์€ ์ข‹์•„์ง€์ง€๋งŒ, ํ‰๊ท  ์™„๋ฃŒ ์‹œ๊ฐ„์€ ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ํ•ต์‹ฌ์ด์•ผ.
 

ํ”„๋กœ์„ธ์Šค ์ •๋ณด

ProcessBurst Time
Pโ‚ 53
Pโ‚‚ 17
Pโ‚ƒ 68
Pโ‚„ 24
  • Time Quantum = 20
  • ์„ ์ž…์„ ์ถœ(FCFS) ๋ฐฉ์‹์œผ๋กœ ํ์—์„œ ๋Œ์•„๊ฐ€๋ฉฐ ์‹คํ–‰

Gantt Chart ๋ถ„์„

less
์ฝ”๋“œ ๋ณต์‚ฌ
| Pโ‚ | Pโ‚‚ | Pโ‚ƒ | Pโ‚„ | Pโ‚ | Pโ‚ƒ | Pโ‚„ | Pโ‚ | Pโ‚ƒ | Pโ‚ƒ | 0 20 37 57 77 97 117 121 134 154 162

๊ฐ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰ ๋ถ„ํ• :

  • Pโ‚: 20 + 20 + 13 = 53 (์ด 3๋ฒˆ)
  • Pโ‚‚: 17 (1๋ฒˆ์— ๋)
  • Pโ‚ƒ: 20 + 20 + 20 + 8 = 68 (์ด 4๋ฒˆ)
  • Pโ‚„: 20 + 4 = 24 (์ด 2๋ฒˆ)

โœ… ํ•ต์‹ฌ ๊ฐœ๋… ์š”์•ฝ

  • RR์€ ๊ณ ์ •๋œ ์‹œ๊ฐ„(Time Quantum)๋งˆ๋‹ค CPU๋ฅผ ๊ต๋Œ€๋กœ ํ• ๋‹น
  • ์งง์€ ์ž‘์—…์ด ๋จผ์ € ๋๋‚˜์ง€ ์•Š๋”๋ผ๋„ ์ž์ฃผ CPU๋ฅผ ๋ฐ›์œผ๋ฏ€๋กœ ์‘๋‹ต ์‹œ๊ฐ„(response time)์€ ์ข‹์Œ
  • ์ž‘์—…์˜ ๊ธธ์ด์™€ ๊ด€๊ณ„์—†์ด ๊ณต์ •ํ•˜๊ฒŒ ์‹คํ–‰๋˜์ง€๋งŒ,
    ํ‰๊ท  turnaround time์€ SJF๋ณด๋‹ค ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Œ
  • short job๊ณผ long job์ด ์„ž์—ฌ ์žˆ์„ ๋•Œ ํŠนํžˆ ํšจ๊ณผ์ 

โœ๏ธ ์Šฌ๋ผ์ด๋“œ ํ•„๊ธฐ ์š”์•ฝ

  • "์‘๋‹ต ์‹œ๊ฐ„์ด ์งง์•„์ง โ†’ time sharing ํ™˜๊ฒฝ์— ์ ํ•ฉ"
  • "short job, long job ์„ž์—ฌ ์žˆ์„ ๋•Œ ํšจ๊ณผ์ "
  • "๋‹จ, ๋™๋“ฑ job ์•„๋‹ˆ๋ฉด ์˜คํžˆ๋ ค ๋น„ํšจ์œจ ๊ฐ€๋Šฅ"
  • "CPU first ๋ฐ›๋Š” ์‹œ๊ฐ„์ด ๋นจ๋ผ์ง = ๋น ๋ฅธ ๋ฐ˜์‘"

RR ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์„ฑ ์š”์•ฝ

์žฅ์ ๋‹จ์ 
โœ… ์‘๋‹ต ์‹œ๊ฐ„(response time) ์ข‹์Œ โŒ ํ‰๊ท  ์™„๋ฃŒ ์‹œ๊ฐ„ ์ฆ๊ฐ€ ๊ฐ€๋Šฅ
โœ… starvation ์—†์Œ โŒ Context Switching ๋น„์šฉ ์žˆ์Œ
โœ… ๊ณต์ •ํ•œ ํ• ๋‹น (Fairness) โŒ ๋„ˆ๋ฌด ์ž‘์€ Quantum์€ ์˜ค๋ฒ„ํ—ค๋“œ

์ด ์˜ˆ์ œ๋Š” ์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์—์„œ ์™œ RR์ด ์“ฐ์ด๋Š”์ง€๋ฅผ ๋ช…ํ™•ํžˆ ๋ณด์—ฌ์ค˜.
ํŠนํžˆ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์—์„œ๋Š” SJF๋ณด๋‹ค ํ›จ์”ฌ ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ๋ฐ˜์‘์„ฑ์ด ์ข‹์•„!
 
 
 

๐Ÿ“„ Turnaround Time Varies With Time Quantum

์ „์ฒด ๋งฅ๋ฝ

RR (Round Robin) ์Šค์ผ€์ค„๋ง์—์„œ time quantum์˜ ํฌ๊ธฐ๋Š”
์‹œ์Šคํ…œ ๋ฐ˜์‘์„ฑ๊ณผ **ํ‰๊ท  turnaround time(์ž‘์—… ์ข…๋ฃŒ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์ „์ฒด ์‹œ๊ฐ„)**์— ํฐ ์˜ํ–ฅ์„ ์คŒ.


๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ ํ•ด์„

  • x์ถ•: Time Quantum (1~7)
  • y์ถ•: Average Turnaround Time (9.0 ~ 12.5)

๊ด€์ฐฐ ํฌ์ธํŠธ:

  • Time Quantum์ด ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด: context switching์ด ์ž์ฃผ ๋ฐœ์ƒํ•ด ์˜ค๋ฒ„ํ—ค๋“œ ์ฆ๊ฐ€ โ†’ turnaround time ์ฆ๊ฐ€
  • Time Quantum์ด ์ ๋‹นํ•˜๋ฉด: short job ๋น ๋ฅด๊ฒŒ ์ข…๋ฃŒ + long job๋„ ๋ถ„์‚ฐ ์‹คํ–‰ โ†’ turnaround time ์ตœ์†Œํ™”
  • Time Quantum์ด ๋„ˆ๋ฌด ํฌ๋ฉด: FCFS์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๊ฒŒ ๋˜๋ฉฐ short job ์ง€์—ฐ โ†’ turnaround time ์ฆ๊ฐ€

โœ๏ธ ํ•„๊ธฐ:

  • "time quantum ๋ณ€ํ™”์— ๋”ฐ๋ผ turnaround time์ด ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”์ง€ ํ†ต์ฐฐ๋ ฅ ์ฃผ๋Š” ๊ทธ๋ž˜ํ”„"
  • "ํ• ๋‹น ์‹œ๊ฐ„ ์ปค์งˆ์ˆ˜๋ก FCFS์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๊ฒŒ ๋จ"

์˜ค๋ฅธ์ชฝ ํ”„๋กœ์„ธ์Šค ์ •๋ณด

ProcessBurst Time
Pโ‚ 6
Pโ‚‚ 3
Pโ‚ƒ 1
Pโ‚„ 7

โ†’ short job(Pโ‚ƒ), medium(Pโ‚, Pโ‚‚), long job(Pโ‚„)์ด ์„ž์—ฌ ์žˆ์Œ
โ†’ time quantum ํฌ๊ธฐ์— ๋”ฐ๋ผ ํฐ ์ฐจ์ด ๋ฐœ์ƒ ๊ฐ€๋Šฅ


โœ… ์•”๊ธฐ ํฌ์ธํŠธ

  • time quantum์ด ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด โ†’ context switch ๋น„์šฉ โ†‘ โ†’ ๋น„ํšจ์œจ
  • ๋„ˆ๋ฌด ํฌ๋ฉด โ†’ short job์ด ๋Šฆ๊ฒŒ ๋๋‚จ (FCFS์™€ ์œ ์‚ฌ)
  • ์ ์ ˆํ•œ ๊ฐ’ ์„ค์ • ํ•„์š” โ†’ short job์€ ๋น ๋ฅด๊ฒŒ, long job์€ ๊ณต์ •ํ•˜๊ฒŒ

์ „๋žต์  ์š”์•ฝ

Time Quantum์‹œ์Šคํ…œ ๋ฐ˜์‘์„ฑTurnaround TimeํŠน์ง•
์ž‘์„์ˆ˜๋ก ๋†’์Œ ์ฆ๊ฐ€ ๊ฐ€๋Šฅ context switch ๊ณผ๋‹ค, short job ๋น ๋ฆ„
์ ์ ˆํ•  ๋•Œ ๋†’์Œ + ํšจ์œจ์  ์ตœ์†Œํ™” ๊ฐ€์žฅ ์ด์ƒ์  ์„ฑ๋Šฅ
ํด์ˆ˜๋ก ๋‚ฎ์Œ ์ฆ๊ฐ€ ๊ฐ€๋Šฅ FCFS์ฒ˜๋Ÿผ ๋™์ž‘, short job ์ง€์—ฐ

โœ๏ธ ํ•ต์‹ฌ ์ •๋ฆฌ ๋ฉ˜ํŠธ

โ€œRR์˜ ํ•ต์‹ฌ์€ time quantum์ด๋‹ค.
๋„ˆ๋ฌด ์ž‘์œผ๋ฉด ์‹œ์Šคํ…œ ๊ณผ๋ถ€ํ•˜, ๋„ˆ๋ฌด ํฌ๋ฉด FCFSํ™”.
์ ์ ˆํ•œ ์ค‘๊ฐ„๊ฐ’์„ ์ฐพ๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ ์ตœ์ ํ™”์˜ ํ•ต์‹ฌ์ด๋‹ค.โ€


์ด ์Šฌ๋ผ์ด๋“œ๋Š” ์šด์˜์ฒด์ œ ์„ค๊ณ„์—์„œ ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค ์กฐ์ ˆ์ด ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ๊ฐ€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํ•ต์‹ฌ ํ†ต๊ณ„ ๊ทธ๋ž˜ํ”„์•ผ.
์‹คํ—˜๋ฌธ์ œ, ์„œ์ˆ ํ˜• ๋‘˜ ๋‹ค ์ถœ์ œ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์œผ๋‹ˆ ๊ผญ ๊ธฐ์–ตํ•ด!
 

๐Ÿ“„ Multilevel Feedback Queue (MLFQ)

๐Ÿ“„ Multilevel Feedback Queue (MLFQ)


๐Ÿ”ง ํ•ต์‹ฌ ๊ฐœ๋…

MLFQ๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰ ์‹œ๊ฐ„๊ณผ ํ–‰๋™ ํŒจํ„ด์— ๋”ฐ๋ผ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•˜๋Š” ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ•์ด๋‹ค.
์งง์€ ์ž‘์—…์€ ๋น ๋ฅด๊ฒŒ, ๊ธด ์ž‘์—…์€ ์ ์ฐจ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋กœ ๋ฐ€๋ฆฌ๊ฒŒ ํ•˜์—ฌ ๊ณต์ •์„ฑ๊ณผ ๋ฐ˜์‘์„ฑ์„ ๋™์‹œ์— ์žก๋Š”๋‹ค.


๐Ÿ”ข ํ ๊ตฌ์กฐ

  1. Queue 1 (quantum = 8)
    • ์ดˆ๊ธฐ ์ง„์ž…
    • 8์ดˆ ์ด๋‚ด ์ข…๋ฃŒ๋˜๋ฉด ์—ฌ๊ธฐ์„œ ์™„์ „ํžˆ ๋
    • ์‹œ๊ฐ„ ์ดˆ๊ณผ ์‹œ โ†’ Queue 2๋กœ ์ด๋™
  2. Queue 2 (quantum = 16)
    • Queue 1์—์„œ ๋ฐ€๋ ค์˜จ ํ”„๋กœ์„ธ์Šค
    • 16์ดˆ ์•ˆ์— ์ข…๋ฃŒ๋˜๋ฉด ์—ฌ๊ธฐ์„œ ์™„๋ฃŒ
    • ๋˜ ์‹œ๊ฐ„ ์ดˆ๊ณผ ์‹œ โ†’ FCFS ํ๋กœ ์ด๋™
  3. Queue 3 (FCFS)
    • Time quantum ์—†์ด ์ˆœ์„œ๋Œ€๋กœ ๋๋‚  ๋•Œ๊นŒ์ง€ ์‹คํ–‰

๐Ÿ”„ ๋™์ž‘ ์˜ˆ์‹œ (์Šฌ๋ผ์ด๋“œ ํ•„๊ธฐ ์ˆœ์„œ ๊ธฐ์ค€)

  • โ‘ ~โ‘ค: ์ฒ˜์Œ์—” ๋ชจ๋‘ Queue 1์— ๋“ค์–ด๊ฐ
    • ๊ฐ๊ฐ 8์ดˆ์”ฉ ์‹คํ–‰๋จ
    • ์˜ˆ: โ‘ค๋ฒˆ์€ 6์ดˆ ๋งŒ์— ๋๋‚˜์„œ Queue 1์—์„œ ์ข…๋ฃŒ๋จ (โœ…)
  • ๋‚จ์€ ํ”„๋กœ์„ธ์Šค(โ‘ฃ,โ‘ข,โ‘ก,โ‘ )๋Š” ์‹œ๊ฐ„์ด ๋ถ€์กฑํ•ด โ†’ Queue 2๋กœ ์ด๋™
    • ๊ฐ์ž 16์ดˆ ๋ฐฐ์ •๋จ
  • Queue 2์—์„œ๋„ ๋ชป ๋๋‚œ ํ”„๋กœ์„ธ์Šค(์˜ˆ: โ‘ข)๋Š” โ†’ Queue 3 (FCFS)๋กœ ์ด๋™

โœ๏ธ ์Šฌ๋ผ์ด๋“œ ํ•„๊ธฐ ์š”์•ฝ

  • โ€œ24์ดˆ ์ž‘์—…์ด ์žˆ์—ˆ๋Š”๋ฐโ€ฆ Queue 1์—์„œ 8์ดˆ, Queue 2์—์„œ 16์ดˆ โ†’ ์ด 24์ดˆ ํ›„ ์ข…๋ฃŒโ€
  • โ€œ๋‚จ์€ ์–‘์ด ๋งŽ์œผ๋ฉด FCFS๋กœ ๋‚ด๋ ค๊ฐ„๋‹คโ€
  • โ€œ์„ ์ ํ˜• ํ โ†’ ์งง์€ job์— ์œ ๋ฆฌโ€
  • โ€œ๋‘ ๋ฒˆ์งธ ํ๋Š” preemptive ์•„๋‹˜โ€ (context switch ์—†์Œ)
  • โ€œ์งง์€ job์€ Queue 1์—์„œ ๋ฐ”๋กœ ๋๋ƒ„ โ†’ ๋ฐ˜์‘์„ฑ ์ข‹์Œโ€

โœ… ์•”๊ธฐ ํฌ์ธํŠธ

  • ๋‹ค๋‹จ๊ณ„ ํ๋กœ ์šฐ์„ ์ˆœ์œ„ ๊ตฌ์„ฑ
  • ๋†’์€ ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ์งง์€ quantum (์„ ์ ํ˜•)
    โ†’ ๋ฐ˜์‘์„ฑโ†‘
  • ๊ธด job์€ ์ ์ฐจ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋กœ ๋ฐ€๋ ค FCFS๋กœ
  • ์งง์€ job์€ ๋†’์€ ์šฐ์„ ์ˆœ์œ„์—์„œ ๋น ๋ฅด๊ฒŒ ๋๋‚จ
  • ์‹ค์ œ ์šด์˜์ฒด์ œ์—์„œ ๊ฐ€์žฅ ์œ ์—ฐํ•˜๊ณ  ํ˜„์‹ค์ ์ธ ๋ฐฉ์‹

์š”์•ฝ ํ‘œ

QueueQuantum์„ ์  ์—ฌ๋ถ€์šฉ๋„
Q1 8 O ์งง์€ ์ž‘์—… ๋น ๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ, ๊ธฐ๋ณธ ์ง„์ž…
Q2 16 X ์ค‘๊ฐ„ ์ž‘์—… ์ฒ˜๋ฆฌ
Q3 ์—†์Œ X (FCFS) ๊ธด ์ž‘์—… ์ฒ˜๋ฆฌ, CPU bound์šฉ

์ด ์Šฌ๋ผ์ด๋“œ๋Š” ์‹ค์ œ OS์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋™์  ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹์˜ ํ•ต์‹ฌ ๋ชจ๋ธ
 
 
 

๐Ÿ“„ Multiple-Processor Scheduling

๐Ÿง  ํ•ต์‹ฌ ๊ฐœ๋…

์—ฌ๋Ÿฌ ๊ฐœ์˜ **CPU ๋˜๋Š” ์ฝ”์–ด(Core)**๊ฐ€ ์žˆ๋Š” ์‹œ์Šคํ…œ์—์„œ,
๊ฐ ์ž‘์—…(Job, ํ”„๋กœ์„ธ์Šค)๋ฅผ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์–ด๋–ค CPU์— ๋ฐฐ๋ถ„ํ• ์ง€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์Šค์ผ€์ค„๋ง ๊ธฐ๋ฒ•


๐Ÿ—๏ธ ์‹œ์Šคํ…œ ์œ ํ˜• ๊ตฌ๋ถ„

1. Homogeneous Processor

  • ๋™์ผํ•œ CPU ๊ตฌ์กฐ
  • ํ•˜๋‚˜์˜ **๊ณตํ†ต ํ(shared ready queue)**๋ฅผ ์‚ฌ์šฉ
  • ์–ด๋–ค CPU๋“  ์–ด๋–ค job์ด๋‚˜ ์‹คํ–‰ ๊ฐ€๋Šฅ

โ†’ Load Sharing ๊ฐ€๋Šฅ


๐Ÿ”„ ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹ ๊ตฌ๋ถ„

โœ… Asymmetric Multiprocessing (AMP)

  • ํ•œ CPU๋งŒ ์Šค์ผ€์ค„๋ง์„ ๋‹ด๋‹น (master)
  • ๋‚˜๋จธ์ง€ CPU๋Š” ๋‹จ์ˆœํžˆ ์ž‘์—…๋งŒ ์‹คํ–‰
  • ์žฅ์ : ์„ค๊ณ„ ๊ฐ„๋‹จ
  • ๋‹จ์ : ์Šค์ผ€์ค„๋ง ๋ณ‘๋ชฉ ๊ฐ€๋Šฅ

โ†’ โœ ํ•„๊ธฐ: โ€œํ•œ๋†ˆ์ด ์Šค์ผ€์ค„ ๋‹ค ๋‹ด๋‹นํ•จ โ†’ ๋ณ‘๋ชฉ๋  ์ˆ˜ ์žˆ์Œโ€


โœ… Symmetric Multiprocessing (SMP)

  • ๋ชจ๋“  CPU๊ฐ€ ์Šค์ผ€์ค„๋ง ๊ธฐ๋Šฅ ๊ฐ€์ง
  • ๊ฐ๊ฐ ์Šค์Šค๋กœ ์ž‘์—…์„ ํ์—์„œ ๊ฐ€์ ธ์˜ด
  • ์žฅ์ : ๋ณ‘๋ ฌ์„ฑ ๊ทน๋Œ€ํ™”
  • ๋‹จ์ : ๊ฒฝ์Ÿ ์กฐ๊ฑด, ๋™๊ธฐํ™” ์˜ค๋ฒ„ํ—ค๋“œ

โ†’ โœ ํ•„๊ธฐ: โ€œ๋ชจ๋‘ ์•Œ์•„์„œ ํ์—์„œ ๊บผ๋ƒ„ โ†’ lock ๊ฒฝํ•ฉ, ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฐ€๋Šฅโ€


๐Ÿ“ˆ Load Sharing ์ „๋žต

์—ฌ๋Ÿฌ CPU๊ฐ€ ready queue๋ฅผ ๊ณต์œ ํ•˜๋ฉด์„œ,
๊ฐ์ž๊ฐ€ ๊ท ํ˜• ์žˆ๊ฒŒ ์ž‘์—…์„ ๋ถ„๋‹ดํ•˜๋Š” ๊ตฌ์กฐ

  • ์ž‘์—…์ด ๋ชฐ๋ฆฌ๋Š” ํ˜„์ƒ์„ ์™„ํ™”
  • SMP์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ๋Œ€ํ‘œ ์ „๋žต

๐Ÿง  ํ•„๊ธฐ ํฌํ•จ ์š”์•ฝ

  • โ€œCore = ์ฒ˜๋ฆฌ ๋‹จ์œ„โ€
  • โ€œMulticore๋Š” ํ•˜๋‚˜์˜ CPU ์•ˆ์— ์—ฌ๋Ÿฌ ์ฝ”์–ดโ€
  • โ€œMultiprocessor๋Š” ๋ฌผ๋ฆฌ์ ์œผ๋กœ CPU๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœโ€
  • ์•„๋ž˜ ๋„์‹์—์„œ MultiCPU vs MultiCore๋ฅผ ๊ตฌ๋ถ„ํ•ด ๊ทธ๋ฆผ

โœ… ์•”๊ธฐ ํฌ์ธํŠธ

  • AMP: ํ•œ CPU๊ฐ€ ์ „์ฒด ์Šค์ผ€์ค„ ๊ด€๋ฆฌ (๋ณ‘๋ชฉ ๊ฐ€๋Šฅ)
  • SMP: ๋ชจ๋“  CPU๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘์—… ๊ฐ€์ ธ๊ฐ (์„ฑ๋Šฅ ์ข‹์ง€๋งŒ ๊ฒฝ์Ÿ ๋ฐœ์ƒ ๊ฐ€๋Šฅ)
  • Load Sharing: queue ๊ณต์œ  ๊ธฐ๋ฐ˜์˜ ์ž‘์—… ๋ถ„์‚ฐ
  • Homogeneous vs Heterogeneous๋„ ๊ตฌ๋ถ„ ํ•„์š” (์ด ์Šฌ๋ผ์ด๋“œ์—” ์–ธ๊ธ‰ X)

๊ตฌ์กฐ ์š”์•ฝํ‘œ

๊ตฌ๋ถ„์Šค์ผ€์ค„๋ง ๋‹ด๋‹น๊ตฌ์กฐ์žฅ์ ๋‹จ์ 
AMP (๋น„๋Œ€์นญ) 1๊ฐœ CPU ์ค‘์•™์ง‘์ค‘์‹ ์„ค๊ณ„ ๊ฐ„๋‹จ ๋ณ‘๋ชฉ, ์œ ์—ฐ์„ฑ ๋‚ฎ์Œ
SMP (๋Œ€์นญ) ๋ชจ๋“  CPU ๋ถ„์‚ฐ์‹ ๋ณ‘๋ ฌ์„ฑ/ํ™•์žฅ์„ฑ ์ข‹์Œ ๋™๊ธฐํ™” ์˜ค๋ฒ„ํ—ค๋“œ ์กด์žฌ
Load Sharing ๊ณต์œ  ํ ๊ธฐ๋ฐ˜ ๊ท ๋“ฑ ๋ถ„์‚ฐ ์œ ํœด CPU ํ™œ์šฉ, ๋ถ€ํ•˜ ๊ท ํ˜• ๊ตฌํ˜„ ๋ณต์žก๋„ ์กด์žฌ

์ด ์Šฌ๋ผ์ด๋“œ๋Š” ๋‹ค์ค‘ ํ”„๋กœ์„ธ์„œ ํ™˜๊ฒฝ์—์„œ ์Šค์ผ€์ค„๋ง ์ •์ฑ…์˜ ๊ตฌ์กฐ์™€ ์žฅ๋‹จ์ ์„ ๋น„๊ตํ•˜๋Š” ํ•ต์‹ฌ ์Šฌ๋ผ์ด๋“œ์•ผ.
SMP์™€ AMP๋Š” ์‹œํ—˜์—์„œ ์ž์ฃผ ๋น„๊ต