ํฐ์คํ ๋ฆฌ ๋ทฐ
์ด์์ฒด์ : CPU ์ค์ผ์ค๋ง
dirmathfl 2020. 6. 19. 18:09CPU๋ผ๋ ํ๋์จ์ด ์์์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ค์ด ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด, ์ค์ผ์ค๋ง ๊ณผ์ ์ด ํ์ํ๋ค. ๋ค์์ ์คํํ ํ๋ก์ธ์ค๋ฅผ ์ ํํ๋ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ์ค์ผ์ค๋ง์ ํ๊ฒ ๋๋ค. ์ํฉ์ ๋ฐ๋ผ ํจ์จ์ ์ธ CPU ์ค์ผ์ค๋ง์ด ์คํ๋ ค ์ฑ๋ฅ ๊ฐ์๋ฅผ ์ผ๊ธฐ ํ ์ ๋ ์๋ค.
Scheduling Critria
CPU ์ค์ผ์ค๋ง์ ํจ์จ์ฑ์ ํ๋จํ๋ ๊ธฐ์ค์ ๋ค์๊ณผ ๊ฐ๋ค.
-
CPU Utilizaiton
-
Throughput
-
Turnarround Time
-
Wating Time
-
Response Time
Preemptive VS Non-Preemptive
๋ค์ํ CPU ์ค์ผ์ค๋ง์ ์๊ธฐ์ ์์ ์ ์ (Preemptive), ๋น์ ์ (Non-Preemptive) ๋ฐฉ์์ ๋ํ ์ดํด๊ฐ ํ์ํ๋ค.
Preemptive
์ ์ ์ ๋ง๊ทธ๋๋ก ํน์ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ๋ ๋์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ์ฌ CPU ์ฌ์ฉ์ ์ ์ ๋นํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ด๋ CPU ์ ์ ๊ฐ ํ์ํ ํ๋ก์ธ์ค์ ์ํด ๊ธฐ์กด์ CPU๋ฅผ ์ ์ ํ๋ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ ๋ก ์ค๋จ์ํค๋ ๊ฒ์ ๋งํ๋ค.
Non-Preemeptive
๋น์ ์ ์ ์ ์ ๊ณผ ๋ฌ๋ฆฌ ํน์ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ๋ ๊ฒฝ์ฐ, ์ธํฐ๋ฝํธ ๋๋ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ๋ค๋ฅธ ํ๋ก์ธ์ค๋ CPU๋ฅผ ์ ์ ํ์ง ๋ชปํ๋ค.
CPU Scheduling Algoritms
ํ๋ก์ธ์ค์ ๋์ฐฉ ์์, ์์ ์ ํฌ๊ธฐ, ์ ์ , ๋น์ ์ ๋ฑ ๋ค์ํ ๊ธฐ์ค์ ํตํด ๋ค์์ ์ฌ์ฉํ ํ๋ก์ธ์ค๋ฅผ ์ ํํ๋ ์๊ณ ๋ฆฌ์ฆ๋ค์ด ์๋ค.
FCFS(First-Come, First-Served)
ํด๋น ์๊ณ ๋ฆฌ์ฆ์ FIFO์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ฐ์ฅ ๋จผ์ ์์ ์ ์์ฒญํ ํ๋ก์ธ์ค ๋ถํฐ ์ฒ๋ฆฌ๋๋ ๋ฐฉ์์ด๋ค.
Process | Burst Time (msec) |
P1 | 24 |
P2 | 3 |
P3 | 3 |
ํ์ ๊ฐ์ด P1 - P3 ์์ผ๋ก ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ ๊ฒฝ์ฐ P1 ๋ถํฐ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌ๋๊ฒ ๋๋ฉฐ, FCFS๋ ๋น์ ์ ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ์ ํ๋ก์ธ์ค๊ฐ ์์ ์ ์ข ๋ฃํ ๋ ๊น์ง ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์ ์ ํ ์ ์๋ค.
์์ ์์๋ฅผ FCFS๋ก ์ค์ผ์ค๋ง ํ๋ฉด, CPU ์ค์ผ์ค๋ง์ ํ๋จํ๋ ๊ธฐ์ค ์ค Waiting Time์ด ์ปค์ ธ ํจ์จ์ ์ด์ง ๋ชปํ๊ฒ์ ์ ์ ์๋ค. P1 - P3์ Wating Time์ ๊ฐ๊ฐ 0, 24, 27๋ก Average Wating Time์ 17msec๊ฐ ๋๋ค. ์ฆ, ์์ ์๊ฐ์ด ๊ฐ์ฅ ๊ธด ํ๋ก์ธ์ค๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ฒ ๋๋ฉด ์ดํ์ ํ๋ก์ธ์ค์ Wating Time์ด ๊ธธ์ด์ง๋ Convoy Effect๊ฐ ๋ฐ์ํ๋ค.
SJF(Shortest-Job-First)
ํด๋น ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ฆ์์๋ ์ ์ ์๋ฏ์ด ์์ ์๊ฐ์ด ๊ฐ์ฅ ์งง์ ํ๋ก์ธ์ค๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ ํํ๋ ๋ฐฉ์์ด๋ค.
Process | Burst Time (msec) |
P1 | 6 |
P2 | 8 |
P3 | 7 |
P4 | 3 |
๋์ฐฉ ์๊ฐ์ ๋ชจ๋ ๋์ผํ๋ค๊ณ ์๊ฐํ ๋ ํ์ ๊ฐ์ ์์ ์๊ฐ์ ๊ฐ์ง๋ ๊ฒฝ์ฐ, SJF๋ P4 - P1 - P3 - P2 ์์ผ๋ก ์คํํ ํ๋ก์ธ์ค๋ฅผ ์ ํํ๊ฒ ๋๋ค. ์ด ๋ P1 - P4์ Wating Time์ 3, 16, 9, 0์ผ๋ก ํ๊ท Average Wating Time์ 7msec๊ฐ ๋๋ค. ์ด๋ฅผ FCFS๋ก ์ฒ๋ฆฌํ ๊ฒฝ์ฐ, Average Wating Time์ 10.25msec์ด๋ค.
ํ์ง๋ง ์ด ๋ฐฉ์์ ํ์ค์์๋ ์ฌ์ฉํ ์ ์๋ค. ์๋ํ๋ฉด ํน์ ํ๋ก์ธ์ค๊ฐ ์์ ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ํ๋จํ๋ ๊ฒ์ ๋ค์ ์ด๋ ต๊ธฐ ๋๋ฌธ์ด๋ค. ์ด์ ๊ฐ์ ๊ณผ์ ์ ์ํด ์์ ํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ํ๋จํ์ฌ์ผ ํ๋๋ฐ ์ด๋ ์ค๋ฒํค๋๊ฐ ๋๋ค.
Priority
ํด๋น ์๊ณ ๋ฆฌ์ฆ์ ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๋ฅผ ๋จผ์ ์ ํํ๋ ๋ฐฉ์์ด๋ค. ๋ง์ฝ 1 - 10์ ์ฐ์ ์์๊ฐ ์๋ค๋ฉด Linux์์๋ ์ซ์๊ฐ ์์ ์๋ก ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค
Process | Burst Time (msec) | Priority |
P1 | 10 | 3 |
P2 | 1 | 1 |
P3 | 2 | 4 |
P4 | 1 | 5 |
P5 | 5 | 2 |
์ฐ์ ์์์ ๋ฐ๋ผ ์ค์ผ์ค๋ง ํ ๊ฒฝ์ฐ P2 - P5 - P1 - P3 - P4 ์์ผ๋ก ์ฒ๋ฆฌ๋๋ค. ์ด ๋ P1 - P5์ Wating Time์ 6, 0, 16, 18, 1๋ก Average Wating Time์ 8.2msec๊ฐ ๋๋ค.
Starvation & Aging
์ฐ์ ์์์ ๋ฐ๋ผ ์ค์ผ์ค๋ง์ ํ ๊ฒฝ์ฐ Starvation(๊ธฐ์) ์ํ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
์๋ฅผ ๋ค์ด, ์ฐ์ ์์ 5์ธ ํ๋ก์ธ์ค๊ฐ ์๊ณ ์๋ก ์์ ์ ์์ฒญํ๋ ํ๋ก์ธ์ค์ ์ฐ์ ์์๊ฐ 5๋ณด๋ค ๋์ ๊ฒฝ์ฐ ํด๋น ํ๋ก์ธ์ค๋ ์์ ์ ์ฒ๋ฆฌํ์ง ๋ชปํ๊ฒ ๋๋ค. ์ด๋ฅผ ๊ธฐ์ ์ํ๋ผ๊ณ ํ๋ค.
์ด๋ฅผ ๋ง๊ธฐ ์ํด, Wating ์๊ฐ์ด ๊ธธ์ด์ง๋ฉด ์ฐ์ ์์๋ฅผ ๋์ด๋ Aging์ ์ฌ์ฉํ์ฌ ๊ธฐ์๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํ๋ค.
RR(Round-Robin)
ํด๋น ๋ฐฉ์์ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ๋์ผํ ์์ ์๊ฐ(Time Slice)์ ์ฌ์ฉํ๋ ํ๋ ๋ฐฉ์์ ๋งํ๋ค. ์๋ฅผ ๋ค์ด ์ต๋ ์์ ์๊ฐ์ด 3ms๋ผ๊ณ ํ๋ค๋ฉด ํ๋ก์ธ์ค๋ 3ms ๋งํผ ์์ ์ ํ๊ณ ์ ์ ๋์ด ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค.
Process | Burst Time (msec) |
P1 | 24 |
P2 | 3 |
P3 | 3 |
ํ์ ๊ฐ์ ์ํฉ์์ Time Slice๊ฐ 4mesc์ผ ๊ฒฝ์ฐ P1 - P3์ Wating Time์ 6 + 4 + 7์ด๋ฉฐ Average Wating Time์ 5.66msec๊ฐ ๋๋ค. ํ์ง๋ง Time Slice๊ฐ ์งง์์ง๊ฑฐ๋ ๊ธธ์ด์ง ๊ฒฝ์ฐ Average Wating Time์ ๋ฐ๋๊ฒ ๋๋ค. ๋ง์ฝ Time Slice๊ฐ ํฌ๋ค๋ฉด FCFS์ ์ ์ฌํ ๊ฒ์ด๊ณ , ๋๋ฌด ์งง์ ๊ฒฝ์ฐ Context Switchig์ ์ค๋ฒํค๋๊ฐ ์ฆ๊ฐํ์ฌ ํจ์จ์ ์ด์ง ์๊ฒ ๋๋ค. ์ด์ ์ ์ ํ Time Slice๋ฅผ ์ค์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค.
'๐๏ธโโ๏ธ ๊ธฐ๋ฐ ๋ค์ง๊ธฐ > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ด์์ฒด์ : ํ๋ก์ธ์ค ๋๊ธฐํ - ์ธ๋งํฌ์ด (0) | 2020.06.19 |
---|---|
์ด์์ฒด์ : ํ๋ก์ธ์ค์ ์ฐ๋ ๋ (0) | 2020.06.19 |
์ด์์ฒด์ : ํ๋ก์ธ์ค ๊ด๋ฆฌ (0) | 2020.06.18 |
์ด์์ฒด์ : ์ด์ค๋ชจ๋ ๋ฐ ํ๋์จ์ด ๋ณดํธ (0) | 2020.06.18 |
์ด์์ฒด์ : ์ ์์ ์ญํ (0) | 2020.06.18 |