์ด์์ฒด์ ์์ ํ๋ก์ธ์ค๋ฅผ ์คํํด์ ์ข
๋ฃ๋ ๋๊น์ง ์์
์ ์๋ฎฌ๋ ์ด์
ํ๋ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ค.
์ค์ผ์ค๋ง ๋ฐฉ์์ ๋ค์ 3๊ฐ ์ค 1๊ฐ๋ฅผ ๊ณจ๋ผ์ ๊ตฌํํ๊ณ , ์ฌ์ ๊ฐ ๋๋ค๋ฉด ๋ค๋ฅธ ๋ฐฉ์๋ ๊ตฌํํด ๋ณธ๋ค.
- ๊ธฐํ๋ถ ์ค์ผ์ค๋ง (deadline scheduling)
- ๊ณ ์ ์ฐ์ ์์ ์ค์ผ์ค๋ง (static priority scheduling)
- ๋ผ์ด๋ ๋ก๋น ์ค์ผ์ค๋ง (Round Robin scheduling)
#์ค์ผ์ค๋ง
#ํ๋ก์ธ์ค
#PCB
#์ด์์ฒด์
#์ฐ์ ์์
ํ๋ก์ธ์คA(3์ด) , ํ๋ก์ธ์คB(5์ด), ํ๋ก์ธ์คC(7์ด)
๋ฅผ ์์ฑํ ๊ฒฝ์ฐ ์ถ๋ ฅ ์์
A(ready), 0 / 3sec
B(ready), 0 / 5sec
C(ready), 0 / 7sec
.
A(running), 1 / 3sec , waiting 0 sec
B(waiting), 0 / 5sec , waiting 1 sec
C(waiting), 0 / 7sec , waiting 1 sec
.
A(waiting), 1 / 3sec , waiting 1 sec
B(running), 1 / 5sec , waiting 1 sec
C(waiting), 0 / 7sec , waiting 2 sec
.
A(waiting), 1 / 3sec , waiting 2 sec
B(waiting), 1 / 5sec , waiting 2 sec
C(running), 1 / 7sec , waiting 2 sec
.
A(running), 2 / 3sec , waiting 2 sec
B(waiting), 1 / 5sec , waiting 3 sec
C(waiting), 1 / 7sec , waiting 3 sec
.
A(waiting), 2 / 3sec , waiting 3 sec
B(running), 2 / 5sec , waiting 3 sec
C(waiting), 1 / 7sec , waiting 4 sec
.
A(waiting), 2 / 3sec , waiting 4 sec
B(waiting), 2 / 5sec , waiting 4 sec
C(running), 2 / 7sec , waiting 4 sec
.
A(running), 3 / 3sec , waiting 4 sec
B(waiting), 2 / 5sec , waiting 5 sec
C(waiting), 2 / 7sec , waiting 5 sec
.
A(terminated), 3 / 3sec , waiting 4 sec
B(running), 3 / 5sec , waiting 5 sec
C(waiting), 2 / 7sec , waiting 6 sec
.
A(terminated), 3 / 3sec , waiting 4 sec
B(waiting), 3 / 5sec , waiting 6 sec
C(running), 3 / 7sec , waiting 6 sec
.
A(terminated), 3 / 3sec , waiting 4 sec
B(running), 4 / 5sec , waiting 6 sec
C(waiting), 3 / 7sec , waiting 7 sec
.
A(terminated), 3 / 3sec , waiting 4 sec
B(waiting), 4 / 5sec , waiting 7 sec
C(running), 4 / 7sec , waiting 7 sec
.
A(terminated), 3 / 3sec , waiting 4 sec
B(running), 5 / 5sec , waiting 7 sec
C(waiting), 4 / 7sec , waiting 8 sec
.
A(terminated), 3 / 3sec , waiting 4 sec
B(terminated), 5 / 5sec , waiting 7 sec
C(running), 5 / 7sec , waiting 8 sec
.
A(terminated), 3 / 3sec , waiting 4 sec
B(terminated), 5 / 5sec , waiting 7 sec
C(running), 6 / 7sec , waiting 8 sec
.
A(terminated), 3 / 3sec , waiting 4 sec
B(terminated), 5 / 5sec , waiting 7 sec
C(running), 7 / 7sec , waiting 8 sec
.
A(terminated), 3 / 3sec , waiting 4 sec
B(terminated), 5 / 5sec , waiting 7 sec
C(terminated), 7 / 7sec , waiting 8 sec
๋ผ์ด๋๋ก๋น ๋ฐฉ์ ์ค์ผ์ค๋ง์ด ์ข
๋ฃ๋์์ต๋๋ค.
ํ๊ท ๋๊ธฐ์๊ฐ = (4 + 7 + 8) / 3 = 6.3sec
ํ๊ท ๋ฐํ์๊ฐ = (7 + 12 + 15) / 3 = 11.3sec
---
๋ค๋ฅธ ์ค์ผ์ค๋ง ๋ฐฉ์ ํ์
- ํ๋ก์ธ์ค ์ข ๋ฃ๋ฅผ A๋ถํฐ F๊น์ง 6๊ฐ ์ ํ๊ณ , ํ๋ก์ธ์ค ๋ง๋ค ์ต๋ ๋์ ์๊ฐ์ ๊ฒน์น์ง ์๋๋ก ์์ฑํ๋ ๊ธฐ๋ฅ
- ํ๋ก์ธ์ค์ ์ํ๋ฅผ ๋ํ๋ด๋ ๊ธฐ๋ฅ
- ์ค๋น(ready), ์คํ(running), ๋๊ธฐ(waiting), ์ข ๋ฃ(terminated)
- ํ ๋ฒ์ ํ๋ก์ธ์ค ํ๋์ฉ, 1์ด๋์ ์คํํ๋ ๊ธฐ๋ฅ
- ํ๋ก์ธ์ค๋ ์ค๋น ๋๋ ๋๊ธฐ ์ํ์์๋ง ์คํ ์ํ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅ
- 1์ด ์ดํ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ๊ธฐ๋ฅ
- ๋จ, ํ๋ก์ธ์ค๊ฐ 1๊ฐ๋ง ๋จ์ ๊ฒฝ์ฐ ๋ฐ๋ณตํด์ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ์คํ ๊ฐ๋ฅ
- ๋์ ๋์ ์๊ฐ์ด ์ต๋ ๋์ ์๊ฐ๋งํผ ์คํํ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃ ์ํ๋ก ๋ณ๊ฒฝํ๋ ๊ธฐ๋ฅ
- ๋์ ๋์ ์๊ฐ์ด ์ต๋ ๋์ ์๊ฐ๋ณด๋ค ์์ผ๋ฉด, ๋๊ธฐ ์ํ๋ก ๋ฐ๊ฟจ๋ค๊ฐ ์ค๋น ์ํ๋ก ๋ณ๊ฒฝํ๋ ๊ธฐ๋ฅ
- ํ๋ก๊ทธ๋จ ์์ ํ, ๋๋ค์ผ๋ก ํ๋ก์ธ์ค 3๊ฐ๋ฅผ ์์ฑํ๊ณ ๋๊ธฐ ํ์ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ
- 1์ด๋ง๋ค ์ ์ฒด ํ๋ก์ธ์ค ์ํ, ๋๊ธฐ ์๊ฐ, ๋์ ์คํ ์๊ฐ์ ์ถ๋ ฅํ๋ ๊ธฐ๋ฅ
๋ณธ๋ฌธ์ CPU ์ค์ผ์ค๋ง์ ๋ํด ์ฃผ๋ก ๋ค๋ฃจ๊ณ ์ ํ์ฌ
ํ๋ก์ธ์ค์ ์ค๋ ๋์ ๊ธฐ๋ณธ ๊ฐ๋
์ ๊ฐ๋ณ๊ฒ ํ๊ณ ๊ฐ ์์ ์ด๋ค.
- ํ๋ก๊ทธ๋จ์ด ์คํ๋์ด์ ๋์๊ฐ๊ณ ์๋ ์ํ๋ฅผ ํ๋ก์ธ์ค๋ผ๊ณ ํ๋ค.
- ํ๋ก์ธ์ค ๋ด์์ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ์ต์ ์์ ๋จ์์ด๋ค.
์กฐ๊ธ ๋ ์ดํดํ๊ธฐ ์ฝ๊ฒ ์์๋ฅผ ๋ค์ด๋ณด๊ฒ ๋ค.
ํ๋์ ๋ธ๋ผ์ฐ์ ๋ ํ๋ก๊ทธ๋จ์ด๋ค. (== ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋ก๊ทธ๋จ์ด๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์คํ๋์ด์ ๋์๊ฐ๊ณ ์๋ ์ํ๊ฐ ํ๋ก์ธ์ค์ธ ๊ฒ)
๋ธ๋ผ์ฐ์ ์์ ํ์ผ ๋ค์ด๋ก๋๋ฅผ ๋ฐ์ผ๋ฉฐ ์น ์ํ์ด ๊ฐ๋ฅํด์ผ ํ๊ณ
์ ํ๋ธ ์์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ด๊ณผ ๋์์ ์์ฒญ์ด ๊ฐ๋ฅํด์ผ ํ๋ค.
์ด๋ ๋ฏ ํ๊ฐ์ ํ๋ก์ธ์ค ์์์๋ ์ฌ๋ฌ ๊ฐ๋์ ์์
๋ค๋ก ๋๋๋ค.
์ด๋ฌํ ๊ฐ๋๋ฅผ ์ค๋ ๋๋ผ๊ณ ํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋น์ ๋ ํ๋ ๋ค์ด๋ณด๊ฒ ๋ค.
์๋น์์ ๋ฉ๋ด ํ๋๋ฅผ ๋ง๋๋ ๊ฒ์ ํ๋ก์ธ์ค๋ผ๊ณ ํ์.
์ด ์๋น์ ํ์คํ๋ ๋ง๋ค๊ณ , ํผ์๋ ๋ง๋ค๊ณ , ํ๋ฒ๊ฑฐ๋ ๋ง๋ ๋ค.
"ํ์คํ ๋ง๋ค๊ธฐ" "ํผ์ ๋ง๋ค๊ธฐ" "ํ๋ฒ๊ฑฐ ๋ง๋ค๊ธฐ"๊ฐ ๊ฐ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํผ์์ ํ๋ฒ๊ฑฐ ์ฃผ๋ฌธ์ด ๋ค์ด์ค๋ฉด
์ฃผ๋ฐฉ์๋ ๊ฐ๊ฐ "ํผ์๋ฅผ ๋ง๋๋ ์น์
(์กฐ๋ฆฌ๊ณต๊ฐ)" "ํ๋ฒ๊ฑฐ๋ฅผ ๋ง๋๋ ์น์
(์กฐ๋ฆฌ๊ณต๊ฐ)"์ด ์๊ธด๋ค.
์ด ๊ณผ์ ์ด CPU์ ํ ๋น์ด๋ค.
์ฃผ๋ฌธ์ด ๋ค์ด์ค๋ฉด ํ๋ฒ๊ฑฐ๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
ํจํฐ๋ฅผ ๊ตฝ๋ "์ค๋ ๋"๋ฅผ ์งํํ๋ ๋์ ๋นต์ ์์ค๋ฅผ ๋ฟ๋ฆฌ๋ "์ค๋ ๋"๋ ์งํ๋์ด์ผ ํ๋ค.
์ฌ๊ธฐ์ ์ฃผ์ํด์ผ ํ ์ ์
ํ๋ก์ธ์ค๋ ์ฃผ๋ฐฉ(CPU)์ด๋ผ๋ ์์์ ๋๋ ์ ์ฐ์ง๋ง ์ค๋ ๋๋ ์์(์กฐ๋ฆฌ๊ณต๊ฐ)์ ๊ณต์ ํ๋ค๋ ์ ์ด๋ค.
์ด๋ก ์ธํด ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ ์๋ค.
ํ๋ก์ธ์ค ์์์ ๊ณต์ ๋๋ ๋ณ์์ ์ค๋ ๋ ๋๊ฐ๊ฐ ๋์์ ์ ๊ทผํ๊ฒ ๋๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
์๊ฐ ๋ฌธ์ (๋์์ฑ)๋ก ๋ฐ์ํ๋ ๋ฌธ์ ๋ ๋๋ฒ๊น
ํด์ ์ค๋ฅ์ ์์ธ์ ์ฐพ์๋ด๋ ๊ฒ์ด ํ๋ค๋ค.
์ด๋ก ์ธํด ์ฃผ๋ชฉ์ ๋ฐ๊ฒ๋ ํจ๋ฌ๋ค์์ด ์๋๋ฐ ๋ฐ๋ก ์ด์ ์ ์ธ๊ธํ๋ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ด๋ค.
์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ์๋ผ.
- ํ๋ก์ธ์ค ์์ ์ ์ํํ๋๋ฐ ํ์ํ CPU ๊ณต๊ฐ์ ํ ๋น๋ฐ๊ธฐ ์ํ ์์
ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ ค๋ฉด CPU์ ๊ณต๊ฐ์ ํ ๋น๋ฐ์์ผ ํ๋ค.
์ต๊ณ ์ ํจ์จ์ ์ฑ๋ฅ์ ๋ด๊ธฐ ์ํด ์ธ์ ์ด๋ค ์์์ ํ๋ก์ธ์ค์ ์ผ๋ง๋ ํ ๋นํ๋์ง ๊ด๋ฆฌํ๋ ๊ฒ์ CPU ์ค์ผ์ค๋ง์ด๋ผ๊ณ ํ๋ค.
FIFO์ด๋ ๋ผ์ด๋๋ก๋น์ด๋ ๋ค๋จ๊ณ ํ๋ ๋ค์ํ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์์๋ณด๊ธฐ์ ์์
์ด ์ค์ผ์ค๋ง์ "์" ํ๋ ๊ฒ์ธ์ง ์ดํดํ๋ ๊ฒ์ด ์ค์ํ๋ค.
CPU ์ค์ผ์ค๋ง์ ๋ชฉ์ ์ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ์ ๋นํ
, ๊ณตํํ๊ฒ
, ํจ์จ์
์ผ๋ก ์์์ ํ ๋น๋ฐ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ์์ ์ฑ๊ณผ ํจ์จ์ฑ์ ๋์ด๊ธฐ ์ํด ๋๋ก๋ ๊ณต์ ์ฑ์ ์ผ๋ถ ํฌ์ํด์ผ ํ๋ค.
(์ปดํจํฐ์ ๋ชจ๋ ์ผ์ trade-off๊ฐ ์๊ธฐ ๋ง๋ จ์ด๋...)
๊ทธ๋ฆฌ๊ณ ๋ค์ํ ์ํฉ์์ ์ต์ ์ ์ ํ์ ์์ดํ๊ธฐ ๋ง๋ จ์ด๋ค.
๊ทธ๋์ ๋ค์ํ ์ํฉ์์ ์ด๋ ํ ๋ชฉ์ ์ ๋ ๊ณ ๋ คํด์ผ ํ ์ง์ ๋ฐ๋ผ ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ์ด ์๊ธด ๊ฒ์ด๋ค.
์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ก ๋ค์์ ์ค๋ช
ํ ์์ ์ด๋ฉฐ, ์ฐ์ ๋ชฉ์ ์ ๋ํด ์์๋ณด์.
- ๊ณต์ ์ฑ
- ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ์์์ ๊ณตํํ๊ฒ ํ ๋น๋ฐ์์ผ ํ๋ค.
- ์ฒ๋ฆฌ๋ ์ฆ๊ฐ(Throught put)
- ๋จ์ ์๊ฐ๋น ์ฒ๋ฆฌ๋์ ์ต๋ํํ๋ค.
- CPU ์ด์ฉ๋ฅ ์ฆ๊ฐ(CPU Utilization)
- ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ก๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ I/O ๋ช ๋ น์ ์ํด ์ ์ ์ฌ๋ ์ํ(์ดํด ์ํ)๋ฅผ ์ค์ด๊ณ CPU๊ฐ ํ๋ก์ธ์ค๋ฅผ ์คํํ ์ํ๋ก ์ ์งํด์ผ ํ๋ค.
- ๋ฐํ ์๊ฐ ๋จ์ถ(Turnaround Time)
- ํ๋ก์ธ์ค๊ฐ ์์ฑ๋ ํ ์ข ๋ฃ๊น์ง ์ฌ์ฉํ๋ ์์์ ๋ฐํํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ต์ํ ํด์ผํ๋ค.
- ๋๊ธฐ ์๊ฐ ๋จ์ถ(Waiting Time)
- ํ๋ก์ธ์ค๊ฐ ์ค๋น ์ํ ํ์์ ๋๊ธฐํ๋ ์๊ฐ์ ์ต์ํ ํ๋ค.
- ๋ฐ์ ์๊ฐ ๋จ์ถ(ResponseTime)
- ๋๊ธฐ ํ์์ ์ฒ์์ผ๋ก CPU๋ฅผ ํ ๋น๋ฐ๊ธฐ๊น์ง์ ์๊ฐ์ ์ต์ํํ๋ค.
์ผ๋ฐ์ ์ผ๋ก CPU ์ด์ฉ๋ฅ ๊ณผ ์ฒ๋ฆฌ์จ ๊ทน๋ํํ๋ ๊ฒ์ด ์ข๊ณ , ์๊ฐ ๊ด๋ จ ์งํ๋ ์ค์ด๋ ๊ฒ์ด ์ข๋ค.
์ด์์ฒด์ ์ ๋ฐ๋ผ ์ฌ์ฉํ๋ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ด ๋ค๋ฅด๋ฉฐ, ์ข
๋ฅ๋ ๋ค์ํ๋ค.
๋ณธ๋ฌธ์์๋ ๋ค์๊ณผ ๊ฐ์ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ๋ค๋ฃฐ ์์ ์ด๋ค.
๊ธฐํ๋ถ ์ค์ผ์ค๋ง, ์ฐ์ ์์ ์ค์ผ์ค๋ง, ๋ผ์ด๋ ๋ก๋น ์ค์ผ์ค๋ง
- ํ๋ก์ธ์ค๊ฐ ์ฃผ์ด์ง ์ ํ ์๊ฐ(deadline) ์์ ์๋ฃ๋๋๋ก ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- ํ๋ก์ธ์ค๊ฐ ์ผ์ ํ ์๊ฐ ์์ ์๋ฃ๋์ง ๋ชปํ๋ฉด ์งํ ์ค์ธ ํ๋ก์ธ์ค๋ ์ ๊ฑฐ๋๊ฑฐ๋ ์ฒ์๋ถํฐ ๋ค์ ์งํ๋๋ค.
- ์ ์ ๋ฐฉ์, ๋น์ ์ ๋ฐฉ์ ๋ชจ๋ ์๋ค.
- ํ๋ก์ธ์ค๊ฐ ๊ฐ๊ณ ์๋ ์ฐ์ ์์์ ๋ฐ๋ผ CPU์ ํ๋ก์ธ์ค๋ฅผ ํ ๋นํ๋ค.
- ๋น์ ์ ๋ฐฉ์์ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- ๊ฐ๊ฐ์ ํ๋ก์ธ์ค์ ๋์ผํ CPU ํ ๋น ์๊ฐ์ ๋ถ์ฌํด์ ํด๋น ์๊ฐ ๋์๋ง CPU๋ฅผ ์ด์ฉํ๊ฒ ํ๋ค.
- ํ ๋น ์๊ฐ ๋ด์ ์ฒ๋ฆฌ๋ฅผ ์๋ฃํ์ง ๋ชปํ๋ฉด ๋ค์ ํ๋ก์ธ์ค๋ก ๋์ด๊ฐ๋ค.