[OS] ํ๋ก์ธ์ค ์ค์ผ์ค๋ง(CPU ์ค์ผ์ค๋ง, ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ)
1. ์ค์ผ์ค๋ฌ / ์ค์ผ์ค๋ง์ด๋?
์์ ๊ด๋ฆฌ์๋ฅผ ์คํํด ๋ณธ ์ ์ด ์๋ค๋ฉด ์๋์ ๊ฐ์ ํ๋ฉด์ ๋ณธ ์ ์ด ์์ ๊ฒ์ด๋ค.
์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ฌ๋ฌ๊ฐ์ ํ๋ก์ธ์ค์ ์ ๋ณด๋ฅผ ํ์ธ ํ ์ ์๋ค. ์ฌ๊ธฐ์ ํ๋ก์ธ์ค๋, ์ด์์ฒด์ ์์ ์คํ๋๋ ํ๋ก๊ทธ๋จ์ ์ต์ ๋จ์, ์คํ๋๊ณ ์๋ ํ๋ก๊ทธ๋จ์ด๋ผ ์ดํดํ๋ฉด ๋๋ค.
์ด ํ๋ก์ธ์ค๋ค์ ์ด๋์์ ์ด๋ป๊ฒ ์คํ๋๋ ๊ฑธ๊น? ๋ต์, ์ปดํจํฐ์ ๋๋๋ผ ํ๋ CPU์ ์ฝ์ด์์ ์คํ๋๊ณ ์๋ค. ์๋ ์๋ ์ผ๋ฐ ์๋น์์ฉ CPU์ ๊ฒฝ์ฐ 1๊ฐ์ ์ฝ์ด๋ฅผ ๊ฐ์ง๋ ๊ฒ์ด ๋๋ถ๋ถ์ด์๋ค. ์ด ๋ง์ CPU๊ฐ ํ ๋ฒ์ ํ ๊ฐ์ ์ฐ์ฐ์ ์ํํ๋ค๋ ๊ฒ์ธ๋ฐ, ๋๋์ฒด ๊ทธ ์์ ์๋ ์ธํฐ๋ท์ ํ๋ฉด์ ์์ ์ ๋ฃ๊ณ ๋์์ ๊ฒ์๋ ํ ์ ์์๋ ๊ฑธ๊น?
๋ฐ๋ก ์ปจํ ์คํธ ์ค์์นญ(Context switching)์ด๋ผ๋ ๊ธฐ์ ๋๋ฌธ์ ๊ฐ๋ฅํ๋ค. ์ปดํจํฐ์์ ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋ ๊ฒ์ผ๋ก๋ ํ๋ก๊ทธ๋จ์ด ์ฐ์์ ์ผ๋ก ์๋ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ค์ ๋ก๋ ๊ทธ๋ ์ง ์๋ค.
์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ๋ก๊ทธ๋จ์ด ํ๋๋ง ์ญ์ฑ ์๋ํ๋ ๊ฒ์ด ์๋, ํ๋ก๊ทธ๋จ ํ๋๊ฐ ์ ์ ์คํ๋์๋ค๊ฐ ๋ค์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ผ๋ก ์ค์์นญ ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ด๋ ๊ฒ ์ค์์นญ๋๋ฉด์ ์์ ๋๋ ๊ฒ์ด ์ฐ๋ฆฌ ๋์๋ ์ฌ๋ฌ ๊ฐ์ ํ๋ก๊ทธ๋จ์ด ๋์์ ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๊ฒ์ด๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ค ๊ธฐ์ค์ผ๋ก ์ค์์นญ ๋๋ ๊ฒ ์ผ๊น? ์ด ๊ธฐ์ค์ ์ด์์ฒด์ ์ ์ค์ผ์ค๋ฌ(scheduler)๊ฐ ๊ฒฐ์ ํ๊ณ ๊ธฐ์ค์๋ ์ฌ๋ฌ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ๋ค์ด ์๋ค.
2. ์ค์ผ์ค๋ง ๋ฐฉ์
์ค์ผ์ค๋ง์๋ ํฌ๊ฒ ์ ์ ํ(Preemptive) ์ค์ผ์ค๋ง๊ณผ ๋น์ ์ ํ(Non-Preemptive) ์ค์ผ์ค๋ง 2๊ฐ์ง ๋ฐฉ์์ผ๋ก ๋๋๋ค.
2.1) ์ ์ ํ(Preemptive) ์ค์ผ์ค๋ง
ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ํ ๋น๋ฐ์ ์คํ ์ค์ด๋๋ผ๋ I/O๋ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ ๊ฒ๋ ์๋๊ณ ๋ชจ๋ ์์ ์ ๋๋ด์ง๋ ์์๋๋ฐ, ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ๊ฐ์ ๋ก ๋นผ์์ ์ ์๋ ๋ฐฉ์์ด๋ค.
CPU ์ฒ๋ฆฌ ์๊ฐ์ด ๋งค์ฐ ๊ธด ํ๋ก์ธ์ค๊ฐ CPU ์ฌ์ฉ ๋ ์ ์ ๋ง์ ์ ์์ด ํจ์จ์ ์ธ ์ด์์ด ๊ฐ๋ฅํ์ง๋ง ์ฆ์ ์ค์์นญ์ผ๋ก ์ค๋ฒํค๋๊ฐ ๋ง์ด ๋ฐ์ํ๋ค.
2.2) ๋น์ ์ ํ(Non-Preemptive) ์ค์ผ์ค๋ง
์ ์ ํ๊ณผ ๋ฐ๋๋ก, ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ๊ณ ์๋ค๋ฉด ์ด๋ฅผ ๋นผ์์ ์ ์๋ ๋ฐฉ์์ด๋ค. ํ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ๋ค๋ฉด, I/O๋ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ ๋๋ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ์ง ๋ชปํ๋ ๊ฒ์ด๋ค.
ํ์ํ ์ค์์นญ๋ง ์ผ์ด๋๊ธฐ ๋๋ฌธ์ ์ค๋ฒํค๋๊ฐ ์๋์ ์ผ๋ก ์ ์ง๋ง ํ๋ก์ธ์ค ๋ฐฐ์น์ ๋ฐ๋ผ ํจ์จ์ฑ ์ฐจ์ด๊ฐ ๋ง์ด ๋๋ค.
3. ์ค์ผ์ค๋ง ์ข ๋ฅ
3.1) First-Come, First-Served(FCFS)
FCFS๋ ๋น์ ์ ํ(Non-Preemptive) ์ค์ผ์ค๋ง์ผ๋ก, ๋จผ์ ์จ ํ๋ก์ธ์ค๊ฐ ๋จผ์ CPU๋ฅผ ์ ์ ํ๋ ๋ฐฉ์์ด๋ค.
Process | Burst Time(msec) |
P1 | 15 |
P2 | 6 |
P3 | 3 |
ํ๋ก์ธ์ค๊ฐ ์ฐจ๋ก๋๋ก P1, P2, P3 ์์๋๋ก ๋ค์ด์๋ค๊ณ ๊ฐ์ ํ๊ณ ํ๊ท ๋๊ธฐ์๊ฐ์ ๊ณ์ฐํ๋ฉด ์๋์ ๊ฐ๋ค.
โ Average Waiting Time: (0+15+21) / 3= 12msec
๋ง์ฝ, ํ๋ก์ธ์ค๊ฐ ๋ค์ด์จ ์์๊ฐ P3, P2, P1์ด๋ผ๋ฉด ์๋์ฒ๋ผ ๋ฐ๋ ๊ฒ์ด๋ค.
โ Average Waiting Time: (0+3+9) / 3= 4 msec
ํ๋ก์ธ์ค๊ฐ ๋๋ ์๊ฐ์ 24 msec๋ก ๋์ผํ์ง๋ง, ํ๊ท ๋๊ธฐ์๊ฐ์ผ๋ก๋ ๋ง์ ์ฐจ์ด๋ฅผ ๋ณด์ธ๋ค. ์ฆ, ๋ค์ด์จ ์์์ ๋ฐ๋ผ ํจ์จ์ฑ์ ์ฐจ์ด๊ฐ ํฌ๊ฒ ์๊ธธ ์ ์๋ค.
P1, P2, P3 ์์๋ก ๋ค์ด์จ ๊ฒ์ Convoy Effect๋ผ๊ณ ํ๋๋ฐ, ์ด๋ CPU ์๊ฐ์ ์ค๋ ์ฌ์ฉํ๋ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์ํํ๋ ๋์ ๋๋จธ์ง ํ๋ก์ธ์ค๋ค์ ๊ทธ๋งํผ ์ค๋ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ์ผ์ปซ๋๋ค. ์ด๋ FCFS์ ๋จ์ ์ค ํ๋๋ค.
3.2) Shortest-Job-First(SJF)
SJF๋ ๊ฐ์ฅ ์งง๊ฒ ์ํ๋๋ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ฅ ๋จผ์ ์ํ๋๋ ๋ฐฉ์์ ๋งํ๋ค.
SJF๋ ์ ์ ํ(Preemptive)๊ณผ ๋น์ ์ ํ(Non-Preemptive) ๋ฐฉ์ ๋ชจ๋ ๊ฐ๋ฅํ๋ค.
Process | Burst Time(msec) |
P1 | 15 |
P2 | 6 |
P3 | 3 |
โ Average Waiting Time: (0+3+9) / 3= 4 msec
๊ฐ๋จํ๊ฒ, FCFS๋ฐฉ์์์ ๊ฐ์ฅ CPU ์ฌ์ฉ์๊ฐ์ด ๋ฎ์ ์๊ฐ ์์๋๋ก ๋ค์ด์จ๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์ํ์ ์ผ๋ก ์ด๋ค ๋ฐฉ์๋ณด๋ค ํ๊ท ๋๊ธฐ์๊ฐ์ด ์งง๋ค๊ณ ํ ์ ์๋๋ฐ. ๊ทธ๋ ๋ค๋ฉด SJF๊ฐ ๊ฐ์ฅ ํจ์จ์ ์ธ ์ค์ผ์ค๋ง ๋ฐฉ์์ผ๊น? ์ฌ์ค ์ด ์ค์ผ์ค๋ง ๋ฐฉ๋ฒ์ ๋งค์ฐ ๋นํ์ค์ ์ด๋ค.
ํ์ค์ ์ธ ์ปดํจํฐ ํ๊ฒฝ์์๋ ํ๋ก์ธ์ค์ CPU ์ ์ ์๊ฐ์ ์ ์ ์์๋ฟ๋๋ฌ ํ๋ก์ธ์ค๊ฐ ์คํ ์ค์๋ ๋ง์ ๋ณ์๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ CPU ์ ์ ์๊ฐ์ ์๋ ค๋ฉด ์ค์ ๋ก ์ํํ์ฌ ์ธก์ ํ๋ ์๋ฐ์ ์๋ค. ํ์ง๋ง ์ด๋ ํฐ ์ค๋ฒํค๋๋ฅผ ๋ฐ์์ํค๋ฏ๋ก ์ ์ฌ์ฉ๋์ง ์๋๋ค.
3.3) Priority
Priority ์ค์ผ์ค๋ง์ ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค ๋จผ์ ์ ํ๋๋ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
Priority ์ค์ผ์ค๋ง์ ์ญ์, ์ ์ ํ(Preemptive)๊ณผ ๋น์ ์ ํ(Non-Preemptive) ๋ฐฉ์ ๋ชจ๋ ๊ฐ๋ฅํ๋ค.
Priority๊ฐ ๋ฎ์์๋ก ์ฐ์ ์์๊ฐ ๋๋ค๊ณ ๊ฐ์ ํ์.
Process | Burst Time(msec) | Priority |
P1 | 10 | 3 |
P2 | 1 | 1 |
P3 | 2 | 4 |
P4 | 1 | 2 |
โ Average Waiting Time: (0+1+2+12) / 4= 3.75 msec
์ฐ์ ์์๋ฅผ ์ ํ๋ ๋ฐฉ๋ฒ์๋ ํฌ๊ฒ ๋ด๋ถ์ ์ธ ์์์ ์ธ๋ถ์ ์ธ ์์๋ก ๋๋๋ค.
-
Internal: Time limit, Memory Requirement, I/O to CPU burst(I/O ์์ ์ ๊ธธ๊ณ , CPU ์์ ์ ์งง์ ํ๋ก์ธ์ค ์)
-
External: Amount of funds being paid, Political Factors ๋ฑ
Priority ์ค์ผ์ค๋ง์ ๋ฌธ์ ์ ์ Starvation(๊ธฐ์)์ด ์๋ค. Starvation์ ํ๋ก์ธ์ค๊ฐ CPU ์ ์ ๋ฅผ ์ค๋ซ๋์ ํ์ง ๋ชปํ๋ ํ์์ ์ผ์ปซ๋๋ฐ, ์ฐ์ ์์๊ฐ ๋งค์ฐ ๋ฎ์ ํ๋ก์ธ์ค๊ฐ ๋๊ธฐํ๊ณ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. ์ด ํ๋ก์ธ์ค๋ ์๋ฌด๋ฆฌ ์ค๋ ๊ธฐ๋ค๋ ค๋ CPU๋ฅผ ์ ์ ํ์ง ๋ชปํ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ํฌ๋ค.
์ค์ ์ปดํจํฐ ํ๊ฒฝ์์๋ ์๋ก์ด ํ๋ก์ธ์ค๊ฐ ๋์์์ด ๋ค์ด์ค๊ณ , ์ด๋ฌํ ํ๋ก์ธ์ค๊ฐ ๋ชจ๋ ์ฐ์ ์์๊ฐ ๋๋ค๋ฉด ์ด๋ฏธ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ ํ์ผ์์ด ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ผ๋ก Aging์ด ์๋๋ฐ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๊ฐ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ์ฐ์ ์์๋ฅผ ์ผ์ ๋ ๋์ฌ์ฃผ๋ ๋ฐฉ์์ด๋ค. ์ด๋ ๊ฒ ํ๋ค๋ฉด ์ฐ์ ์์๊ฐ ๋ฎ๋๋ผ๋ ์๊ฐ์ด ์ง๋๋ฉด ์ฐ์ ์์๊ฐ ๋์์ง๋ฏ๋ก ์ํ๋ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ค.
3.4) Round-Robin(RR)
Round-Robin(RR)์ ์ผ์ ์๊ฐ์ ์ ํ์ฌ ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์ด ์๊ฐ ๋์๋ง ์ํํ๊ณ ๋ค์ ๋๊ธฐ ์ํ๋ก ๋์๊ฐ๋ ๋ฐฉ์์ ๋งํ๋ค. Round-Robin์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ ํ(Preemptive)์ด๋ค. ์ผ์ ์๊ฐ์ด ๋๋๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก CPU๋ฅผ ๋๊ฒจ์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
(Time Quantum = 3 msec)
Process | Burst Time(msec) |
P1 | 24 |
P2 | 3 |
P3 | 3 |
์์์ ๋งํ ์ผ์ ์๊ฐ์ Time Quantum(Time Slice)์ด๋ผ ๋ถ๋ฅธ๋ค. Time Quantum์ ์ผ๋ฐ์ ์ผ๋ก 10~100 msec ์ฌ์ด์ ๋ฒ์๋ฅผ ๊ฐ๋๋ค. ์์ ์๋ Time Quantum์ด 3 msec์ด๊ณ ํด๋น ๋จ์๋ณ๋ก CPU๋ฅผ ์ ์ ํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
โ Average Waiting Time: (0+3+6+6) / 3= 5 msec
RR๋ฐฉ์์ Time Quantum์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋งค์ฐ ์์กด์ ์ธ ๊ฒ์ ์ ์ ์๋ค.
Time Quantum ํฌ๊ธฐ๋ฅผ ๋ฌดํ์ ๊ฐ๊น๊ฒ ์ค์ ํ๋ค๋ฉด FCFS์ ๋์ผํ๊ฒ ๋์ํ๊ณ . ๋ฐ๋๋ก, ๋งค์ฐ ์๊ฒ ์ค์ ํ๋ฉด ์ค์์นญ ์ค๋ฒํค๋๊ฐ ๋งค์ฐ ์ปค์ ๋นํจ์จ ์ ์ด๋ค. ์ฆ Time Quantum ๊ฐ์ ์ ๋นํ ํฌ๊ธฐ๋ก ์ค์ ํด์ค์ผ ํ๋ค.
์ฐธ๊ณ ๋ฐ ์ถ์ฒ
https://modoocode.com/269
https://velog.io/@codemcd/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-6.-CPU-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote