๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ComputerScience ๐Ÿ“š/์šด์˜์ฒด์ œ

[OS] CPU ์Šค์ผ€์ค„๋ง(CPU Scheduling)

by ์•ˆ์ฃผํ˜• 2022. 2. 20.

 

CPU ์Šค์ผ€์ค„๋ง(CPU Scheduling)

CPU ์Šค์ผ€์ค„๋ง์€ ๋‹ค์ค‘ ํ”„๋กœ๊ทธ๋žจ ์šด์˜์ฒด์ œ์˜ ๊ธฐ๋ณธ์ž…๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ๋Š” CPU๋ฅผ ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ๊ตํ™˜ํ•จ์œผ๋กœ์จ, ์ปดํ“จํ„ฐ๋ฅผ ๋ณด๋‹ค ์ƒ์‚ฐ์ ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋ฒˆ์—๋Š” ๊ธฐ๋ณธ์ ์ธ ์Šค์ผ€์ค„๋ง ๊ฐœ๋…์„ ์†Œ๊ฐœํ•˜๊ณ  ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

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

  1. ์–ด๋Š ํ•œ์ˆœ๊ฐ„์— ๋‹ค์ˆ˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  2. ์–ด๋–ค ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐํ•ด์•ผ ํ•  ๊ฒฝ์šฐ, ์šด์˜์ฒด์ œ๋Š” CPU๋ฅผ ๊ทธ ํ”„๋กœ์„ธ์Šค๋กœ๋ถ€ํ„ฐ ํšŒ์ˆ˜ํ•ด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

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

 ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์Šค์ผ€์ค„๋ง์€ ์šด์˜์ฒด์ œ์˜ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๊ฑฐ์˜ ๋ชจ๋“  ์ปดํ“จํ„ฐ ์ž์›๋“ค์€ ์‚ฌ์šฉ๋˜๊ธฐ ์ „์— ์Šค์ผ€์ค„ ๋ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  CPU๋Š” ์ค‘์š”ํ•œ ์ปดํ“จํ„ฐ ์ž์› ์ค‘์˜ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ CPU ์Šค์ผ€์ค„๋ง์€ ์šด์˜์ฒด์ œ ์„ค๊ณ„์˜ ํ•ต์‹ฌ์ด ๋ฉ๋‹ˆ๋‹ค.

(1) CPU ์Šค์ผ€์ค„๋Ÿฌ(_CPU Scheduler)

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

 ์ค€๋น„ ํ๋Š” ๋ฐ˜๋“œ์‹œ ์„ ์ž…์„ ์ถœ(FIFO) ๋ฐฉ์‹์˜ ํ๊ฐ€ ์•„๋‹ˆ์–ด๋„ ๋˜๋Š” ๊ฒƒ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์„ ๊ณ ๋ คํ•  ๋•Œ ์•Œ๊ฒŒ ๋˜๊ฒ ์ง€๋งŒ, ์ค€๋น„ ํ๋Š” ์„ ์ž…์„ ์ถœ ํ, ์šฐ์„ ์ˆœ์œ„ ํ, ํŠธ๋ฆฌ ๋˜๋Š” ๋‹จ์ˆœํžˆ ์ˆœ์„œ๊ฐ€ ์—†๋Š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐœ๋…์ ์œผ๋กœ ๋ณผ ๋•Œ ์ค€๋น„ ํ์— ์žˆ๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋“ค์€ CPU์—์„œ ์‹คํ–‰๋  ๊ธฐํšŒ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ฉฐ ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ์— ์žˆ๋Š” ๋ ˆ์ฝ”๋“œ๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ์„ธ์Šค๋“ค์˜ ํ”„๋กœ์„ธ์Šค ์ œ์–ด ๋ธ”๋ก(PCB)๋“ค์ž…๋‹ˆ๋‹ค.

์ค€๋น„ ์ƒํƒœ์˜ ๋‹ค์ค‘ ํ

(2) ์„ ์  ๋ฐ ๋น„์„ ์  ์Šค์ผ€์ค„๋ง(_Preemptive and Nonpreemptive Scheduling)

CPU ์Šค์ผ€์ค„๋ง ๊ฒฐ์ •์€ ๋‹ค์Œ์˜ ๋„ค ๊ฐ€์ง€ ์ƒํ™ฉ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ƒํƒœ์—์„œ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ
  2. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰ ์ƒํƒœ์—์„œ ์ค€๋น„ ์™„๋ฃŒ ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ(์˜ˆ: ์ธํ„ฐ๋ŸฝํŠธ ๋ฐœ์ƒ)
  3. ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋Œ€๊ธฐ ์ƒํƒœ์—์„œ ์ค€๋น„ ์™„๋ฃŒ ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ(์˜ˆ: I/O ์ข…๋ฃŒ ์‹œ)
  4. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒํ•  ๋•Œ

์ƒํ™ฉ 1๊ณผ 4์˜ ๊ฒฝ์šฐ, ์Šค์ผ€์ค„๋ง ๋ฉด์—์„œ๋Š” ์„ ํƒ์˜ ์—ฌ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์‹คํ–‰์„ ์œ„ํ•ด ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค(์ค€๋น„ ํ์— ํ•˜๋‚˜๋ผ๋„ ์กด์žฌํ•  ๊ฒฝ์šฐ)๊ฐ€ ๋ฐ˜๋“œ์‹œ ์„ ํƒ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ƒํ™ฉ 2์™€ 3์„ ์œ„ํ•ด์„œ๋Š” ์„ ํƒ์˜ ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 ์ƒํ™ฉ 1๊ณผ 4์—์„œ๋งŒ ์Šค์ผ€์ค„๋ง์ด ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ, ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์Šค์ผ€์ค„๋ง ๋ฐฉ๋ฒ•์„ ๋น„์„ ์ (nonpreemptive) ๋˜๋Š” ํ˜‘์กฐ์ (cooperative)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด, ๊ทธ๊ฒƒ์€ ์„ ์ (preemptive)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋น„์„ ์  ์Šค์ผ€์ค„๋ง ํ•˜์—์„œ๋Š”, ์ผ๋‹จ CPU๊ฐ€ ํ•œ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋˜๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒํ•˜๋“ ์ง€, ๋˜๋Š” ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜ํ•ด CPU๋ฅผ ๋ฐฉ์ถœํ•  ๋•Œ๊นŒ์ง€ ์ ์œ ํ•ฉ๋‹ˆ๋‹ค. Windows, macOS, Linux ๋ฐ UNIX๋ฅผ ํฌํ•จํ•œ ๊ฑฐ์˜ ๋ชจ๋“  ์ตœ์‹  ์šด์˜์ฒด์ œ๋“ค์€ ์„ ์  ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์„ ์ ํ˜• ์Šค์ผ€์ค„๋Ÿฌ(Preemptive Scheduling) ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค ๋Œ€์‹ ์— ํ”„๋กœ์„ธ์Šค CPU๋ฅผ ์ฐจ์ง€ํ• (๋บ์„) ์ˆ˜ ์žˆ์Œ
๋น„์„ ์ ํ˜•(Non-preemptive Scheduling) ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚˜์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๋Š” CPU๋ฅผ ์‚ฌ์šฉํ• (๋บ์„) ์ˆ˜ ์—†์Œ

์ด๋Ÿฌํ•œ ์Šค์ผ€์ค„๋ง์„ ํ•˜๊ธฐ ์œ„ํ•œ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ฒ•๋“ค์€ ์•„๋ž˜์—์„œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

์Šค์ผ€์ค„๋ง ๊ธฐ์ค€(_Scheduling Criteria)

์„œ๋กœ ๋‹ค๋ฅธ CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์€ ๋‹ค๋ฅธ ํŠน์„ฑ์ด ์žˆ์œผ๋ฉฐ ํ•œ ๋ถ€๋ฅ˜์˜ ํ”„๋กœ์„ธ์Šค๋“ค์„ ๋‹ค๋ฅธ ๋ถ€๋ฅ˜๋ณด๋‹ค ๋” ์„ ํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ์ƒํ™ฉ์—์„œ ์–ด๋– ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•˜๋ ค๋ฉด, ์šฐ๋ฆฌ๋Š” ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํŠน์„ฑ์„ ๋ฐ˜๋“œ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 CPU ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ ๊ธฐ์ค€์ด ์ œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋น„๊ตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํŠน์„ฑ์— ๋”ฐ๋ผ์„œ ์ตœ์„ ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ํฐ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ค€์€ ๋‹ค์Œ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

  • ๋Œ€๊ธฐ์‹œ๊ฐ„(waiting time): ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ƒ์„ฑ๋œ ํ›„ ์‹คํ–‰๋˜๊ธฐ ์ „๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๋Š” ์‹œ๊ฐ„(์ค€๋น„ ํ์—์„œ ๋Œ€๊ธฐํ•œ ์‹œ๊ฐ„)
  • ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„: ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ํ•ฉํ•œ ๋’ค ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋กœ ๋‚˜๋ˆˆ ๊ฐ’
  • ์‘๋‹ต ์‹œ๊ฐ„(response time): ์ฒซ ์ž‘์—…์„ ์‹œ์ž‘ํ•œ ํ›„ ์ฒซ ๋ฒˆ์งธ ์ถœ๋ ฅ(๋ฐ˜์‘)์ด ๋‚˜์˜ค๊ธฐ ์ „๊นŒ์ง€ ์‹œ๊ฐ„
  • ์‹คํ–‰์‹œ๊ฐ„: ํ”„๋กœ์„ธ์Šค ์ž‘์—…์ด ์‹œ์ž‘๋œ ํ›„ ์ข…๋ฃŒ๋˜๊ธฐ๊นŒ์ง€์˜ ์‹œ๊ฐ„
  • ๋ฐ˜ํ™˜์‹œ๊ฐ„(turn around time): ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ํฌํ•จํ•˜์—ฌ ์‹คํ–‰์ด ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€์˜ ์‹œ๊ฐ„
    ๋Œ€๊ธฐ์‹œ๊ฐ„, ์‘๋‹ต์‹œ๊ฐ„, ์‹คํ–‰์‹œ๊ฐ„, ๋ฐ˜ํ™˜ ์‹œ๊ฐ„์˜ ๊ด€๊ณ„

 

์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜(_Scheduling Algorithms)

๋Œ€๋ถ€๋ถ„์˜ ์ตœ์‹  CPU ์•„ํ‚คํ…์ฒ˜์—๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ฒ˜๋ฆฌ ์ฝ”์–ด๊ฐ€ ์žˆ์ง€๋งŒ ์ด๋Ÿฌํ•œ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ฒ˜๋ฆฌ ์ฝ”์–ด๊ฐ€ ํ•˜๋‚˜๋ฟ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ์„ ์ž… ์„ ์ฒ˜๋ฆฌ ์Šค์ผ€์ค„๋ง(_First Come First-Served Scheduling, FCFS) 
  2. ์ตœ๋‹จ ์ž‘์—… ์šฐ์„  ์Šค์ผ€์ค„๋ง(_Short-Job- First Scheduling, SJF)
  3. ๋ผ์šด๋“œ ๋กœ๋นˆ ์Šค์ผ€์ค„๋ง(_Round-Robin Scheduling, RR)
  4. ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง(_Priority Scheduling)

(1) ์„ ์ž… ์„ ์ฒ˜๋ฆฌ ์Šค์ผ€์ค„๋ง(_First Come First-Served Scheduling, FCFS) 

  • ์ค€๋น„ ํ์— ๋„์ฐฉํ•˜๋ฉด ์ˆœ์„œ๋Œ€๋กœ CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋น„์„ ์ ํ˜• ๋ฐฉ์‹
  • ํ•œ ๋ฒˆ ์‹คํ–‰๋˜๋ฉด ๊ทธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋๋‚˜์•ผ๋งŒ ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ
  • ํ๊ฐ€ ํ•˜๋‚˜๋ผ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋™์ผ

ํ”„๋กœ์„ธ์Šค๋“ค์ด P1, P2, P3 ์ˆœ์œผ๋กœ ๋„์ฐฉํ•˜๊ณ , ์„ ์ž… ์„ ์ฒ˜๋ฆฌ ์ˆœ์œผ๋กœ ์„œ๋น„์Šค๋ฐ›๋Š”๋‹ค๋ฉด, ๋‹ค์Œ์˜ Gantt ์ฐจํŠธ์— ๋ณด์ธ ๊ฒฐ๊ณผ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค P1์˜ ๋Œ€๊ธฐ ์‹œ๊ฐ„์€0๋ฐ€๋ฆฌ ์ดˆ์ด๋ฉฐ, ํ”„๋กœ์„ธ์Šค P2๋Š” 24๋ฐ€๋ฆฌ ์ดˆ์ด๊ณ , ํ”„๋กœ์„ธ์Šค P3์€ 27๋ฐ€๋ฆฌ ์ดˆ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ, ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„์€(0+24+27)/3 = 17 ๋ฐ€๋ฆฌ์ดˆ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ”„๋กœ์„ธ์Šค๋“ค์ด P2, P3, P4 ์ˆœ์œผ๋กœ ๋„์ฐฉํ•˜๋ฉด, ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์€ ์ด์ œ (6 + 0 + 3)/3 = 3๋ฐ€๋ฆฌ ์ดˆ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ์†Œ๋Š” ์ƒ๋‹นํžˆ ํฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์„ ์ž… ์„ ์ฒ˜๋ฆฌ ์ •์ฑ… ํ•˜์—์„œ ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ตœ์†Œ๊ฐ€ ์•„๋‹ˆ๋ฉฐ, ํ”„๋กœ์„ธ์Šค CPU ๋ฒ„์ŠคํŠธ ์‹œ๊ฐ„์ด ํฌ๊ฒŒ ๋ณ€ํ•  ๊ฒฝ์šฐ์—๋Š” ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„๋„ ์ƒ๋‹นํžˆ ๋ณ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

 

(2) ์ตœ๋‹จ ์ž‘์—… ์šฐ์„  ์Šค์ผ€์ค„๋ง(_Short-Job- First Scheduling, SJF)

  • ์ค€๋น„ ํ์— ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค ์ค‘์—์„œ ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง์€ ์ž‘์—…๋ถ€ํ„ฐ CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹
  • FCFS์˜ ๋ฌธ์ œ์ ์ธ ํ˜ธ์œ„ ํšจ๊ณผ(convoy effect)๋ฅผ ์™„ํ™”ํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ํšจ์œจ์„ฑ์„ ๋†’์ž„
  • ์ตœ์†Œ ์ž”์—ฌ ์‹œ๊ฐ„ ์šฐ์„ (shortest remaining time first) ์Šค์ผ€์ค„๋ง ์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆผ

SJF ์Šค์ผ€์ค„๋ง์„ ์ด์šฉํ•˜๋ฉด, ์šฐ๋ฆฌ๋Š” ์œ„์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹ค์Œ์˜ Gantt ์ฐจํŠธ์™€ ๊ฐ™์ด ์Šค์ผ€์ค„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์„ธ์Šค P1์˜ ๋Œ€๊ธฐ ์‹œ๊ฐ„์€ 3๋ฐ€๋ฆฌ ์ดˆ, ํ”„๋กœ์„ธ์Šค p2์˜ ๋Œ€๊ธฐ ์‹œ๊ฐ„์€ 16๋ฐ€๋ฆฌ ์ดˆ, ํ”„๋กœ์„ธ์Šค P3๋Š” 9๋ฐ€๋ฆฌ ์ดˆ์ด๊ณ , ํ”„๋กœ์„ธ์Šค P4๋Š” 0์ดˆ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ, ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์€ (3 + 16 + 9 + 0)/4 = 7๋ฐ€๋ฆฌ ์ดˆ์ž…๋‹ˆ๋‹ค. ๋น„๊ต ์ฐจ์›์—์„œ ๋งŒ์ผ ์„ ์ž…์„ ์ถœ(FCFS) ์Šค์ผ€์ค„๋ง์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ํ‰๊ท  ๋Œ€๊ธฐ์‹œ๊ฐ„์€ 10.25๋ฐ€๋ฆฌ ์ดˆ๊ฐ€ ๋˜์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

 SJF ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ตœ์ ์ด๊ธด ํ•˜์ง€๋งŒ, ๋‹ค์Œ CPU ๋ฒ„์ŠคํŠธ์˜ ๊ธธ์ด๋ฅผ ์•Œ ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— CPU ์Šค์ผ€์ค„๋ง ์ˆ˜์ค€์—์„œ๋Š” ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

(3) ๋ผ์šด๋“œ ๋กœ๋นˆ ์Šค์ผ€์ค„๋ง(_Round-Robin Scheduling, RR)

  • ํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ฐ›์€ ์‹œ๊ฐ„(ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค: time slice, time quantum) ๋™์•ˆ ์ž‘์—… ์„ ํ•˜๋‹ค๊ฐ€ ์ž‘์—…์„ ์™„๋ฃŒํ•˜์ง€ ๋ชปํ•˜๋ฉด ์ค€๋น„ ํ์˜ ๋งจ ๋’ค๋กœ ๊ฐ€์„œ ์ž๊ธฐ ์ฐจ๋ก€๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐฉ์‹
  • ์„ ์ ํ˜• ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ๊ฐ€์žฅ ๋‹จ์ˆœํ•˜๊ณ  ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ์‹
  • ํ”„๋กœ์„ธ์Šค๋“ค์ด ์ž‘์—…์„ ์™„๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ๊ณ„์† ์ˆœํ™˜ํ•˜๋ฉด์„œ ์‹คํ–‰

RR ์Šค์ผ€์ค„๋ง

๋งŒ์ผ ์šฐ๋ฆฌ๊ฐ€ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์„ 4๋ฐ€๋ฆฌ์ดˆ๋กœ ํ•œ๋‹ค๋ฉด, ํ”„๋กœ์„ธ์Šค P1์€ ์ฒ˜์Œ์˜ 4๋ฐ€๋ฆฌ์ดˆ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” 20๋ฐ€๋ฆฌ์ดˆ๊ฐ€ ๋” ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ด ํ”„๋กœ์„ธ์Šค๋Š” ์ฒซ ๋ฒˆ์งธ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰ ์ดํ›„์— ์„ ์ ๋˜๊ณ , CPU๋Š” ํ์— ์žˆ๋Š” ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค์ธ P2์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค P2๋Š” 4๋ฐ€๋ฆฌ์ดˆ๋ฅผ ํ•„์š”๋กœ ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์ด ๋๋‚˜๊ธฐ๋„ ์ „์— ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. CPU๋Š” ์ด์–ด ๋‹ค์Œ ํ”„๋กœ์„ธ์Šค์ธ P3์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ์ผ๋‹จ ๊ฐ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋Ÿ‰์„ ๋ฐ›์œผ๋ฉด CPU๋Š” ๋‹ค์Œ์˜ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์„ ํ”„๋กœ์„ธ์Šค P1์—๊ฒŒ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋ผ์šด๋“œ ๋กœ๋นˆ ์Šค์ผ€์ค„์˜ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

RR ์Šค์ผ€์ค„๋ง

์ด ์Šค์ผ€์ค„์— ๋”ฐ๋ฅด๋Š” ํ‰๊ท ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•ด ๋ด…์‹œ๋‹ค. P1์€ 6๋ฐ€๋ฆฌ์ดˆ(10 - 4)๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ , P2๋Š” 4๋ฐ€๋ฆฌ์ดˆ, ๊ทธ๋ฆฌ๊ณ  P3๋Š” 7๋ฐ€๋ฆฌ์ดˆ๋ฅผ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ‰๊ท ๋Œ€๊ธฐ ์‹œ๊ฐ„์€ 17/3 = 5.66 ๋ฐ€๋ฆฌ์ดˆ์ž…๋‹ˆ๋‹ค.

 ๋ผ์šด๋“œ ๋กœ๋นˆ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ๋Š”, ์œ ์ผํ•˜๊ฒŒ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์—ฐ์†์ ์œผ๋กœ ๋‘ ๋ฒˆ ์ด์ƒ์˜ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์„ ํ• ๋‹น๋ฐ›๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋งŒ์ผ CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ํ•œ ๋ฒˆ์˜ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์„ ์ดˆ๊ณผํ•˜๋ฉด, ํ”„๋กœ์„ธ์Šค๋Š” ์„ ์ ๋˜๊ณ  ์ค€๋น„ ํ๋กœ ๋˜๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ RR ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์„ ์ ํ˜•์ž…๋‹ˆ๋‹ค.

ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค(Time Slice or Time Quantum)์˜ ํฌ๊ธฐ์™€ ๋ฌธ๋งฅ ๊ตํ™˜
 -> ๋ผ์šด๋“œ ๋กœ๋นˆ ์Šค์ผ€์ค„๋ง์ด ํšจ๊ณผ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋ ค๋ฉด ๋ฌธ๋งฅ ๊ตํ™˜์— ๋”ฐ๋ฅธ ์ถ”๊ฐ€ ์‹œ๊ฐ„์„ ๊ณ ๋ คํ•˜์—ฌ ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๋ฅผ ์ ์ ˆํžˆ ์„ค์ •ํ•ด์•ผ ํ•จ
 
ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๊ฐ€ ํฐ ๊ฒฝ์šฐ
 -> ํ•˜๋‚˜์˜ ์ž‘์—…์ด ๋๋‚œ ๋’ค ๋‹ค์Œ ์ž‘์—…์ด ์‹œ์ž‘๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์—ฌ FCFS ์Šค์ผ€์ค„๋ง๊ณผ ๋‹ค๋ฅผ๊ฒŒ ์—†์Œ
 
ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๊ฐ€ ์ž‘์€ ๊ฒฝ์šฐ
 -> ๋ฌธ๋งฅ ๊ตํ™˜์ด ๋„ˆ๋ฌด ์ž์ฃผ ์ผ์–ด๋‚˜ ๋ฌธ๋งฅ ๊ตํ™˜์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ์‹ค์ œ ์ž‘์—… ์‹œ๊ฐ„๋ณด๋‹ค ์ƒ๋Œ€์ ์œผ๋กœ ์ปค์ง€๋ฉฐ, ๋ฌธ๋งฅ ๊ตํ™˜์— ๋งŽ์€ ์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜์—ฌ ์‹ค์ œ ์ž‘์—…์„ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ

ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค ํฌ๊ธฐ์™€ ๋ฌธ๋งฅ ๊ตํ™˜์˜ ๊ด€๊ณ„

๋”ฐ๋ผ์„œ RR์Šค์ผ€์ค„๋ง์€ ํƒ€์ž„ ์Šฌ๋ผ์ด์Šค๋Š” ๋˜๋„๋ก ์ž‘๊ฒŒ ์„ค์ •ํ•˜๋˜ ๋ฌธ๋งฅ ๊ตํ™˜์— ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ๊ณ ๋ คํ•˜์—ฌ ์ ๋‹นํ•œ ํฌ๊ธฐ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

 

(4)์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง(_Priority Scheduling)

SJF ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ผ๋ฐ˜์ ์ธ ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ ํ”„๋กœ์„ธ์Šค๋“ค์— ์—ฐ๊ด€๋˜์–ด ์žˆ์œผ๋ฉฐ, CPU๋Š” ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค๋“ค์€ ์„ ์ž… ์„ ์ฒ˜๋ฆฌ(FCFS) ์ˆœ์„œ๋กœ ์Šค์ผ€์ค„ ๋ฉ๋‹ˆ๋‹ค. SJF ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์˜ˆ์ƒ๋˜๋Š” ๋‹ค์Œ CPU ๋ฒ„์ŠคํŠธ์˜ ์—ญ์ธ ๋‹จ์ˆœํ•œ ์šฐ์„ ์ˆœ์œ„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž…๋‹ˆ๋‹ค. CPU ๋ฒ„์ŠคํŠธ๊ฐ€ ํด์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์œผ๋ฉฐ, ์„ค๊ณ„์— ๋”ฐ๋ผ ๊ทธ ์—ญ๋„ ์„ฑ๋ฆฝํ•ฉ๋‹ˆ๋‹ค.

์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง

์šฐ์„  ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์„ ์ด์šฉํ•ด, ๋‹ค์Œ์˜ Gantt ์ฐจํŠธ์™€ ๊ฐ™์ด ์ด๋“ค ํ”„๋กœ์„ธ์Šค๋ฅผ ์Šค์ผ€์ค„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง

ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์€ 8.2๋ฐ€๋ฆฌ์ดˆ์ž…๋‹ˆ๋‹ค.

 ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์€ ์„ ์ ํ˜•์ด๊ฑฐ๋‚˜ ๋˜๋Š” ๋น„์„ ์ ํ˜•์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„ ํ์— ๋„์ฐฉํ•˜๋ฉด, ์ƒˆ๋กœ ๋„์ฐฉํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„์™€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

  • ์„ ์ ํ˜• ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜: ์ƒˆ๋กœ ๋„์ฐฉํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ํ˜„์žฌ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ณด๋‹ค ๋†’๋‹ค๋ฉด CPU๋ฅผ ์„ ์ ํ•œ๋‹ค.
  • ๋น„์„ ์ ํ˜• ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜: ๋‹จ์ˆœํžˆ ์ค€๋น„์™„๋ฃŒ ํ์˜ ๋จธ๋ฆฌ ๋ถ€๋ถ„์— ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค๋ฅผ ๋„ฃ๋Š”๋‹ค.

 ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ฃผ์š” ๋ฌธ์ œ๋Š” ๋ฌดํ•œ ๋ด‰์‡„(indefinite blocking) ๋˜๋Š” ๊ธฐ์•„ ์ƒํƒœ(starvation)์ž…๋‹ˆ๋‹ค. ์‹คํ–‰ ์ค€๋น„๋Š” ๋˜์–ด ์žˆ์œผ๋‚˜ CPU๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” CPU๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋ฉด์„œ ๋ด‰์‡„๋œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ํ”„๋กœ์„ธ์Šค๋“ค์ด CPU๋ฅผ ๋ฌดํ•œํžˆ ๋Œ€๊ธฐํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ถ€ํ•˜๊ฐ€ ๊ณผ์ค‘ํ•œ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์—์„œ๋Š” ๋†’์€ ์šฐ์„ ์ˆœ์œ„์˜ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๊พธ์ค€ํžˆ ๋“ค์–ด์™€์„œ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„์˜ ํ”„๋กœ์„ธ์Šค๋“ค์ด CPU๋ฅผ ์–ป์ง€ ๋ชปํ•˜๊ฒŒ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„์˜ ํ”„๋กœ์„ธ์Šค๋“ค์ด ๋ฌดํ•œํžˆ ๋ด‰์‡„๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋…ธํ™”(aging)
  2. ๋ผ์šด๋“œ ๋กœ๋นˆ๊ณผ ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์˜ ๊ฒฐํ•ฉ

์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์ธ ๋…ธํ™”(aging)๋Š” ์˜ค๋žซ๋™์•ˆ ์‹œ์Šคํ…œ์—์„œ ๋Œ€๊ธฐํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ ์ง„์ ์œผ๋กœ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์šฐ์„ ์ˆœ์œ„๊ฐ€ 127(๋‚ฎ์Œ)์—์„œ 0(๋†’์Œ)๊นŒ์ง€์˜ ๋ฒ”์œ„๋ผ๋ฉด, ์šฐ๋ฆฌ๋Š” ์ฃผ๊ธฐ์ ์œผ๋กœ(์˜ˆ, 1์ดˆ๋งˆ๋‹ค) ๋Œ€๊ธฐ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ์—๋Š” ์ดˆ๊ธฐ์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ 127์ด์—ˆ๋˜ ํ”„๋กœ์„ธ์Šค๋„ ์‹œ์Šคํ…œ์—์„œ ์ตœ๊ณ ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ–๊ฒŒ ๋˜์–ด ์‹คํ–‰ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

RR+Priority ์Šค์ผ€์ค„๋ง

์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง๊ณผ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ™์€ ํ”„๋กœ์„ธ์Šค๋“ค์€ ๋ผ์šด๋“œ ๋กœ๋นˆ์œผ๋กœ ์Šค์ผ€์ค„๋งํ•˜๊ณ , ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์„ 2๋ฐ€๋ฆฌ์ดˆ๋กœ ํ–ˆ์„ ๊ฒฝ์šฐ ์œ„ ํ”„๋กœ์„ธ์Šค๋“ค์€ ๋‹ค์Œ Gantt ์ฐจํŠธ์™€ ๊ฐ™์ด ์Šค์ผ€์ค„๋ง ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

RR+Priority ์Šค์ผ€์ค„๋ง

 ์ด ์˜ˆ์—์„œ ํ”„๋กœ์„ธ์Šค P4์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์œผ๋ฏ€๋กœ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค P2 ๋ฐ P3๋Š” ๋‹ค์Œ์œผ๋กœ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๋ฉฐ ๋ผ์šด๋“œ ๋กœ๋นˆ ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์„ธ์Šค P2๊ฐ€ ์‹œ๊ฐ„ 16์—์„œ ์™„๋ฃŒ๋˜๋ฉด ํ”„๋กœ์„ธ์Šค P3๊ฐ€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํ”„๋กœ์„ธ์Šค์ด๋ฏ€๋กœ ์‹คํ–‰์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด์ œ ํ”„๋กœ์„ธ์Šค P1๊ณผ P5๋งŒ ๋‚จ์•„ ์žˆ์œผ๋ฉฐ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ™์œผ๋ฏ€๋กœ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋ผ์šด๋“œ ๋กœ๋นˆ ์ˆœ์„œ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

 

์ •๋ฆฌ

  1. CPU ์Šค์ผ€์ค„๋ง์€ ์ค€๋น„ ํ์—์„œ ๋Œ€๊ธฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ ํƒํ•˜๊ณ  CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ์ž‘์—…์ด๋‹ค. ๋””์ŠคํŒจ์ฒ˜์— ์˜ํ•ด ์„ ํƒ๋œ ํ”„๋กœ์„ธ์Šค์— CPU๊ฐ€ ํ• ๋‹น๋œ๋‹ค.
  2. ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์„ ์ ์ (CPU๋ฅผ ํ”„๋กœ์„ธ์Šค๋กœ๋ถ€ํ„ฐ ๋บ์„ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ) ๋˜๋Š” ๋น„์„ ์ ์ (ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž๋ฐœ์ ์œผ๋กœ CPU ์ œ์–ด๋ฅผ ํฌ๊ธฐํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ)์ผ ์ˆ˜ ์žˆ๋‹ค. ๊ฑฐ์˜ ๋ชจ๋“   ์ตœ์‹  ์šด์˜์ฒด์ œ๊ฐ€ ์„ ์ ์ ์ด๋‹ค.
  3. ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ (1) CPU ์ด์šฉ๋ฅ , (2) ์ฒ˜๋ฆฌ๋Ÿ‰, (3) ์ด์ฒ˜๋ฆฌ ์‹œ๊ฐ„, (4) ๋Œ€๊ธฐ ์‹œ๊ฐ„, (5) ์‘๋‹ต ์‹œ๊ฐ„์˜ 5๊ฐ€์ง€ ๊ธฐ์ค€์— ๋”ฐ๋ผ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ์„ ์ž… ์„ ์ฒ˜๋ฆฌ(FCFS) ์Šค์ผ€์ค„๋ง์€ ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด์ง€๋งŒ ์งง์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋งค์šฐ ๊ธด ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  5. ์ตœ๋‹จ ์ž‘์—… ์šฐ์„ (SJF) ์Šค์ผ€์ค„๋ง์€ ์ตœ์ ์ด๋ฉฐ ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ CPU ๋ฒ„์ŠคํŠธ์˜ ๊ธธ์ด๋ฅผ ์˜ˆ์ธกํ•˜๊ธฐ ์–ด๋ ค์šฐ๋ฏ€๋กœ SJF ์Šค์ผ€์ค„๋ง์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต๋‹ค.
  6. ๋ผ์šด๋“œ ๋กœ๋นˆ(RR) ์Šค์ผ€์ค„๋ง์€ CPU๋ฅผ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰ ๋™์•ˆ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹นํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰์ด ๋งŒ๋ฃŒ๋˜๊ธฐ ์ „์— CPU๋ฅผ ํฌ๊ธฐํ•˜์ง€ ์•Š์œผ๋ฉด ํ”„๋กœ์„ธ์Šค๊ฐ€ ์„ ์ ๋˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰ ๋™์•ˆ ์‹คํ–‰๋˜๋„๋ก ์Šค์ผ€์ค„ ๋œ๋‹ค.
  7. ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์€ ๊ฐ ํ”„๋กœ์„ธ์Šค์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ฐฐ์ •ํ•˜๊ณ  CPU๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹น๋œ๋‹ค. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋™์ผํ•œ ํ”„๋กœ์„ธ์Šค๋Š” FCFS ์ˆœ์„œ๋กœ ๋˜๋Š” RR ์Šค์ผ€์ค„๋ง์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šค์ผ€์ค„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋Œ“๊ธ€