CPU Scheduling

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


๋ชฉ์ 

  • CPU ์ด์šฉ์œจ(CPU Utilization) ๊ทน๋Œ€ํ™” : CPU๊ฐ€ ๊ฐ€๋Šฅํ•œ ํ•œ ์ง€์†์ ์œผ๋กœ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜์—ฌ ์œ ํœด ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•จ.

  • ์ฒ˜๋ฆฌ๋Ÿ‰(Throughput) ์ฆ๊ฐ€ : ๋‹จ์œ„ ์‹œ๊ฐ„ ๋‹น ์™„๋ฃŒ๋˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋ฅผ ๋Š˜๋ฆผ.

  • ๋Œ€๊ธฐ ์‹œ๊ฐ„(Waiting Time) ์ตœ์†Œํ™” : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ค€๋น„ ํ์—์„œ ๋Œ€๊ธฐํ•˜๋Š” ์‹œ๊ฐ„์„ ์ค„์ž„.

  • ์‘๋‹ต ์‹œ๊ฐ„(Response Time) ๋‹จ์ถ• : ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์‹œ์Šคํ…œ์˜ ๋ฐ˜์‘ ์‹œ๊ฐ„์„ ์ตœ์†Œํ™” ํ•จ.

  • ๋ฐ˜ํ™˜ ์‹œ๊ฐ„(Turnaround Time) ๊ฐ์†Œ : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋ถ€ํ„ฐ ์™„๋ฃŒ๊นŒ์ง€ ๊ฑธ๋ฆฌ๋Š” ์ด ์‹œ๊ฐ„์„ ์ค„์ž„.


์œ ํ˜•

1. ๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง(Non-Preeemptive Scheduling)

  • ํŠน์ง• : ํ•œ ๋ฒˆ CPU ๋ฅผ ํ• ๋‹น๋ฐ›์€ ํ”„๋กœ์„ธ์Šค๋Š” ์ž‘์—…์ด ์™„๋ฃŒ๋˜๊ฑฐ๋‚˜ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜๋  ๋•Œ๊นŒ์ง€ CPU ๋ฅผ ์ ์œ ํ•จ.

  • ์žฅ์  : ๋ฌธ๋งฅ ๊ตํ™˜(Context Switching) ์œผ๋กœ ์ธํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ ์Œ.

  • ๋‹จ์  : ๊ธด ์ž‘์—…์ด ์•ž์— ์žˆ์„ ๊ฒฝ์šฐ, ์งง์€ ์ž‘์—…๋“ค์ด ์˜ค๋ž˜ ๋Œ€๊ธฐํ•˜๋Š” ํ˜ธ์œ„ ํšจ๊ณผ(Convoy Effect) ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ.

2. ์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง(Preemptive Scheduling)

  • ํŠน์ง• : ์šด์˜์ฒด์ œ๊ฐ€ ํ•„์š”์— ๋”ฐ๋ผ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค์˜ CPU ์ ์œ ๋ฅผ ์ค‘๋‹จํ•˜๊ณ  ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Œ.

  • ์žฅ์  : ๊ธด ์ž‘์—…์ด CPU๋ฅผ ๋…์ ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜์—ฌ ์‹œ์Šคํ…œ์˜ ์‘๋‹ต์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ด.

  • ๋‹จ์  : ์žฆ์€ ๋ฌธ๋งฅ ๊ตํ™”์œผ๋กœ ์ธํ•ด ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ.


์ฃผ์š” ์Šค์ผ€์ค„๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜

1. ์„ ์ž…์„ ์ถœ ์Šค์ผ€์ค„๋ง(First Come First Served, FCFS)

  • ๋ฐฉ์‹ : ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•œ ์ˆœ์„œ๋Œ€๋กœ CPU๋ฅผ ํ• ๋‹นํ•จ.

  • ํŠน์ง• : ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜์ง€๋งŒ, ๊ธด ์ž‘์—…์ด ์•ž์— ์žˆ์„ ๊ฒฝ์šฐ ํ˜ธ์œ„ ํšจ๊ณผ๋กœ ์ธํ•ด ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ.

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

  • ๋ฐฉ์‹ : ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง์€ ํ”„๋กœ์„ธ์Šค์— ์šฐ์„ ์ ์œผ๋กœ CPU๋ฅผ ํ• ๋‹นํ•จ.

  • ํŠน์ง• : ์ด๋ก ์ ์œผ๋กœ ํ‰๊ท  ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜์ง€๋งŒ, ๊ฐ ํ”„๋กœ์„ธ์Šค์˜ ์‹คํ–‰ ์‹œ๊ฐ„์„ ์‚ฌ์ „์— ์ •ํ™•ํžˆ ์•Œ๊ธฐ ์–ด๋ ค์›€. ๋˜ํ•œ, ๊ธด ์ž‘์—…์ด ๊ณ„์†ํ•ด์„œ ๋’ค๋กœ ๋ฐ€๋ ค ๊ธฐ์•„(Starvation) ์ƒํƒœ์— ๋น ์งˆ ์ˆ˜ ์žˆ์Œ.

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

  • ๋ฐฉ์‹ : ๊ฐ ํ”„๋กœ์„ธ์Šค์— ๋™์ผํ•œ ์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰(Time Quantum) ์„ ๋ถ€์—ฌํ•˜๊ณ , ์ด๋ฅผ ์ˆœํ™˜ํ•˜๋ฉฐ CPU๋ฅผ ํ• ๋‹นํ•จ.

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

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

  • ๋ฐฉ์‹ : ๊ฐ ํ”„๋กœ์„ธ์Šค์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•˜๊ณ , ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ํ”„๋กœ์„ธ์Šค์— ๋จผ์ € CPU ๋ฅผ ํ• ๋‹นํ•จ.

  • ํŠน์ง• : ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๋Š” ๊ธฐ์•„ ์ƒํƒœ์— ๋น ์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์—์ด์ง•(Aging) ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋žœ ์‹œ๊ฐ„ ๋Œ€๊ธฐํ•œ ํ”„๋กœ์„ธ์Šค์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ ์ง„์ ์œผ๋กœ ๋†’์ž„.

5. ๋‹ค๋‹จ๊ณ„ ํ ์Šค์ผ€์ค„๋ง(Multilevel Queue Scheduling)

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

  • ํŠน์ง• : ํ”„๋กœ์„ธ์Šค์˜ ํŠน์„ฑ์— ๋งž๊ฒŒ ์Šค์ผ€์ค„๋งํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ ๊ฐ„ ์ด๋™์ด ๋ถˆ๊ฐ€๋Šฅํ•˜์—ฌ ์œ ์—ฐ์„ฑ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Œ.

6. ๋‹ค๋‹จ๊ณ„ ํ”ผ๋“œ๋ฐฑ ํ ์Šค์ผ€์ค„๋ง(Multilevel Feedback Queue Scheduling)

  • ๋ฐฉ์‹ : ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹คํ–‰๋˜๋ฉด์„œ ๋‹ค๋ฅธ ํ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜์—ฌ, ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ •ํ•จ.

  • ํŠน์ง• : ๊ธฐ์•„ ์ƒํƒœ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋ฏธ๋‚˜, ๊ตฌํ˜„์ด ๋ณต์žกํ•จ.

Last updated

Was this helpful?