CPU ์ค์ผ์ค๋ฌ ์ ๋ต (FCFS, SJF, HRN, SRT, Round Robin, Multi-Level Queue)
CPU ์ค์ผ์ค๋ง
- ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ํ๋ก์ธ์ค๋ค ์ค ์ด๋ค ํ๋ก์ธ์ค๋ฅผ ๋จผ์ ์ฒ๋ฆฌํ ์ง ์์๋ฅผ ์ ํ๋ ๊ฒ์ด๋ค.
- Ready Queue์ ์๋ ํ๋ก์ธ์ค๋ค ์ค์ ๋๊ตฌ์๊ฒ CPU๋ฅผ ํ ๋นํด ์ค ๊ฒ์ธ์ง ์ ํ๋ค.
์ ํ์ํ ๊น?
- CPU๋ ํ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์คํ์ํฌ ์ ์๋ค.
- ํน์ ํ๋ก์ธ์ค๊ฐ I/O ์์ฒญ์ ์ํด ๋๊ธฐํด์ผํ ๊ฒฝ์ฐ CPU๋ ๊ทธ์ ๋๊ณ ์๊ฒ ๋๋ค.
- ๋ค์ค ํ๋ก๊ทธ๋๋ฐ์์๋ ์ด๋ฌํ ์๊ฐ์ ์์ฐ์ ์ผ๋ก ํ์ฉํ๊ณ ์ CPU๋ฅผ ๊ทธ ํ๋ก์ธ์ค๋ก๋ถํฐ ํ์ํด ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋นํ๋ค. (Context Switching)
- CPU ์ด์ฉ๋ฅ ์ฆ๊ฐ : ํ๋ก์ธ์ค ์คํ ๊ณผ์ ์์ ์ฃผ ๊ธฐ์ต์ฅ์น๋ฅผ ์ก์ธ์คํ๋ค๋ ์ง, ์ ์ถ๋ ฅ ๋ช ๋ น์คํ ๋ฑ์ ์์ธ์ ์ํด ๋ฐ์ํ ์ ์๋ CPU์ ๋ญ๋น ์๊ฐ์ ์ค์ด๊ณ , CPU๊ฐ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋๋ฐ ์ฌ์ฉ๋๋ ์๊ฐ ๋น์จ์ ์ฆ๊ฐ์ํต๋๋ค.
.
๋น์ ์ ์ค์ผ์ค๋ง
- ์ด๋ค ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ๊ณ ์๋ค๋ฉด ํด๋น ํ๋ก์ธ์ค์ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ ๋ก CPU๋ฅผ ๋นผ์์ ์ฌ์ฉํ ์ ์๋ ์ค์ผ์ค๋ง ๊ธฐ๋ฒ์ด๋ค.
- ์ข ๋ฅ : FCFS, SJF, ์ฐ์ ์์, HRN, ๊ธฐํ๋ถ ์๊ณ ๋ฆฌ์ฆ
์ ์ ์ค์ผ์ค๋ง
- ํ๋์ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ๊ณ ์์ ๋, ์ฐ์ ์์๊ฐ ๋์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ๊ฐ์ ๋ก ๋นผ์์ ์ฌ์ฉํ ์ ์๋ ์ค์ผ์ค๋ง ๊ธฐ๋ฒ์ด๋ค.
- ์ข ๋ฅ : Round Robin, SRT, ์ ์ ์ฐ์ ์์, ๋ค๋จ๊ณ ํ, ๋ค๋จ๊ณ ํผ๋๋ฐฑ ํ ์๊ณ ๋ฆฌ์ฆ
๋น์ ์ ์ค์ผ์ค๋ง
1) FCFS (First Come First Served)
- ํ๋ก์ธ์ค๊ฐ Ready Queue์ ๋์ฐฉํ ์์๋๋ก CPU๋ฅผ ํ ๋นํ๋ ๋น์ ์ ํ ๋ฐฉ์์ด๋ค.
- ๋ชจ๋ ํ๋ก์ธ์ค์ ์ฐ์ ์์๊ฐ ๋์ผํ๊ณ , ํ๋ก์ธ์ค์ CPU ์ฒ๋ฆฌ ์๊ฐ์ ๋ฐ๋ก ๊ณ ๋ คํ์ง ์๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋จ์ํ๊ณ ๊ณตํํ ๋ฐฉ๋ฒ์ด๋ค.
- ์์ ์๋ฃ ์๊ฐ์ ์์ธกํ๊ธฐ ์ฉ์ดํ๋ค.
- CPU ์ฒ๋ฆฌ ์๊ฐ์ด ๊ธธ์ง๋ง ๋ ์ค์ํ ์์
์ด, CPU ์ฒ๋ฆฌ ์๊ฐ์ด ์งง๊ณ ๋ ์ค์ํ ์์
์ ๊ธฐ๋ค๋ฆฌ๊ฒ ํ ์๋ ์๋ค.
→ ์ด๋ฅผ ์ฝ๋ณด์ด ํจ๊ณผ๋ผ๊ณ ํ๋ค.
- ์ฝ๋ณด์ด ํจ๊ณผ : CPU๋ฅผ ๋งค์ฐ ์ค๋ ์ฌ์ฉํ๋ ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ๊ฒ ๋๋ฉด, ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ๊ธฐ๋ค๋ฆฌ๋ ๋๊ธฐ ์๊ฐ์ด ๋งค์ฐ ์ปค์ง๋ ํ์
2) SJF (Shortest Job First)
- Ready Queue์ ์๋ ํ๋ก์ธ์ค ์ค CPU ์ฒ๋ฆฌ ์๊ฐ์ด ์งง์ ์์๋๋ก CPU๋ฅผ ํ ๋นํ๋ ๋น์ ์ ํ ๋ฐฉ์์ด๋ค.
- ๋ฆ๊ฒ ๋์ฐฉํ๋๋ผ๋ CPU ์ฒ๋ฆฌ ์๊ฐ์ด ์์ ๋๊ธฐ์ค์ธ ํ๋ก์ธ์ค๋ณด๋ค ์งง์ผ๋ฉด ๋จผ์ CPU๋ฅผ ํ ๋น๋ฐ์ ์ ์๋ค. → ์ฝ๋ณด์ด ํจ๊ณผ ์ํ
- ๋ชจ๋ ๋ฐฉ์์ ํตํ์ด ํ๊ท ๋๊ธฐ ์๊ฐ์ ๊ฐ์ฅ ์งง๊ฒ ๋ง๋๋ ๋ฐฉ์์ผ๋ก ์๋ ค์ ธ ์๋ค.
- CPU ์ฒ๋ฆฌ ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค์ ๊ฒฝ์ฐ ์ฒ๋ฆฌ ์๊ฐ์ด ์งง์ ํ๋ก์ธ์ค๊ฐ ๊ณ์ํด์ ๋ค์ด์ค๋ฉด Ready Queue์์ ๋ฌดํ์ CPU๋ฅผ ๊ธฐ๋ค๋ ค์ผ ํ๋ ์ํฉ์ด ๋ฐ์ํ ์ ์๋ค.
→ ์ด๋ฅผ ๊ธฐ์(starvation) ํ์์ด๋ผ๊ณ ํ๋ค.
- ๊ธฐ์(starvation) ํ์ : ์์ ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค ๋๋ฌธ์ ์ค๋ซ๋์ CPU ํ ๋น์ ๋ฐ์ง ๋ชปํ๊ณ ๋ฌดํ์ ๊ธฐ๋ค๋ฆฌ๋ ํ์
3) HRN(Highest Response ratio Next)
- SJF ์ค์ผ์ค๋ง ๋ฐฉ์์์ ๋ฐ์ํ ์ ์๋ ๊ธฐ์ ์ํ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ณ ์๋ ๋ฐฉ์์ด๋ค.
- ์ฐ์ ์์๋ฅผ ๋จ์ํ CPU ์ฒ๋ฆฌ ์๊ฐ์ผ๋ก ๊ฒฐ์ ํ์ง ์๊ณ , Ready Queue์์ ๋๊ธฐํ ์๊ฐ๊น์ง ๊ณ ๋ คํ์ฌ ๊ฒฐ์ ํ๋ค. --> aging ๊ธฐ๋ฒ
- aging(๋ ธํ) ๊ธฐ๋ฒ : ๊ธฐ์ํ์์ ํด๊ฒฐํ๊ธฐ ์ํ ๊ธฐ๋ฒ์ผ๋ก ์ค๋ซ๋์ ๊ธฐ๋ค๋ฆฐ ํ๋ก์ธ์ค์๊ฒ ๊ธฐ๋ค๋ฆฐ ์๊ฐ์ ๋น๋กํ์ฌ ์ฐ์ ์์๋ฅผ ๋์ฌ์ฃผ๋ ๊ธฐ๋ฒ
HRN ์ค์ผ์ค๋ง ๋ฐฉ์์ด ์ ์ ์ผ ๊ฒฝ์ฐ์ ์ฐ์ ์์๊ฐ ๋์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ด ๋๋ฌด ์์ฃผ ์๊ธฐ๊ธฐ ๋๋ฌธ์ Context Switching์ด ๋๋ฌด ์์ฃผ ๋ฐ์ํ๋ค. ์ด์ ๋ฐ๋ผ ์ค์ผ์ค๋ฌ์ ์ผ์ด ๋๋ฌด ๋์ด๋๊ธฐ ๋๋ฌธ์ HRN ์ค์ผ์ค๋ง ๋ฐฉ์์ ๋น์ ์ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
์ง๊ธ๊น์ง ์ค๋ช ๋ง ์ฝ์ด๋ดค๋ค๋ฉด FCFS ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ฌ์ฉํ ํ๋ฑ์ ์ด์ ๊ฐ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค. HRN ์ค์ผ์ค๋ง ๋ฐฉ์์ด ๋ค๋ฅธ ๋น์ ์ ์ค์ผ์ค๋ง ๋ฐฉ์์ ๋นํด ์ด์์ ์ผ๋ก ํจ์ฌ ์ฐ์ํด ๋ณด์ด๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก SJF, HRN ๋ฑ์ ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ ์ด๋ ค์ด ์ด์ ๊ฐ ์๋๋ฐ, ํ์ค์ ์ธ ์ํฉ์์๋ ํ๋ก์ธ์ค๋ง๋ค CPU ์ฒ๋ฆฌ ์๊ฐ์ด ์ผ๋ง๋ ๊ฑธ๋ฆด์ง ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ SRT ์ค์ผ์ค๋ง ๋ฐฉ์์์๋ ๋์ผํ๊ฒ ์ ์ฉ๋๋ ๋ถ๋ถ์ด๋ค.
4) ์ฐ์ ์์ (Priority)
- ๋๊ธฐ์ค์ธ ํ๋ก์ธ์ค๋ค์๊ฒ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํด ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ๋จผ์ ํ ๋นํ๋ค.
- ์ฐ์ ์์๊ฐ ๊ฐ์ ํ๋ก์ธ์ค๋ค์ ๋ณดํต FCFS ์์๋ก ์ค์ผ์ค ๋๋ค.
- ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ ์ค๋ซ๋์ CPU ํ ๋น์ ๋ฐ์ง ๋ชปํ๊ณ ๋ฌดํ์ ๊ธฐ๋ค๋ฆด ์ ์๋ค. (๊ธฐ์ ํ์)
- ๋๊ธฐ์๊ฐ์ด ๋์ด๋ ์๋ก ํ๋ก์ธ์ค๋ค์ ์ฐ์ ์์๋ฅผ ์ฆ๊ฐ์ํจ๋ค. → aging ๊ธฐ๋ฒ์ผ๋ก ๊ธฐ์ ์ํ ๋ฐฉ์ง
- ์ ์ ํ์ด๊ฑฐ๋ ๋๋ ๋น์ ์ ํ์ด ๋ ์ ์๋ค.
์ ์ ์ค์ผ์ค๋ง
1) SRT(Shortest Remaining Time)
- SJF ๋ฐฉ์์ ์ ์ ์ค์ผ์ค๋ง ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํ ๊ธฐ๋ฒ์ด๋ค.
- CPU๋ฅผ ์ ์ ์ค์ธ ํ๋ก์ธ์ค๋ณด๋ค ๋จ์ CPU ์ฒ๋ฆฌ ์๊ฐ์ด ์งง์ ํ๋ก์ธ์ค๊ฐ Ready Queue์ ๋ค์ด์ฌ ๊ฒฝ์ฐ ์๋ก ๋ค์ด์จ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ ์ ์๋ค.
- ์ด๋ค ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค ํ๊ท ๋๊ธฐ ์๊ฐ์ด ๊ฐ์ฅ ์งง์ ์๊ณ ๋ฆฌ์ฆ์ด์ง๋ง, ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ ํ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ์ฆ์ Context Switching์ด ์ผ์ด๋๊ณ ๊ทธ์ ๋ฐ๋ฅธ ์ค๋ฒํค๋๊ฐ ์ปค์ง๋ค.
- starvation ํ์์ด ๋ ์ฌ๊ฐํ๊ฒ ๋ฐ์ํ ์ ์๋ค.
- CPU ์ฒ๋ฆฌ ์๊ฐ์ ์์ธกํ๊ธฐ๊ฐ ํ๋ค๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ์ฌ์ฉ๋๊ธฐ ์ด๋ ต๋ค.
2) ์ฐ์ ์์ (Priority)
SJF์ SRT์ ๊ด๊ณ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋น์ ์ ์ฐ์ ์์ ์ค์ผ์ค๋ง, ์ ์ ์ฐ์ ์์ ์ค์ผ์ค๋ง์ด ์๋ค.
3) ๋ผ์ด๋ ๋ก๋น(Round Robin)
- FCFS ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ ์ ์ค์ผ์ค๋ง ๋ฐฉ์๊ณผ Time Quantum ๊ฐ๋ ์ ์ถ๊ฐํ ๋ฐฉ์์ด๋ค.
- ํ๋ก์ธ์ค์๊ฒ ๊ฐ๊ฐ ๋์ผํ CPU ํ ๋น ์๊ฐ(ํ์ ์ฌ๋ผ์ด์ค, quantum)์ ๋ถ์ฌํด์ ๊ทธ ์๊ฐ ๋์๋ง CPU๋ฅผ ์ด์ฉํ๊ฒ ํ๋ค.
- ์ด๋ค ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฌ์ฉํ ์๊ฐ์ด Time Quantum๋งํผ ์ง๋๋ฉด ์ด ํ๋ก์ธ์ค๋ก๋ถํฐ CPU ์์์ ํ์ํ๊ณ , ์ด ํ๋ก์ธ์ค๋ฅผ Ready Queue์ ๊ฐ์ฅ ๋ค๋ก ๋ณด๋ด๋ ๊ฒ์ด๋ค.
- ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ์ต์ด ์๋ต ์๊ฐ์ ๋น ๋ฅด๊ฒ ๋ณด์ฅ๋ฐ์ ์ ์๋ค๋ ํฐ ์ฅ์ ์ด ์๋ค.
์์ฐ์ค๋ฝ๊ฒ ์ฝ๋ณด์ด ํจ๊ณผ ์ญ์ ์ค์ด๋ ๋ค. - ์ ๋นํ Time Quantum์ ์ค์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค.
- ํฌ๋ฉด CPU ์ฒ๋ฆฌ ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ค๋ ์ ์ ํ๋ฉฐ ์ ์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ ์ด ํ๋ก์ธ์ค์ ์์ ์ด ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ตญ FCFS ์ค์ผ์ค๋ง ๋ฐฉ์์์ ๋ฐ์ํ๋ ์ฝ๋ณด์ด ํจ๊ณผ๊ฐ ๋ ๋ฐ์ํ๋ค.
- ์์ผ๋ฉด ์ฆ์ Context Switching์ผ๋ก ์ค๋ฒํค๋๊ฐ ์๋นํ ์ปค์ง๋ค.
- ๋ณดํต 10-100ms๋ก ์ค์ ํ๋ค.
4) ๋ค๋จ๊ณ ํ(Multi-Level Queue)
- ํ๋ก์ธ์ค๋ฅผ ์ด๋ค ํ๋ก์ธ์ค๋์ ๋ฐ๋ผ ์ฌ๋ฌ ์ข ๋ฅ์ ๊ทธ๋ฃน์ผ๋ก ๋๋๊ณ , ๊ทธ๋ฃน๋ง๋ค Queue๋ฅผ ๋๋ ๋ฐฉ์์ด๋ค. ํ ๋ง๋๋ก Ready Queue๋ฅผ ์ฌ๋ฌ ๊ฐ๋ก ๋๋์ด ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.
- ๊ฐ๊ฐ์ Queue๋ง๋ค ์๋ก ๋ค๋ฅธ ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ ์ฉํ ์๋ ์๋ค.
- ์ฐ์ ์์๊ฐ ๋์ ํ์ ๋จผ์ CPU๊ฐ ํ ๋น๋์ด ํ์ ์ํ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ์ฒ๋ฆฌ๋์ด์ผ ๋ค์ ์ฐ์ ์์ ํ๊ฐ ์คํ๋ ์ ์๋ค.
- ํ ๋ฒ ์ฐ์ ์์๊ฐ ๋งค๊ฒจ์ ธ ์ค๋น ํ์ ๋ค์ด๊ฐ๋ฉด ์ด ์ฐ์ ์์๋ ๋ฐ๋์ง ์๋๋ค. ์ฆ, ํ๋ค ์ฌ์ด๋ฅผ ์ด๋ํ ์ ์๋ค.
- starvation ํ์๊ณผ ๊ณตํ์ฑ ๋ฌธ์ ๊ฐ ์๋ค.
์ด ๋ฐฉ์์ ๋ํด ์ดํดํ๋ ค๋ฉด ๋จผ์ Foreground Queue์ Background Queue์ ๋ํด ์๊ณ ๊ฐ์ผ ํ๋ค.
์ด์์ฒด์ ๋ ํ๋ก์ธ์ค๋ฅผ ๋ถ๋ฅํ ๋ ์ฌ์ฉ์์ ์ง์ ์ํธ์์ฉํ๋ ํ๋ก์ธ์ค์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์๊ฐ๋ ํ๋ก์ธ์ค์ ์ค์๋๋ฅผ ๋ค๋ฅด๊ฒ ๋ถ๋ฅํ๋ค. ์ฌ์ฉ์์ ์ง์ ์ํธ์์ฉํ๋ ํ๋ก์ธ์ค๋ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋์ด์ผ ํ๊ณ , ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ผ๊ด ์ฒ๋ฆฌ๋๋ ํ๋ก์ธ์ค์ ๊ฒฝ์ฐ ๋ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋์ด๋ ๊ด์ฐฎ๋ค๊ณ ๋ถ๋ฅํ๋ ๊ฒ์ด๋ค.
์ฌ๋๋ค์ ๋๋ถ๋ถ ์ง๊ธ ๋ด๊ฐ ๋ณด๊ณ ์๋ ํ๋ก์ธ์ค์์ ์ํธ์์ฉ์ด ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ๋๊ธฐ๋ฅผ ๋ฐ๋ผ์ง ์ผ๋จ ์ผ๋๊ณ ์ค๋ ๋ฐฉ์นํ ํ๋ก์ธ์ค์ ์ํธ์์ฉํ๋๋ผ ๋ด๊ฐ ๋ณด๊ณ ์๋ ํ๋ก์ธ์ค์ ๋ ์ด ๊ฑธ๋ฆฌ๋ ์ํฉ์ ๋ฐ๋ผ์ง ์๋๋ค.
๋ฐ๋ผ์ ์ฌ์ฉ์์ ์ง์ ์ํธ์์ฉํ๋ ํ๋ก์ธ์ค๊ฐ ๋ชจ์ธ Foreground Queue์๋ ์๋ต ์๊ฐ์ ์ค์ด๊ธฐ ์ํด ๋ผ์ด๋๋ก๋น ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ ์ฉํ๊ณ , ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์๊ฐ๋ ํ๋ก์ธ์ค๊ฐ ๋ชจ์ธ Background Queue์๋ ์๋ต ์๊ฐ์ด ํฐ ์๋ฏธ๊ฐ ์๊ธฐ ๋๋ฌธ์ FCFS ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ ์ฉํ๋ ๋ฑ ๊ฐ Queue๋ง๋ค ์ด์์ฒด์ ๊ฐ ๊ฐ์ฅ ์ ์ ํ๋ค๊ณ ํ๋จํ๋ ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ฌ์ฉํ๊ฒ ๋๋ค.
์ ์ฌ์ง์ ์๋ก ๋ค๋ฉด,
๋ํํ ํ๋ก์ธ์ค๋ฅผ ๋ด๊ธฐ ์ํ Foreground Queue์๋ ๋ผ์ด๋๋ก๋น ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ ์ฉํ๊ณ , ํ๋ก์ธ์ค ์ผ๊ด ์ฒ๋ฆฌ๊ฐ ํ์ํ Background Queue์๋ ์ผ๊ด ์ฒ๋ฆฌ์ ์ ํฉํ๋ค๊ณ ํ๋ ๋น์ ์ ๋ฐฉ์ ์ค ํ๋๋ฅผ ์ ์ฉํ๋ฉด ๋ ๊ฒ์ด๋ค.
๋ค๋ง ๋ค๋จ๊ณ ํ ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ฌ๋ฌ๊ฐ์ Queue๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ณ ๋ คํด์ผ ํ ์ ์ด ํ๋ ๋ ์๊ธด๋ค.
๋ฐ๋ก ์ด๋ค Queue์ ์ผ๋ง๋ CPU๋ฅผ ์ค๋ ํ ๋นํ ์ง ๊ฒฐ์ ํ๋ ์ค์ผ์ค๋ง์ด ํ์ํ๊ฒ ๋๋ค. ์ด ์ค์ผ์ค๋ง์ ํฌ๊ฒ ๋ ๊ฐ์ง ์ ๋๋ฅผ ๋ ์ฌ๋ฆด ์ ์๋ค.
Queue์ ์ผ๋ง๋ CPU๋ฅผ ์ค๋ ํ ๋นํ ์ง ๊ฒฐ์ ํ๋ ์ค์ผ์ค๋ง
- ๊ณ ์ ์ฐ์ ์์ (Fixed Priority)
Queue๋ง๋ค ์ฐ์ ์์๋ฅผ ๋๋ ๋ฐฉ์์ด๋ค. ์ฐ์ ์์๊ฐ ๋์ Queue์ ์ฒ๋ฆฌํด์ผ ํ ํ๋ก์ธ์ค๊ฐ ๋จ์์๋ค๋ฉด, ๋ฌด์กฐ๊ฑด ๊ทธ Queue์ ๋จ์์๋ ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ ๋ค์ ๋ค์ ์ฐ์ ์์์ Queue๋ฅผ ์๋น์คํ๋ค. ์ด ๋ฐฉ์์ ์ฌ์ฉ์๊ฐ ์ง์ ์ํ๋ ํ๋ก์ธ์ค์ CPU ์์์ ์ฐ์ ํ ๋นํ๊ธฐ ๋๋ฌธ์ ์ข์๋ณด์ด์ง๋ง SJF ์ค์ผ์ค๋ง ๋ฐฉ์์ฒ๋ผ ๊ฒฐ๊ตญ ์ฐ์ ์์๊ฐ ๋ฎ์ Queue์ ์๋ ํ๋ก์ธ์ค๋ ๋ฌดํ์ ๊ธฐ๋ค๋ ค์ผ ํ๋ ์ํฉ ์ฆ, ๊ธฐ์ ํ์์ด ๋ฐ์ํ ์ ์๋ค.
- ํ์ ์ฌ๋ผ์ด์ค (Time Slice)
๊ณ ์ ์ฐ์ ์์ ์ค์ผ์ค๋ง ๋ฐฉ์์์ ๊ธฐ์ ์ํ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ํด๊ฒฐํ๊ณ ์ ์๊ธด ์ค์ผ์ค๋ง ๋ฐฉ์์ด๋ค. ์ด์์ฒด์ ๊ฐ Time Slice๋ฅผ ๋๊ณ , ์ด ์๊ฐ ๋น์จ์ ๋ฐ๋ผ ๊ฐ๊ฐ์ Queue๋ฅผ ์๋น์คํ๊ฒ ๋๋ค. Queue๋ง๋ค ํ๋ก์ธ์ค๋ฅผ CPU์ ํ ๋นํ ์ ์๋ ์๊ฐ ๋น์จ์ด ๋ค๋ฅด๋ค. ์๋ฅผ ๋ค์ด, CPU ์์์ 75%๋ Foreground Queue, 25%๋ Background Queue๋ฅผ ์๋น์คํ๋ ๋ฐ ํ ๋นํ ์ ์๋ค.
5) ๋ค๋จ๊ณ ํผ๋๋ฐฑ ํ(Multi-Level Feedback Queue)
- ๋ค๋จ๊ณ ํผ๋๋ฐฑ ํ ์ค์ผ์ค๋ง ๋ฐฉ์์ ๋ค๋จ๊ณ ํ ์ค์ผ์ค๋ง ๋ฐฉ์์ aging ๊ธฐ๋ฒ์ ์ ์ฉํ ๋ฐฉ์์ด๋ค.
- ์ฐ์ ์์๊ฐ ๋ณ๋๋๊ธฐ ๋๋ฌธ์ ํ ์ฌ์ด์ ์ด๋์ด ๊ฐ๋ฅํ๋ค.
- ์ฐ์ ์์ ๐ : ์ฐ์ ์์๊ฐ ๋ฎ์ ํ์์ ๋๋ฌด ์ค๋ ๊ธฐ๋ค๋ฆฐ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ์ ์ ์ฌ๋ ค์ ์ฐ์ ์์๊ฐ ๋์ ํ๋ก ์ฎ๊ฒจ์ค๋ค. -> starvation์ ์๋ฐฉ
- ์ฐ์ ์์ ๐ : ํ ๋ฒ CPU๋ฅผ ํ ๋น๋ฐ์ ํ๋ก์ธ์ค๋ ์ฐ์ ์์๊ฐ ์กฐ๊ธ ๋ฎ์์ ธ ๋ ๋ฎ์ ํ๋ก ์ด๋ํ๊ฒ ๋๋ค.
- ์ฐ์ ์์๊ฐ ๋์ ํ๋ณด๋ค ๋ฎ์ ํ์ ํ์ ์ฌ๋ผ์ด์ค ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ์ค๋ค. ์ด๋ ต๊ฒ ์ป์ CPU๋ฅผ ์ข ๋ ์ค๋ซ๋์ ์ฌ์ฉํ๊ฒ ํด์ฃผ๊ธฐ ์ํจ์ด๋ค.
- I/O ์ค์ฌ์ ํ๋ก์ธ์ค์ ๋ํํ ํ๋ก์ธ์ค๋ค์ ๋์ ์ฐ์ ์์์ ํ์ ๋ฃ๋๋ค.(ํต์์ ์ผ๋ก ์งง์ CPU ๋ฒ์คํธ๊ฐ ํน์ง์ด๋ค.)