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)
๋จผ์ ์จ ์์ ์ ๋จผ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด๋ค.

๊ฐ๋ ๋ ์ฝ๊ณ ๊ณตํํด ๋ณด์ด์ง๋ง ๋์ฐฉํ ์์๋๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋๊ธฐ ์๊ฐ์ด ๊ธธ์ด์ง๋ ํ์์ด ๋ฐ์ํ๋ค. ์ด๋ฌํ ํ์์ ๋ณ๋ชฉํ์์ด๋ผ๊ณ ํ๋ฉฐ, ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด SJF ์ค์ผ์ค๋ง์ด ๋ฑ์ฅํ์๋ค.
2. SJF(Shortest Job First)
์คํ ์๊ฐ์ด ๊ฐ์ฅ ์งง์ ์์ ์ ๋จผ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด๋ค.

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๋ฅผ ๋ฐํํ๊ณ ์ค๋น ํ์ ๋งจ ๋ค๋ก ๊ฐ์ ๋ค์ ์ค์ ์ ๋ค.

3. Shortest Remaining Time
SJF ์ค์ผ์ค๋ง์ ์ ์ ํ ๋ฒ์ ์ด๋ค.
์ฐจ์ด๋ ์ ์ ํ์ผ๋ก ๋ฐ๋์ด ์คํ ์ค์ ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ๋ฉด ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ์ค๋จ์ํค๊ณ CPU๋ฅผ ๊ฐ์ ๋ก ํ์ํ๋ค.

4. Multi Level Queue
๋ค๋จ๊ณ ํ(MLQ) : ์ปค๋ ๋ด์ ์ค๋น ํ๋ฅผ ์ฌ๋ฌ ๊ฐ์ ํ๋ก ๋ถ๋ฆฌํ์ฌ ํ ์ฌ์ด์๋ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉ์์ด๋ค. ๊ฐ๊ฐ์ ํ์ ๋ํด ๋ค๋ฅธ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ์ ์๋ค.
ํ๋ค ๊ฐ์ ํ๋ก์ธ์ค ์ด๋์ด ๋ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ์ค์ผ์ค๋ง ๋ถ๋ด์ด ์ ์ง๋ง ์ ์ฐ์ฑ์ด ๋จ์ด์ง๋ค. ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๊ฐ ์ค๋ซ๋์ CPU๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋ ๊ธฐ์ ์ํ๊ฐ ๋ฐ์ํ ์ ์๋ค.

5. Multi Level Feedback Queue
๋ค๋จ๊ณ ํผ๋๋ฐฑ ํ(MLFQ) : ๋ค๋จ๊ณ ํ์์ ํ ์ฌ์ด์ ํ๋ก์ธ์ค ์ด๋์ ํ์ฉํ๋ ๋ฐฉ์์ด๋ค.
FCFS์ Round Robin์ ๊ฒฐํฉํ ๋ฐฉ์์ผ๋ก, FCFS ์์๋ก CPU๋ฅผ ํ ๋น๋ฐ์ ์คํ๋๋ค ๋ง์ฝ ์๊ฐ ๋จ์๊ฐ ์ง๋๋ ์คํ์ด ์๋ฃ๋์ง ์์ผ๋ฉด ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก ์ด๋ํ๋ค.
์ด ๋ ์ฐ์ ์์๊ฐ ๋ฎ์์๋ก ์๊ฐ ๋จ์๊ฐ ๊ธธ์ด์ ธ ๋ณด์์ด ๊ฐ๋ฅํ๋ฉฐ, ๋ง์ง๋ง ๋จ๊ณ์์ FCFS ๋ฐฉ์์ ์ฌ์ฉํ๋ค.

- MLQ์ MLFQ์ ์ฐจ์ด์
MLQ๋ ํ ์ฌ์ด์ ํ๋ก์ธ์ค ์ด๋์ด ๋ถ๊ฐ๋ฅํ๋ค.
MLFQ๋ ํ ์ฌ์ด์ ํ๋ก์ธ์ค ์ด๋์ด ๊ฐ๋ฅํ๋ค.
๊ทธ๋์ MLQ ์ค์ผ์ค๋ง์ ์ค์ผ์ค๋ง ๋ถ๋ด์ด ์ ์ง๋ง ์ ์ฐ์ฑ์ด ๋จ์ด์ง๋ค.
MLQ ์ค์ผ์ค๋ง์ ๊ฒฝ์ฐ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๊ฐ ์ค๋ซ๋์ CPU๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋ ๊ธฐ์ ์ํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
MLFQ ์ค์ผ์ค๋ง์ ๊ฒฝ์ฐ Aging ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ๊ธฐ์ ์ํ๋ฅผ ํด๊ฒฐํ๋ค.(์ฐ์ ์์๊ฐ ๋ฎ์ ํ์์ ๋๋ฌด ์ค๋ ๋๊ธฐํ๋ฉด ๋ค์ ์์ ํ๋ก ์ด๋)
Last updated