CPU Scheduling

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

1. ์‹œ์Šคํ…œ ์ž…์žฅ์—์„œ์˜ ์„ฑ๋Šฅ ์ฒ™๋„

  • CPU Utilization(CPU ์ด์šฉ๋ฅ ) : ์ „์ฒด ์‹œ๊ฐ„ ์ค‘ CPU๊ฐ€ ์ผ์„ ํ•˜๋Š” ์‹œ๊ฐ„์˜ ๋น„์œจ

  • Throughput(์ฒ˜๋ฆฌ๋Ÿ‰) : ๋‹จ์œ„ ์‹œ๊ฐ„๋‹น ์ž‘์—…์˜ ์ˆ˜, ๋‹จ์œ„ ์‹œ๊ฐ„๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ช‡๊ฐœ ์™„๋ฃŒ์‹œ์ผฐ๋Š”๊ฐ€

2. ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ์˜ ์„ฑ๋Šฅ ์ฒ™๋„

  • Turnaround Time(๋ฐ˜ํ™˜ ์‹œ๊ฐ„) : ์ž‘์—…์„ ์š”์ฒญํ•œ ์‹œ์ ๋ถ€ํ„ฐ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„

  • Waiting Time(๋Œ€๊ธฐ ์‹œ๊ฐ„) : ์ž‘์—…์„ ์š”์ฒญํ•œ ์‹œ์ ๋ถ€ํ„ฐ ์ž‘์—…์ด ์‹œ์ž‘๋  ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„

  • Response Time(์‘๋‹ต ์‹œ๊ฐ„) : ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์—…์„ ์š”์ฒญํ•œ ์‹œ์ ๋ถ€ํ„ฐ ์ฒซ ๋ฒˆ์งธ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„

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

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

๋น„์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง

1. FCFS(First Come First Served)

๋จผ์ € ์˜จ ์ž‘์—…์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

img.png

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

2. SJF(Shortest Job First)

์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์งง์€ ์ž‘์—…์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

img_1.png

FCFS์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ ๋ฐฉ์‹์ด๋‹ค. ํ•˜์ง€๋งŒ ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ •ํ™•ํžˆ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ์‹คํ–‰ ์‹œ๊ฐ„์ด ๊ธด ํ”„๋กœ์„ธ์Šค์˜ ๊ฒฝ์šฐ ์˜์›ํžˆ CPU๋ฅผ ์–ป์ง€ ๋ชปํ•˜๋Š” ๊ธฐ์•„ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

3. HRN(Highest Response-ratio Next)

SJF ์Šค์ผ€์ค„๋ง์˜ ๊ธฐ์•„ ์ƒํƒœ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๋ฐฉ์‹์ด๋‹ค.

์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ณ„์‚ฐํ•ด์„œ ๊ฐ€์žฅ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์šฐ์„ ์ˆœ์œ„ = (๋Œ€๊ธฐ ์‹œ๊ฐ„ + ์‹คํ–‰ ์‹œ๊ฐ„) / ์‹คํ–‰ ์‹œ๊ฐ„

์„ ์ ํ˜• ์Šค์ผ€์ค„๋ง

1. Priority Scheduling

์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

SJF๋„ ์ผ์ข…์˜ ์šฐ์„ ์ˆœ์œ„ ์Šค์ผ€์ค„๋ง์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ณ  SJF์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ธฐ์•„ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Aging์ด๋ผ๋Š” ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. Aging์€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์ด ๊ธธ์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋†’์—ฌ์ฃผ๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.

2. Round Robin

์‹œ๋ถ„ํ•  ์‹œ์Šคํ…œ์„ ์œ„ํ•ด ์„ค๊ณ„๋œ ๋ฐฉ์‹์œผ๋กœ ํ”„๋กœ์„ธ์Šค์— ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋‘์ง€ ์•Š๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์‹œ๊ฐ„๋‹จ์œ„(Time Quantum)๋กœ CPU๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

๋ณดํ†ต ์‹œ๊ฐ„ ๋‹จ์œ„๋Š” 10 ms ~ 100 ms ์ •๋„์ด๋ฉฐ, ์‹œ๊ฐ„ ๋‹จ์œ„๋™์•ˆ ์ˆ˜ํ–‰ํ•œ ํ”„๋กœ์„ธ์Šค๋Š” CPU๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ค€๋น„ ํ์˜ ๋งจ ๋’ค๋กœ ๊ฐ€์„œ ๋‹ค์‹œ ์ค„์„ ์„ ๋‹ค.

img_2.png

3. Shortest Remaining Time

SJF ์Šค์ผ€์ค„๋ง์˜ ์„ ์ ํ˜• ๋ฒ„์ „์ด๋‹ค.

์ฐจ์ด๋Š” ์„ ์ ํ˜•์œผ๋กœ ๋ฐ”๋€Œ์–ด ์‹คํ–‰ ์ค‘์— ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ค‘๋‹จ์‹œํ‚ค๊ณ  CPU๋ฅผ ๊ฐ•์ œ๋กœ ํšŒ์ˆ˜ํ•œ๋‹ค.

img_3.png

4. Multi Level Queue

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

ํ๋“ค ๊ฐ„์˜ ํ”„๋กœ์„ธ์Šค ์ด๋™์ด ๋ถˆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์Šค์ผ€์ค„๋ง ๋ถ€๋‹ด์ด ์ ์ง€๋งŒ ์œ ์—ฐ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ค๋žซ๋™์•ˆ CPU๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ธฐ์•„ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

img_4.png

5. Multi Level Feedback Queue

๋‹ค๋‹จ๊ณ„ ํ”ผ๋“œ๋ฐฑ ํ(MLFQ) : ๋‹ค๋‹จ๊ณ„ ํ์—์„œ ํ ์‚ฌ์ด์˜ ํ”„๋กœ์„ธ์Šค ์ด๋™์„ ํ—ˆ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

FCFS์™€ Round Robin์„ ๊ฒฐํ•ฉํ•œ ๋ฐฉ์‹์œผ๋กœ, FCFS ์ˆœ์„œ๋กœ CPU๋ฅผ ํ• ๋‹น๋ฐ›์•„ ์‹คํ–‰๋œ๋‹ค ๋งŒ์•ฝ ์‹œ๊ฐ„ ๋‹จ์œ„๊ฐ€ ์ง€๋‚˜๋„ ์‹คํ–‰์ด ์™„๋ฃŒ๋˜์ง€ ์•Š์œผ๋ฉด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ๋กœ ์ด๋™ํ•œ๋‹ค. ์ด ๋•Œ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋‚ฎ์„์ˆ˜๋ก ์‹œ๊ฐ„ ๋‹จ์œ„๊ฐ€ ๊ธธ์–ด์ ธ ๋ณด์™„์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์—์„œ FCFS ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

img_5.png

- MLQ์™€ MLFQ์˜ ์ฐจ์ด์ 

  • MLQ๋Š” ํ ์‚ฌ์ด์˜ ํ”„๋กœ์„ธ์Šค ์ด๋™์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

  • MLFQ๋Š” ํ ์‚ฌ์ด์˜ ํ”„๋กœ์„ธ์Šค ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ๊ทธ๋ž˜์„œ MLQ ์Šค์ผ€์ค„๋ง์€ ์Šค์ผ€์ค„๋ง ๋ถ€๋‹ด์ด ์ ์ง€๋งŒ ์œ ์—ฐ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.

  • MLQ ์Šค์ผ€์ค„๋ง์˜ ๊ฒฝ์šฐ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์˜ค๋žซ๋™์•ˆ CPU๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ธฐ์•„ ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

  • MLFQ ์Šค์ผ€์ค„๋ง์˜ ๊ฒฝ์šฐ Aging ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ์•„ ์ƒํƒœ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค.(์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ํ์—์„œ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๋Œ€๊ธฐํ•˜๋ฉด ๋‹ค์‹œ ์ƒ์œ„ ํ๋กœ ์ด๋™)

Last updated