ํ๋ก์ธ์ค๋ CPU bound process์ I/O bound process๋ก ํฌ๊ฒ ๋ ์ข ๋ฅ๋ก ๋๋๋ค.
CPU bound process
- CPU burst๊ฐ ํฐ ํ๋ก์ธ์ค
- I/O๋ก๋ถํฐ ์ฒ๋ฆฌํด์ผ ํ ํ์๊ฐ ๋ณ๋ก ์๊ณ CPU๊ฐ ๊ฑฐ์ ๋ชจ๋ ์์ ์ ์ฒ๋ฆฌํด์ค์ผ ํ๋ ๊ฒฝ์ฐ
- ์ฌ์ฉ์๊ฐ ์ํ๋๋ ๊ฒ์ ๊ด์ฌํ์ง ์๋๋ค.
- e.g. ๊ธฐ์์ฒญ์์ ๋ ์จ๋ฅผ ์์ธกํ๋ ์ผ, CPU์์ ์์ฒญ๋ ์ํ ๊ณ์ฐ์ด ํ์ํ ํ ๋๊น ์ด ๊ฒฝ์ฐ์ CPU bound process.
I/O bound process
- I/O burst๊ฐ ํฐ ํ๋ก์ธ์ค
- ์ฌ์ฉ์์ ๋ํํ์ผ๋ก ๋์ํ๋ ํ๋ก์ธ์ค๋ ๋ค I/O bound process
- e.g. ์์ถ์ ํ ๋ค์์ ๋์คํฌ์ ์ฐ๊ณ , ๋ค์ ๋์คํฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ์์
ํ๋ก์ธ์ค
๋ CPU burst
์ I/O burst
๊ฐ ์๋ค๊ฐ๋ค ์๋ก ๋ฐ๋๋ฉด์ ํ๋ก๊ทธ๋จ์ ์คํํ๋ค.
CPU burst
: cpu ๋ช ๋ น์ ์คํํ๋ ๊ฒI/O burst
: I/O๋ฅผ ์์ฒญํ ๋ค์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ- cpu burst๊ฐ ์งง์ ํ๋ก๊ทธ๋จ๋ค์ ์ฌ๋๋ค๊ณผ interaction์ ํ๋ Job์ด๊ธฐ ๋๋ฌธ์ ์๋ต์๊ฐ์ด ๊ธธ์ด์ง๋ฉด ์ฌ๋์ด ์ค๋ ๊ธฐ๋ค๋ ค์ผ ํ๋ ๋ต๋ตํจ์ด ๋ฐ์๋๋ค.
cpu ์ค์ผ์ค๋ง
์ ready queue์ ๋ค์ด์์๋, ์ฆ cpu๋ฅผ ์ป๊ณ ์ํ๋ ํ๋ก์ธ์ค๋ค ์ค์์ ์ด๋ค ํ๋ก์ธ์ค์๊ฒ cpu๋ฅผ ์ค ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋ ๋ฉ์ปค๋์ฆ.
- ์ฌ๋ฌ job(=process)์ด ์์ฌ ์๊ธฐ ๋๋ฌธ์ CPU ์ค์ผ์ค๋ง์ด ํ์ํ๋ค.
- Interactive job์๊ฒ ์ ์ ํ response ์ ๊ณต ์๋ง
- CPU์ I/O ์ฅ์น ๋ฑ ์์คํ ์์์ ๊ณจ๊ณ ๋ฃจ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ
- CPU Burst๊ฐ ์งง๋ค๋ ๊ฒ์ I/O๊ฐ ์ค๊ฐ์ ๋ง์ด ๋ผ์ด์๋ค๋ ๋ป์ด๋ค.
- cpu burst์ ๋ค์ด์จ ํ๋ก๊ทธ๋จ์ด ์ฌ๋ฟ์ด ์๋๋ฐ ๋๊ตฌํํ
๋น์ฅ cpu๋ฅผ ์ค ๊ฒ์ธ๊ฐ.
- cpu๋ฅผ ์ด ํ๋ก๊ทธ๋จํํ
์คฌ์ผ๋ฉด, cpu๋ฅผ ๋ค ์ผ์ ๋ I/O๋ฅผ ํ๋ฌ ๊ฐ ๋๊น์ง cpu๋ฅผ ๊ณ์ ์ฃผ๋๋ ์๋๋ฉด ์ค๊ฐ์ cpu๋ฅผ ๋บ์ด์ ๋ค๋ฅธ ํ๋ก์ธ์คํํ
cpu๋ฅผ ๋๊ฑฐ์ค ๊ฒ์ธ๊ฐ.
- cpu๋ฅผ ๋ค ์ฐ๊ณ ๋๊ฐ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ฒ ํ๋ ๊ฒฝ์ฐ๋, ๊ธด ํ๋ก์ธ์ค ํ๋๊ฐ cpu๋ฅผ ๊ณ์ ์ ๋ด๋์ผ๋ฉด ๊ทธ ๋ค์ ์น๊ตฌ๋ค์ด ๊ณ์ํด์ ์ค ์์ ๊ธฐ๋ค๋ ค์ผ ํ๋ค.
- ๊ทธ๋์ cpu ์ค์ผ์ค๋ง์ I/O bound job, ํนํ ์ฌ๋๋คํ๊ณ interaction ํ๋ job๋ค์ด ์ง๋์น๊ฒ ์ค๋ ๊ธฐ๋ค๋ฆฌ์ง ์๊ฒ ํ๋ ๋ฐฉํฅ์ผ๋ก ํ๋ ๊ฒ์ด ์ค์ํ๋ค.
- ํจ์จ์ ์ธ ์ค์ผ์ค๋ง์ ๊ฒฐ์ ํ๋ ๋ฉ์ปค๋์ฆ์ด ํ์ํ๋ค.
- nonpreemptive scheduling(๋น์ ์ ํ ์ค์ผ์ค๋ง)
- ์ผ๋จ cpu๋ฅผ ํ ๋ฒ ์คฌ์ผ๋ฉด, ๋ค ์ฐ๊ณ I/O๋ฅผ ํ ๋๊น์ง ์์ง๋ฐ๋ฉํ ๋๊น์ง cpu๋ฅผ ๋ณด์ฅํด์ฃผ๋ ๋ฐฉ๋ฒ
- ์ผ๋จ cpu๋ฅผ ํ ๋ฒ ์คฌ์ผ๋ฉด, ๋ค ์ฐ๊ณ I/O๋ฅผ ํ ๋๊น์ง ์์ง๋ฐ๋ฉํ ๋๊น์ง cpu๋ฅผ ๋ณด์ฅํด์ฃผ๋ ๋ฐฉ๋ฒ
- preemptive scheduling(์ ์ ํ ์ค์ผ์ค๋ง)
- ํ๋ก๊ทธ๋จ์ด cpu๋ฅผ ๊ณ์ ์ฐ๊ณ ์ถ์ง๋ง ๊ฐ์ ๋ก ๋นผ์์ ์ ์๋ ๋ฐฉ์.
- ๊ฐ์ ๋ก ๋นผ์์ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก๋ timer๋ผ๋ ํ๋์จ์ด๋ฅผ ๋๊ณ timer interrupt๋ฅผ ํ ์ ์๋ค.
- ํ๋์ ์ธ cpu ์ค์ผ์ค๋ง์ ๋๋ถ๋ถ ์ด ๋ฐฉ์ ์ฌ์ฉ
์ด๋ค ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ด ์ข์์ง, ์ฑ๋ฅ ์ฒ๋
, Performance Index
cpu๋ฅผ ์ฐ๋ฌ ready queue์ ๋ค์ด์จ ํ๋ก์ธ์ค๊ฐ ๋์์ด ๋๋ค.
์์คํ ์ ์ฅ
์์์ ์ฑ๋ฅ ์ฒ๋ (์ต๋ํ ์ผ์ ๋ง์ด ์ํค๋ฉด ์ข์ ๊ฒ)- utilization(์ด์ฉ๋ฅ )
- ์ ์ฒด ์๊ฐ ์ค์์ cpu๊ฐ ๋์ง ์๊ณ ์ผํ ์๊ฐ์ ๋น์จ.
- ์ ์ฒด ์๊ฐ ์ค์์ ์ผํ ์๊ฐ์ ๋น์จ์ ๋๊ฒ ํ๋ ๊ฒ์ด ์์คํ
์
์ฅ์์ cpu๋ฅผ ์ ์ฐ๋ ๋ฐฉ๋ฒ
- throughput(์ฒ๋ฆฌ๋)
- ์ฃผ์ด์ง ์๊ฐ๋์์ ๊ณผ์ฐ ๋ช ๊ฐ์ ์ผ์ ์ฒ๋ฆฌํ๋๊ฐ
- ๊ฐ๋ฅํ ๋ง์ ์ผ์ ์ฒ๋ฆฌํ๋ฉด ์ข๋ค.
- utilization(์ด์ฉ๋ฅ )
ํ๋ก๊ทธ๋จ(๊ณ ๊ฐ) ์ ์ฅ
์์์ ์ฑ๋ฅ ์ฒ๋ (๋ด๊ฐ cpu๋ฅผ ์ป์ด์ ๋นจ๋ฆฌ ๋๋ด๋ฉด ์ข์ ๊ฒ, ์๊ฐ ๊ด๋ จ)- turnaround time(์์์๊ฐ, ํ๊ท ์๊ฐ)
- cpu๋ฅผ ์ฐ๋ฌ ๋ค์ด์์ ๋ค ์ฐ๊ณ ๋๊ฐ๋๋ฐ๊น์ง ๊ฑธ๋ฆฌ๋ ์ ์ฒด ์๊ฐ
- cpu๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ, ์ฐ๋ ์๊ฐ, ๋ค์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ, ์ฐ๋ ์๊ฐ... ์ ์ ๋ถ ํฉ์น ์๊ฐ์ ๋งํ๋ค.
- waiting time(๋๊ธฐ ์๊ฐ)
- cpu๋ฅผ ์ฐ๊ณ ์ ์์ํ๊ฒ ๊ธฐ๋ค๋ฆฐ ์๊ฐ
- ํน์ ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ฉด์ ๋ฐ๋ณต๋๋ ๋ชจ๋ ๋๊ธฐ์๊ฐ์ ํฉ์น ๊ฒ์ ๋งํ๋ค.
- response time(์๋ต ์๊ฐ) โญ๏ธ
- cpu๋ฅผ ์ฐ๊ฒ ๋ค๊ณ ready queue์ ๋ค์ด์์, ํด๋น ํ๋ก์ธ์ค๊ฐ ์ฒ์์ผ๋ก cpu๋ฅผ ์ป๊ธฐ๊น์ง ๊ฑธ๋ฆฐ ์๊ฐ
- turnaround time(์์์๊ฐ, ํ๊ท ์๊ฐ)
์ ์ ํ ์ค์ผ์ค๋ง์ cpu๋ฅผ ์ป์๋ค๊ณ ๋๊น์ง ์ฐ๋๊ฒ ์๋๋ผ,
ํ๋ก์ธ์ค๊ฐ cpu๋ฅผ ์ป์ผ๋ฉด ํ๋ฒ์ ์ญ ์ฐ๋ ๊ฒ์ด ์๋๋ผ ๋บด์๊ฒผ๋ค๊ฐ ๋ค์ ์ป๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๊ฒ ๋๋ค.
- FCFS (First-Come First-Served)
- SJF (Shortest-Job-First)
- SRTF (Shortest-Remaining-Time-First)
- Priority Scheduling
- RR (Round Robin)
- Multilevel Queue
- Multilevel Feedback Queue
- ๋น์ ์ ์ค์ผ์ค๋ง
- ๋จผ์ cpu๋ฅผ ์์ฒญํ๋ ํ๋ก์ธ์ค์ ๋จผ์ cpu๊ฐ ํ ๋น๋๋ค.
- FIFO queue๋ฅผ ์ฌ์ฉํด ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค.
- ๋ฌธ์ ์ )
convoy effect
: ๋จผ์ ๋ค์ด์จ ์ด๋ค ํ๋ก์ธ์ค์ CPU ์ฒ๋ฆฌ ์๊ฐ์ด ๊ธธ ๊ฒฝ์ฐ ๋ค๋ฅธ ๋ชจ๋ ํ๋ก์ธ์ค๋ค์ด ๊ธฐ๋ค๋ฆผ์ผ๋ก์จ ๋ ์งง์ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์งํ๋ ์ ์๋ ๊ฒฝ์ฐ๋ณด๋ค cpu ๋ฐ ์ฅ๋น ์ฌ์ฉ๋ฅ ์ด ๋ฎ์์ง๋ ํ์
-
๋น์ ์ ์ค์ผ์ค๋ง ๋ฐฉ์
:- cpu burst time์ด ๊ฐ์ฅ ์์ ํ๋ก์ธ์ค์๊ฒ ๋จผ์ cpu๋ฅผ ํ ๋นํ๋ค.
- cpu burst time์ด ๊ฐ์ ๊ฒฝ์ฐ FCFS ๋ฐฉ์์ ์ ์ฉํ๋ค.
-
์ ์ ์ค์ผ์ค๋ง ๋ฐฉ์
:Shortest-Remaining Time-First (SRTF)
- ํ์ฌ ์ํ์ค์ธ ํ๋ก์ธ์ค์ ๋จ์ burst time๋ณด๋ค ๋ ์งง์ ์๋ก์ด ํ๋ก์ธ์ค๊ฐ ๋ค์ด์ค๋ฉด cpu๋ฅผ ๋บด์๊น.
average time
์ธก๋ฉด์์ ๊ฐ์ฅoptimal
ํ๋ค.- ๋ฌธ์ ์ )
starvation
: cpu ์ฌ์ฉ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๋ ๊ณ์ํด์ cpu๋ฅผ ํ ๋น๋ฐ์ง ๋ชปํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
-
preemptive
- ๋ ๋์ ์ฐ์ ์์ ์ค์ผ์ค๋ง์ด ์ค๋ฉด ์ ์ ๋นํ๋ ๋ฐฉ์
- ๋ ๋์ ์ฐ์ ์์ ์ค์ผ์ค๋ง์ด ์ค๋ฉด ์ ์ ๋นํ๋ ๋ฐฉ์
-
nonpreemptive
- ์ ์ ๊ฐ์ผ๋ก ์ฐ์ ์์๋ฅผ ๋ถ์ฌ๋ฐ๊ฒ ๋๋๋ฐ, ๋ ์์ ์์๊ฐ ์ฐ์ ์์๊ฐ ๋๋ค.
- ์ถ์์ ์ธ ๊ฐ๋ ์ด๊ธฐ ๋๋ฌธ์ SJF๋ ์ผ์ข ์ ์ฐ์ ์์ ์ค์ผ์ค๋ง (cpu ์ฌ์ฉ์๊ฐ์ด ๋ ์์์๋ก ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ๋)
-
cf. ์ฐ์ ์์ ์ค์ผ์ค๋ง์ ๋ฌธ์ ์ ์
starvation
computer system์์ ํจ์จ์ฑ์ ์ค์์ํ์ง๋ง ํน์ ํ๋ก์ธ์ค๊ฐ ์ง๋์น๊ฒ ์ฐจ๋ณ๋๋ ๊ฒ์ ๋ง์์ผํ ํ์๊ฐ ์๋ค.
-> aging(๋ ธํ) ๊ธฐ๋ฒ ๋์ , ์๋ฌด๋ฆฌ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก๊ทธ๋จ์ด๋ผ๋ ์ค๋ ๊ธฐ๋ค๋ฆฌ๋ฉด ์ฐ์ ์์๋ฅผ ์กฐ๊ธ์ฉ ๋์ฌ์ฃผ๋ ๊ธฐ๋ฒ
- ํ๋์ ์ธ ์ปดํจํฐ ์์คํ ์์ ์ฌ์ฉํ๊ณ ์๋ ์ค์ผ์ค๋ง์ RR์ ๊ธฐ๋ฐํ๊ณ ์๋ค.
- cpu๋ฅผ ์ค ๋ ๊ทธ๋ฅ ์ฃผ๋ ๊ฒ์ด ์๋๋ผ, ํ ๋น์๊ฐ์ ์ธํ
ํด์ ๋๊ฒจ์ฃผ๊ณ ํ ๋น ์๊ฐ์ด ๋๋๋ฉด timer interruupt๊ฐ ๊ฑธ๋ ค์ ๋นผ์๊ธฐ๋ ๊ฒ์ด ์ ๋ถ round robin์ ๋ฐํ์ผ๋ก ํ ๊ฒ์ด๋ค. ์ด๋ ๋ชจ๋ ์ ์ ํ(preemptive) scheduling ์ด๋ค.
- cpu๋ฅผ ์ค ๋ ๋์ผํ ํฌ๊ธฐ์ ํ ๋น ์๊ฐ(time quantum)์ ๊ฐ์ง๋ค.
- ํ ๋น ์๊ฐ์ด ์ง๋๋ฉด ํ๋ก์ธ์ค๋ ์ ์ (preempted)๋นํ๊ณ ready queue์ ์ ์ผ ๋ค์ ๊ฐ์ ๋ค์ ์ค์ ์ ๋ค.
- ๋๊ฐ cpu๋ฅผ ์ค๋ ์ธ์ง ๋ชจ๋ฅด๋ ์ํฉ์์ ๊ตณ์ด ์์ธกํ ํ์ ์์ด,
cpu๋ฅผ ์งง๊ฒ ์ฐ๋ ํ๋ก์ธ์ค๊ฐ ๋นจ๋ฆฌ cpu๋ฅผ ์ฐ๊ณ ๋๊ฐ ์ ์๊ฒ ํ๋ ๊ฒ์ด round robin ์ค์ผ์ค๋ง์ ์ฅ์ ์ด๋ค. - ํ์ฌ queue์ n๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์๊ณ , ๊ฐ ํ๋ก์ธ์ค์๊ฒ ์ฃผ์ด์ง ์๊ฐ์ด q๋ผ๊ณ ํ ๋,
ํน์ ํ๋ก์ธ์ค๊ฐ ์ ์ด๋ (n-1)*q ๋งํผ ๊ธฐ๋ค๋ฆฌ๋ฉด ์ ์ด๋ ๋ด ์ฐจ๋ก๊ฐ ํ ๋ฒ ๋์์ฌ ๊ฒ. - q๋ฅผ ์งง๊ฒ ํ ์๋ก ๋ ๋น ๋ฅด๊ฒ ๋ด ์ฐจ๋ก๊ฐ ๋ค๊ฐ์ฌ ๊ฒ์ด๊ณ , ์งง๊ฒ ์ฐ๋ ํ๋ก์ธ์ค๋ ๋ ๋นจ๋ฆฌ cpu๋ฅผ ์ฐ๊ณ ๋๊ฐ๊ฒ ๋๋ค.
(์๋ต์๊ฐ์ด ๋นจ๋ผ์ง๋ ๊ฒ์ด RR์ ์ฅ์ ) - RR์ CPU๋ฅผ ์ค๋ ์ฐ๋ ํ๋ก์ธ์ค๋ ๊ทธ๋งํผ ๋ฐ๋ณตํด์ ๊ธฐ๋ค๋ ค์ผ ํ๋๊น ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด ๊ธธ์ด์ง๊ณ ,
์งง๊ฒ ์ฐ๋ ํ๋ก์ธ์ค๋ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด ์งง์์ง๋ค. ์ฆ cpu๋ฅผ ์ฌ์ฉํ๋ ์๊ฐ์ ๋น๋กํ๊ฒ ๊ธฐ๋ค๋ฆฌ๋ ๋๋ฆ๋๋ก ๊ณต์ ํ ์ค์ผ์ค๋ง์ด๋ค. - ํ ๋น์๊ฐ์ด ๊ธธ์ด์ง๋ฉด FCFS์ ๊ฐ์ ์ฑ๋ฅ์ ๋๊ฒ ๋ ๊ฒ์ด๊ณ ,
ํ ๋น์๊ฐ์ด ์งง์์ง๋ฉด RR ์ธก๋ฉด์์๋ ์ด์์ ์ด์ง๋ง, context switch ์ค๋ฒํค๋๋ก ์์คํ ์ ์ฒด ์ฑ๋ฅ์ด ๋ฎ์์ง๋ ๋ฌธ์ ์ ์ด ์๊ธธ ์๋ ์๋ค.
๊ทธ๋์ ์ ๋นํ ํฌ๊ธฐ๋ก ์ง์ ํด์ฃผ๋ ๊ฒ์ด ์ข๊ณ , ๊ทธ ํฌ๊ธฐ๊ฐ 10-100 millisecond ๋ก ์๋ ค์ ธ์๋ค.
Time Quantum(ํ ๋น ์๊ฐ)์ด 20์ธ ๊ฒฝ์ฐ์ RR ์์ ์ด๋ค.
- P1, P2, P3, P4 ๋ฅผ ๋ฒ๊ฐ์๊ฐ๋ฉด์ ์ฐ์ง๋ง,
P2๋ ํ ๋น์๊ฐ๋ณด๋ค ์งง๊ธฐ ๋๋ฌธ์ ๋ ๋นจ๋ฆฌ ์ฐ๊ณ ๋๊ฐ๋ฒ๋ฆฌ๊ณ ,
๋๋จธ์ง๋ ๊ณ์ํด์ ์ฐ๋ค๊ฐ ๋ณธ์ธ์ด ์ธ ๋งํผ ๋ค ์ฐ๋ฉด ๋น ์ ธ๋๊ฐ๋ ๋ฐฉ์์ด๋ค. - SJF ๋ณด๋ค average turnaround time์ ๊ธธ์ง๋ง ์ต์ด๋ก ๊ธฐ๋ค๋ ค์ผํ๋ ๋๊ธฐ์๊ฐ์ธ response time์ ๋ ์งง๋ค.
- ๋ง์ฝ cpu ์ฌ์ฉ์๊ฐ์ด ๋ชจ๋ ๋์ผํ ํ๋ก์ธ์ค๋ค์ผ ๋ (e.g. 4๊ฐ์ ํ๋ก์ธ์ค์ burst time์ด ์ ๋ถ 100์ด์ผ ๋),
400์ด ์์ ์์ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ๋ค ๋๋๊ณ ๋๊ฐ๊ฒ ๋๋ค. - ๊ทธ๋ฐ๋ฐ ์ด ๊ฒฝ์ฐ์ ๊ทธ๋ฅ ์์๋๋ก ์คํ์์ผฐ๋ค๋ฉด ์ ์ด๋ ํ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์คํํ๊ณ ๋๊ฐ์ ํ
๋ฐ
RR์ ๋ชจ๋ ํ๋ก์ธ์ค๋ค์ด ๋ง์ง๋ง๊น์ง cpu๋ฅผ ์กฐ๊ธ์ฉ ์ ๊ณต๋ฐ์ผ๋ฉด์ waiting time์ด ๊ต์ฅํ ๊ธธ์ด์ง๊ฒ ๋๊ณ , ๊ทธ๋ฐ ์ธก๋ฉด์์ RR์ด ์ข์ง ์๋ค. (RR์ ํธ์์ ์ด์ง ์์ ์) - ํ์ง๋ง ์ผ๋ฐ์ ์ผ๋ก๋ ์งง์ ํ๋ก์ธ์ค์ ๊ธด ํ๋ก์ธ์ค๊ฐ ์์ฌ์๋ค.
CPU ์ค์ผ์ค๋ง์ด ํ์ํ ์ด์ ๋ผ ํ๋ฉด,
์ปดํจํฐ ์์คํ ์์ ์๋ job๋ค์ด Homogeneous ํ์ง ์๊ณ , I/O bound job ํนํ ์ฌ๋๋ค๊ณผ interaction ํ๋ job๊ณผ cpu๋ง ์ค๋ซ๋์ ์ฌ์ฉํ๋ ค๋ job๋ค์ด ์์ฌ์๊ธฐ ๋๋ฌธ์ ํ์ํ๋ค.
cf. Homogeneous : ๊ฐ์ ํ๋ซํผ, ๊ฐ์ ์ข ๋ฅ, ๊ฐ์ ํ๊ฒฝ Heterogenous : ๋ค๋ฅธ ์ ํ, ๋ค๋ฅธ ํ๊ฒฝ, ๋ค๋ฅธ ์ข ๋ฅ (ํด๋ผ์ฐ๋ ํ๊ฒฝ์์๋ ์๋ก ๋ค๋ฅธ ํ๊ฒฝ์ Heterogenous ๋ผ๊ณ ํํ)
- ready queue์ cpu๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ค์ ์ฌ๋ฌ ์ค๋ก ์ค์๊ธฐ๋ฅผ ํ๋ค.
- ๋งจ ์ ์ฆ์ด ์ฐ์ ์์๊ฐ ๋์ ์ค์ด๊ณ , ์๋๋ก ๊ฐ ์๋ก ์ฐ์ ์์๊ฐ ๋ฎ์์ง๋ค.
- cpu๊ฐ ์ฌ๋ฌ ๊ฐ ์์ผ๋ฉด ๋ชจ๋ฅด๊ฒ ์ง๋ง, cpu๊ฐ ํ๋๋ผ๋ฉด ์ด ์ค์์ ์ด๋ ํ๋์ job๋ง ๋์์ cpu๋ฅผ ๋ฐ์ ๊ฒ์ด๋ค.
- ์ด ์์๋ ์ฐ์ ์์๊ฐ 5๊ฐ ๋๋์ด์ ธ์๋๋ฐ ๊ฐ์ฅ ์ฐ์ ์์๊ฐ ๋์ ๊ฒ์ด system processes. ์๋๋ก ๊ฐ ์๋ก ์ฐ์ ์์๊ฐ ๋ฎ์์ง๋ค. (์์ ํ ๊ณ๊ธ์ )
cf. batch processes: cpu๋ง ์ค๋ ์ฌ์ฉํ๋ ๊ทธ๋ฐ job๋ค
- ์ฆ, cpu๋ ๊ฐ์ฅ ๋์ ๊ณ๊ธ์ ๊ฐ๊ณ ์๋ ํ๋ก์ธ์ค ์ฐจ๋ก๊ฐ ์ค๊ณ , ์ ์ค์ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด ์๋ซ ์ค์ ํ๋ก์ธ์ค์๊ฒ cpu๋ฅผ ์ฃผ๋ ์ค์ผ์ค๋ง ๋ฐฉ์์ด๋ค.
- ready queue๋ฅผ ์ฌ๋ฌ ์ค๋ก ์ค ์ธ์ฐ๊ธฐ๋ฅผ ํ๋ค๊ณ ํ๋๋ฐ, ์ฌ๊ธฐ์ queue๊ฐ ๋ ๊ฐ์ด๋ค.
- foreground queue์๋ interactiveํ job๋ค - background queue์๋ batch, no human interactionํ job๋ค
- ๊ฐ ์ค ๋ง๋ค ์ค์ผ์ค๋ง ๋ฐฉ์์ด ํ์ํ๋ฐ
foreground์ ์ค ์ ์๋ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด ์ด ์น๊ตฌ๋ค์ RR ๋ฐฉ์์ผ๋ก ์ค์ผ์ค๋งํ ๊ฒ์ธ๊ฐ
background job์ cpu๋ง ์ค๋ซ๋์ ์ฌ์ฉํ๋ ํ๋ก์ธ์ค๋ค์ด๊ณ ์๋ต์๊ฐ์ด ๋น ๋ฅด๋ค๊ณ ์ข์ ๊ฒ์ด ์๊ธฐ์ ์ค๊ฐ์ cpu๋ฅผ ์ป์๋ค๊ฐ ๋นผ์๋ context switching์ผ๋ก ๋ฐ์ํ๋ ์ค๋ฒํค๋๋ฅผ ์ค์ด๊ธฐ ์ํด์ FCFS ์ค์ผ์ค๋ง. ์ฆ, ๋จผ์ ์จ ์์๋๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๋ ํจ์จ์ ์ผ ์ ์๋ค.
-> ์ฆ, ์ค์ ํน์ฑ์ ๋ง๋ ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ฑํํด์ผ ํ๋ค.
- ๋ ์ด๋ queue์๊ฒ cpu๋ฅผ ์ค ๊ฒ์ธ์ง, ์ด๋ฒ์ ์ด๋ ์ค์๊ฒ cpu๋ฅผ ์ค ๊ฒ์ธ์ง, ๊ทธ ์ค ์์์๋ ์ด๋ค ํ๋ก์ธ์ค์๊ฒ cpu๋ฅผ ์ค ๊ฒ์ธ์ง ๊ฒฐ์ ํด์ผ ํ๋ค.
- ์ฐ์ ์์๋ฅผ ๊ฐํ๊ฒ ์ ์ฉํ๋ ๋ฐฉ์์์๋ `starvation` ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. (๋ฐ์ํ์ง ์๋๋ก ์ค์ผ์ค๋ง์ด ๊ฐ๋ฅํด์ผ ํ ๊ฒ)
- RR์ ๊ณต์ ํ ์ค์ผ์ค๋ง์ด๋ผ๋ฉด Multilevel์ ์๋์ ์ผ๋ก ์ฐจ๋ณ์ด ์กด์ฌํ๋ ์ค์ผ์ค๋ง ๋ฐฉ์์ด๋ค.
- ํ๋ฅผ ๋ช ๊ฐ ๋ ๊ฒ์ธ๊ฐ
- ๊ฐ ํ์์ ์ด๋ค ์ค์ผ์ค๋ง์ ์ฌ์ฉํ ๊ฒ์ธ์ง
- ์ฐ์ ์์๊ฐ ๋์ ๊ณณ์์ ๋ฎ์ ๊ณณ์ผ๋ก ๋จ์ด์ง๋ ๊ธฐ์ค์ ์ด๋ป๊ฒ ์ ํ ใ ใฑใ ์ธ๊ฐ
- ์น๊ฒฉ๋๋ ๊ธฐ์ค์ ์ด๋ป๊ฒ ์ ํ ๊ฒ์ธ๊ฐ
- ์ฒ์ ํ๋ก์ธ์ค ๋ค์ด๊ฐ ๋ ์ด๋ ํ๋ก ๋ค์ด๊ฐ ๊ฒ์ธ๊ฐ
์ด๋ฐ ์์ผ๋ก ์ฌ๋ฌ ๊ธฐ์ค์ด ์ ํด์ ธ์ผ ํ ๊ฒ์ด๋ค.
Multilevel queue
๋ ๊ฐ๊ฐ ํ๋ก์ธ์ค์ ์ค์๋์ ๋ฐ๋ผ queue๋ก ๋๋๊ณ ๊ฐ queue์์ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํด ํจ์จ์ ๋์ผ ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
๋จ์ ์ ํ ๋ฒ ํด๋น ํ์ ๋ค์ด๊ฐ๋ฉด ํ๋ก์ธ์ค๋ ๋ค๋ฅธ ํ๋ก ์ด๋๋๊ฑฐ๋ ๋ณ๊ฒฝ๋๋ ๊ฒ์ด ๊ฑฐ์ ๋ถ๊ฐ๋ฅํ๋ค. ์ฆ, ์ค์ผ์ค๋ง ์ค๋ฒํค๋๊ฐ ๋ฎ์ ๋์ ์ inflexible ์ ์ฐํ์ง ๋ชปํ๋ค.Multilevel Feedback Queue
๋ ํ์ ์๊ตฌ์ ์ผ๋ก ํ ๋น๋๋ ๋ฉํฐ๋ ๋ฒจํ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ค๋ฅด๊ฒ ํ ๊ฐ์ ์ด๋์ด ํ์ฉ๋๋ค.
Multilevel queue์ ํ์ฅ๋ฒ์ ์ด๋ผ ์๊ฐํ๋ฉด ๋๋ค.
Multilevel queue
๊ฐ ์ฐ์ ์์์ ๋ฐ๋ผ ๋ค์ด๊ฐ๋ ์
๊ตฌ๊ฐ ๋ฌ๋๋ค๋ฉด,
Multilevel Feedback queue
๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ชจ๋ ํ๋ก์ธ์ค๋ค์ด ์ ์ผ ์์ ์๋ ํ๋ก ์ผ๋จ ๋ค์ด์จ๋ค.
๋ง์ฝ ์ ์ผ ์์ ์๋ queue๋ RR๋ก ์ค์ผ์ค๋งํ๋ค๊ณ ํ ๋, time-quantum์ 8๋ก ์ค์ผ์ค๋ง ํ๋ค. ์์ ์ time quantum์ ๋ค ์ฑ์ฐ์ง ๋ชปํ process๋ ๋
๋๊ณ , ๋ค ์ฑ์ด ํ๋ก์ธ์ค๋ ๊ทธ ๋ฐ์ ๋ ๋ฒจ์ ์๋ ํ๋ก ๋ค์ด๊ฐ๊ฒ ๋๋ค.
๊ทธ ๋ฐ์ ์๋ ํ๋ time-quantum์ ํฌ๊ธฐ๋ฅผ ์ฒซ ๋ฒ์งธ ์๋ ํ์ ๋ ๋ฐฐ๋ก ๋๋ฆฐ๋ค.
๋ง์ง๋ง queue๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ํ๋ก์ธ์ค๋ฅผ ๋๋ฆฌ๋ ๊ฒ์ฒ๋ผ FCFS๋ก ์ฒ๋ฆฌ๋๋ค.
- ์ด ํน์ง์ cpu burst์ ์ค์๋์ ์๊ด๊ด๊ณ์ ์๋ค. ๋ณดํต ์ฌ์ฉ์์ interactiveํ์ง ์์, background process๋ cpu burst๊ฐ ๋งค์ฐ ํฌ๋ค๋ ํน์ง์ ์ด์ฉํ ๊ฒ์ด๋ค.
์ฆ, cpu burst๊ฐ ํฐ ํ๋ก์ธ์ค๋ฅผ ์ฐ์ ์์๊ฐ ๋ฎ๋ค๊ณ ํ๋ณํ๊ณ , ์ฌ์ฉ์์ interactiveํ ํ๋ก์ธ์ค๋ CPU burst๊ฐ ์๋ค๋ ํน์ง์ ๊ฐ์ง๋ฏ๋ก ์ฐ์ ์์๊ฐ ๋์ ํน์ง์ ์ด์ฉํ ๊ฒ์ด
Multilevel Feedback Queue
์ด๋ค. - time quantum์ ๋ค ์ฑ์ ๋ค๋ ๊ฒ์ CPU burst process์ผ ๊ฐ๋ฅ์ฑ์ด ๋๊ณ , ๊ทธ๋์ ํ ๋ฒ ๋ ๋ฐ์ผ๋ก ๋ด๋ ค๋ดค์ ๋ 16์ผ ๋๋ ๋ค ์ฑ์ ์ ๊ฒฝ์ฐ์ CPU bound process ์์ ์ ์ ์๋ค. ๊ทธ๋ฌ๋๊น ์์ ๋ฐ์ผ๋ก ๋ด๋ ค์ CPU bound processes๋ ์ฌ์ฉ์์ ๋ํํ์ผ๋ก ๋์ํ๋ ๊ฒ์ด ์๋๋ฏ๋ก context switching์ ์ํ๊ณ ๊ทธ๋๋ก ์ญ ์ํ์์ผ์ฃผ๋ ๊ฒ์ด ์ ๋ฆฌํ๋ฏ๋ก FCFS๋ก ํ๋ ๊ฒ์ด๋ค.
์ฆ, ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ์๋ก CPU Burst๊ฐ ํฐ ๊ฒ์ด๋๊น ์ฐ์ ์์๊ฐ ์ ์ ๋ฎ์์ง๋ค ๋ผ๋ ๋ฃฐ์ด ์๊ธฐ๋ ๊ฒ์ด๋ค.
- Multilevel feedback queue์ ๋ฌธ์ ์ ์ interactiveํ ์ฆ, ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๊ฐ ๋ค์ด์ค๋ฉด queue 0๋ง ๊ณ์ ์ํ๋๊ณ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ ๋ฐ๋ฆฌ๋ starvation ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
ํด๊ฒฐ๋ฐฉ์์ผ๋ก๋ aging ๋ฐฉ์์ ๋์
ํด์ ํด๊ฒฐ. (๋ฎ์ ์ฐ์ ์์ ํ์์ ๋๋ฌด ์ค๋ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค๋ ๋์ ์ฐ์ ์์ ํ์ ๋ค์ ๊ฐ๋ค๋๋ ๊ฒ)
- ์ฅ์ ์ผ๋ก๋ ์ ์ฐ์ฑ์ด ๋ฐ์ด๋๊ณ , SJF ์๊ณ ๋ฆฌ์ฆ์ฒ๋ผ turnaround ํ๊ท ์๊ฐ์ ์ค์ผ ์ ์๋ค. (๋ ์งง์ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ๋๊ฒ ํด์ฃผ๋ฏ๋ก) ๋ํ interactiveํ ํ๋ก์ธ์ค๊ฐ ์์ ์ค๋๊น response time์ด ์งง์์ง๋ค.
CPU๊ฐ ์ฌ๋ฌ ๊ฐ ์์ ๋์ ์ค์ผ์ค๋ง์ผ๋ก๋,
-
SMP ๋ชจ๋ CPU๋ค์ด ๋๋ฑํ ๊ฒ์ผ๋ก, cpu๊ฐ ์์์ ์ค์ผ์ค๋ง์ ํด์ฃผ๋ ๊ฒฝ์ฐ
-
Asymmetric multiprocessing CPU๊ฐ ์ฌ๋ฌ ๊ฐ ์๋๋ฐ ๊ทธ ์ค์์ ํ๋์ cpu๊ฐ ์ ์ฒด์ ์ธ ์ปจํธ๋กค์ ๋ด๋นํ๋ ๊ฒ.(๋ฐ์ดํฐ์ ์ ๊ทผ ๊ฐ์ ๊ฒ๋ค์ ์ฑ ์์ง๋ค) ๋๋จธ์ง๋ ๋ฐ๋ฅด๊ฒ ๋๋ค.
real time job์ ์ด๋ค deadline์ด ์๋ job์ผ๋ก, ์ ํด์ง ์๊ฐ ๋ด์ ๋ฐ๋์ ์คํ์ด ๋์ผ ํ๋ job๋ค์ด๋ค.
cpu ์ค์ผ์ค๋ง์ ํ ๋๋ real time job์ ๋ฐ๋์ deadline์ ๋ณด์ฅํด์ค์ผ ํ๋ฏ๋ก, cpu๋ฅผ ์ฃผ๋ ์์๊ฐ ์ค์ํ ๊ฒ์ด ์๋ deadline ๋ด์์ ๋๋๋ ๊ฒ์ ๋ณด์ฅํด์ผ ํ๋ค. CPU๋ฅผ ๊ทธ๋๊ทธ๋ ์ค์ผ์ค๋ง์ ํ๊ธฐ๋ณด๋ค๋ real time job๋ค์ด ์ฃผ์ด์ ธ์๊ณ ๋ฏธ๋ฆฌ ์ค์ผ์ค๋งํด์ deadline์ด ๋ณด์ฅ๋ ์ ์๋๋ก ์ ์ฌ์ ์์ ๋ฐฐ์นํ๋ ๊ฒ์ด ์ค์ํ๋ค.
soft real-time์ ์ํ๋ฅผ ๋ณด๋ ๊ฒ์ ์์๋ก ๋ ์ ์๋ค. deadline์ด ์กด์ฌํ์ง๋ง ์กฐ๊ธ ์ด๊ฒจ๋ ํฐ ๋ฌธ์ ๊ฐ ์๋ ์์คํ ๋ค์ด๋ค. ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋นํด ์ฐ์ ์์๋ง ์ข ๋์ฌ์ค์ cpu๋ฅผ ๋จผ์ ๋ฐ์ ์ ์๊ฒ๋ ํด์ฃผ๋ฉด ๋๋ค.
- ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ํ๊ฐ ๊ธฐ์ค๋ค
- ๋ค๋จ๊ณ ํผ๋๋ฐฑ ํ ์ค์ผ์ค๋ง์ ํน์ง๊ณผ ์ ๊ทธ๋ฐ ํน์ง์ ๊ฐ๋์ง (๋ค๋จ๊ณ ํ ์ค์ผ์ค๋ง๊ณผ ๋น๊ตํด์)
- ๋น์ ์ ํ ์ค์ผ์ค๋ง์ ํน์ง๊ณผ, ์ ์ ํ ์ค์ผ์ค๋ง์ ํน์ง. ๊ทธ๋ฆฌ๊ณ ์ค์ผ์ค๋ง ์์๋ค
[ref] https://jhnyang.tistory.com/156 https://murphymoon.tistory.com/entry/CPU-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-%EB%A9%B4%EC%A0%91-%EC%A7%88%EB%AC%B8-4