์ค์ผ์ค๋ง์ด๋?
CPU ๋ฒ์คํธ*๋ฅผ ๊ณ ๋ คํ์ฌ ์ด์์ฒด์ ๊ฐ ๊ณต์ ํ๊ณ ํฉ๋ฆฌ์ ์ผ๋ก CPU ์์์ ๋ถ๋ฐฐํ๋ ๊ฒ์ด๋ค.
CPU ๋ฒ์คํธ: CPU๋ฅผ ์ฌ์ฉํ๋ ๊ตฌ๊ฐ
์ค์ผ์ค๋ง์ ์ฌ์ฉํ๋ ์ด์
์ค์ผ์ค๋ง์ ์ฃผ์ ๋ชฉ์ ์ ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์์ CPU์ ์ ํด(idle) ์๊ฐ์ ์ต์ํํ์ฌ CPU์ ์ด์ฉ๋ฅ ์ ์ต๋ํํ๋ ๊ฒ์ ์๋ค.
๋ฌผ๋ก ์๋ฌด ํ๋ก์ธ์ค๋ ๋๋ค์ผ๋ก ๋ฃ์ด์๋ ์๋๊ณ ํ๋ก์ธ์ค๋ค์ ์ฌ๋ฌ ์กฐ๊ฑด๋ค์ ๊ณ ๋ คํด์ ์ด๋ค ๊ฒ๋ถํฐ ์ฒ๋ฆฌํ ์ง ๊ฒฐ์ ํ๋ค.
ํ๊ฐ์ง ์๋ฅผ ๋ค์ด๋ณด์
์ ์ถ๋ ฅ ์์ ์ด ๋ง์ ํ๋ก์ธ์ค์ CPU ์ฌ์ฉ์ด ๋ง์ ํ๋ก์ธ์ค๊ฐ ์๋ค. ์ด ๋ ์ค ์ด๋ค ๊ฒ์ ๋จผ์ ์ฒ๋ฆฌํด์ผ ๋ ๊น?
์ด ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก ์ ์ถ๋ ฅ ์์ ์ด ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค.
์๋ํ๋ฉด, ์ ์ถ๋ ฅ ์์ ์ ๋จผ์ ๋นจ๋ฆฌ ๋๋ง์น ๋ค์ CPU ์ฌ์ฉ์ด ๋ง์ ํ๋ก์ธ์ค์๊ฒ ๋ง์ CPU ์์์ ํ ๋นํด์ค ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
CPU ์ค์ผ์ค๋ง์ ์ด์ฒ๋ผ ์ค์์ฑ๊ณผ ์ฐ์ ์์๋ฅผ ๊ณ ๋ คํด์ ํ๋ก์ธ์ค๋ค์๊ฒ ์์์ ํ ๋นํด์ค๋ค.
๋ง์ฝ ๋ฌด์กฐ๊ฑด ๋จผ์ ์์ฒญํ ์์๋๋ก ์ฒ๋ฆฌํ๋ค๋ฉด, ๋น์ฅ ๊ธํ ํ๋ก์ธ์ค๊ฐ ์คํ๋์ง ์๊ณ ๋ณ๋ก ๊ธํ์ง ์์ ํ๋ก์ธ์ค๋ค๋ง ์คํ๋ ์ ์๋ค.
์ด๋ ๊ณง ์ ์ฒด ์ฑ๋ฅ์ ์ ํ๋ฅผ ์ด๋ํ๊ธฐ ๋๋ฌธ์ ์ ์ ํ ์ค์ผ์ค๋ง ๊ท์น์ ํ์๋ก ์๊ตฌ๋๋ค.
์ค์ผ์ค๋ง ๋์ ๋ฐฉ์
์์์ ์ค์ผ์ค๋ง์ ์์ CPU ๋ฒ์คํธ๋ฅผ ๊ณ ๋ คํ์ฌ์ ์ฐ์ ์์๋ฅผ ์ฑ ์ ํ๋ค๊ณ ํ์๋ค.
์ด๋ฌํ ์ฐ์ ์์ ์ ๋ณด๋ค์ PCB ๋ผ๋ ๊ณณ์ ์ ์ฅ๋์ด ์๋๋ฐ, CPU ์ ์ฅ์์ PCB๋ฅผ ์ผ์ผ์ด ๋ค์ ธ์ ์ค์ผ์ค๋ง์ ํ๋ ๊ฒ์ ์ฌ๊ฐ ๋ฒ๊ฑฐ๋ก์ด ์ผ์ด ์๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ์ด๋ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ผ์ค๋ง ํ์ธ๋ฐ ์ด ํ๋ฅผ ์ด์ฉํ์ฌ์ ํ๋ก์ธ์ค๋ค์ ๋๊ธฐ์ด์ ๊ด๋ฆฌํ ์ ์๋ค.
์ค์ผ์ค๋ง ํ๋ ๋ํ์ ์ผ๋ก ๋๊ฐ์ง๊ฐ ์๋ค.
- ์ค๋นํ(ready queue)
๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์์ฃผํ๋ฉด์ CPU๋ฅผ ํ ๋น๋ฐ์์ ์คํ๋ ์ค๋น๊ฐ ๋ ํ๋ก์ธ์ค ์งํฉ์ด๋ค. ์ฆ, ์ค์ผ์ค๋ฌ์๊ฒ ์ ํ๋์ด CPU์ ์ฌ๋ผ๊ฐ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค๋ค์ ์งํฉ์ด๋ค.
- ๋๊ธฐํ(wait,device queue)
์ ์ถ๋ ฅ ์์ ์ด ํ์ํ์ง๋ง ์ง๊ธ ๋น์ฅ CPU๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ฅ์น๋ค์ด ๋๊ธฐํ๊ณ ์๋ ํ๋ก์ธ์ค๋ค์ ์งํฉ์ด๋ค.
์๋ฅผ ๋ค์ด ํ๋ก์ธ์ค๊ฐ ๋์คํฌ์ ์ ์ถ๋ ฅ ์์ฒญ์ ํ๋ค๊ณ ๊ฐ์ ํ์ ์์ ๋์คํฌ๋ ์ฌ๋ฌ ์์ฒญ์ ์ฒ๋ฆฌํ๋๋ผ ์ง์ฐ์ด ๋ฐ์ํ ์ ์๋ค.
์ด๋ CPU๋ฅผ ์ฌ์ฉํ์ง๋ ์๋ ํ๋ก์ธ์ค๊ฐ CPU ์์์ ๋ฐ๋ ๊ฒ์ ๋นํจ์จ ์ ์ด๊ธฐ ๋๋ฌธ์ ๋๊ธฐํ๋ก ๋น ์ง๊ฒ ๋๋ค.
์ด๋ ๊ฒ ํ์ ํ๋ก์ธ์ค๋ค์ด ์์ด๋ ๊ฒ์ ์์๋ค๋ฉด ์ด๋ป๊ฒ ํ๋ก์ธ์ค๋ฅผ ์ ์ ํ๋ ์ง๋ฅผ ์์๋ณด์
๊ทธ ์ ์ ์ค์ผ์ค๋ง ๋์คํจ์ฒ์ ๊ตฌ์กฐ๋ฅผ ์ ํ์๊ฐ ์๋ค.
๋๊ฒ ์ค์ผ์ค๋ฌ์ ๋์คํจ์ฒ๋ฅผ ๊ฐ์ ๋ฒ์ฃผ๋ก ๋ฌถ์ด์ ๋งํ๋ค. ํ์ง๋ง ๋์ ์ญํ ์ ๋ช ํํ ์ฐจ์ด๊ฐ ์๋ค.
ํ๋ก์ธ์ค์ ์ํ ๋ณํ๋ก ์ธํด ํ๋ก์ธ์ค๊ฐ ๋น์ด์๊ฒ ๋๋ฉด ์ด๋ ํ๋ก์ธ์ค๋ฅผ CPU๋ก ๊ฐ์ ธ์ฌ์ง์ ๋ํ ์์ ์ด ์ด๋ฃจ์ด์ง๋ค.
์ด ๊ณผ์ ์ ์ค์ผ์ค๋ฌ๊ฐ ๋ด๋นํ๋ค.
์ค์ผ์ค๋ฌ๋ ์์์ ๋ฐฐ์ ๋ ์ค๋น ํ์์ ์ฐ์ ์์์ ๋ฐ๋ผ ํ๋ก์ธ์ค๋ฅผ ์ ํํ๊ณ ์คํํ๋ค.
๋์คํจ์ฒ๋ ์ด๋ ๊ฒ ์ ํ๋ ํ๋ก์ธ์ค๊ฐ ์ค์ ๋ก CPU์์ ์คํ๋ ์ ์๋๋กํ๋ค.
์ ํ ๋ ํ๋ก์ธ์ค๋ก ์ปจํ ์คํธ ์ค์์นญ์ ํด์ฃผ๋ฉฐ ์ด ์์ ์ ์ํด ์ปค๋๋ชจ๋๋ก ์ง์ ํ๋ค๊ฐ ๋ค์ ํ๋ก์ธ์ค ์คํ์ ์ํด ์ ์ ๋ชจ๋๋ก ์ ํํ๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ก์ด ํ๋ก์ธ์ค์ ๋ง์ง๋ง ์์ ์ํ๋ฅผ ๋ถ๋ฌ์ค๊ณ ์ ์ ํ ์์น๋ก ์ด๋์์ผ์ค๋ค.
๊ทธ๋ ๋ค๋ฉด "์ด๋ป๊ฒ CPU๋ฅผ ์ ์ ํ ๊ฒ์ธ๊ฐ?" ์ ๋ํ ๊ณ ๋ฏผ์ด ํ์ํ๋ฐ ํฌ๊ฒ ์ ์ ํ , ๋น์ ์ ํ ๋ฐฉ์์ด ์๋ค.
๋น์ ์ ํ
์คํ ์ํ์์ ํ๋ก์ธ์ค์ ์๋ฐ์ ์ธ ์ํ ๋ณ๊ฒฝ์ผ๋ก ์ธํ ์ค์ผ์ค๋ง์ด ์ผ์ด๋๋ ๊ฒ์ ๋งํ๋ค.
1. IO request : ๋ฐ์ ์
2. terminate ๋ฐ์ ์ : ์คํํ๋ ํ๋ก์ธ์ค๊ฐ ๋๋ฌ์ ๊ฒฝ์ฐ
๋น์ ์ ํ ๋ฐฉ์์ ์ํธ ํ๋ ฅ์ (๋ค๋ฅธ ํ๋ก์ธ์ค๋ฅผ ์ํด ์๋ณดํ๋ ๊ฒฝ์ฐ)์ด๋ผ๋ ์ฅ์ ์ด ์๋ ๋ฐ๋ฉด์ ๋๋ฆฐ ์๋ต ์๊ฐ*์ด๋ผ๋ ๋จ์ ์ด ์๋ค.
๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ๊ณต์ ํ๊ฒ ์ฒ๋ฆฌํ๋ค.
Response time(์๋ต ์๊ฐ): ready ํ์ ๋ค์ด์์ ์ฒ์์ผ๋ก CPU(์ต์ด๋ก)๋ฅผ ์ป๊ธฐ๊น์ง ๊ฑธ๋ฆฐ ์๊ฐ
์ ์ ํ
ํ๋ก์ธ์ค๊ฐ ๋๋์ง ์์์์๋ ์ด์์ฒด์ ๊ฐ ๊ฐ์ ํ ์ ์๋ค.
1. interrupt ๋ฐ์ ์ : ์ธ๋ถ์์ ์ธํฐ๋ฝํธ๊ฐ ๋ค์ด์จ ๊ฒฝ์ฐ
2. IO request : ๋ฐ์ ์
3. time-out ๋ฐ์ ์ : time slicing (์๋ถํ ) ์ ์ํด, ์ฃผ์ด์ง ์๊ฐ์ด ๋๋ฌ์ ๊ฒฝ์ฐ
4. wake-up ๋ฐ์ ์ : ๋๊ธฐ ํ์ ์๋ ํ๋ก์ธ์ค๋ค์ ์ค๋น ํ์ ์ฎ๊ธธ๋
5. terminate ๋ฐ์ ์ : ์คํํ๋ ํ๋ก์ธ์ค๊ฐ ๋๋ฌ์ ๊ฒฝ์ฐ
๊ธฐ๋ณธ์ ์ผ๋ก ๋น์ ์ ํ์์ ํ๋ ๋ฐฉ์์ ๋ชจ๋ ์ฌ์ฉํ์ง๋ง ์ด์์ฒด์ ๊ฐ ์ ๊ทน์ ์ผ๋ก ์ค์ผ์ค๋ง์ ๊ฐ์ ํ๋ค.
์ด๋ก ์ธํด ๋ฐ์ดํฐ ์ผ๊ด์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ๋ ํ๋ค. -> ์ด๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ฎคํ ์ค , ์ธ๋งํฌ์ด ๊ธฐ์ ์ ์ฉ
์ธ๋ถ ์ธํฐ๋ฝํธ๋ฅผ ํ์ฉํ๋ค! ํ์ง๋ง ์ฆ์ ์ปจํ ์คํธ ์ค์์นญ์ผ๋ก ์ธํด ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์๋ค.
๋ํ ์ฐ์ ์์๋ก ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ค์ CPU๋ฅผ ํ ๋น๋ฐ์ง ๋ชปํ ์ ์๋ค. (๊ธฐ์ ํ์)
์ด์ ๋ง์ง๋ง์ผ๋ก ์ค์ผ์ค๋ฌ๊ฐ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ์์ ๊ฐ์ ธ์ค๋ ์ง ์์๋ณด์
์ฌ๋ฌ๊ฐ์ง๊ฐ ์์ง๋ง ๋ํ์ ์ผ๋ก 7๊ฐ์ง๋ง ์ถ๋ ค๋ณด์๋ค.
์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ
- FCFS
์ค๋นํ์ ๋จผ์ ๋์ฐฉํ ์์๋๋ก ์ฒ๋ฆฌํ๋ค.
ํ๋ก์ธ์ค๋ค์ด ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด ๋งค์ฐ ๊ธธ์ด์ง ์ ์๋ค.
Convoy effect ํ์์ด ๋ฐ์ํ ์ ์๋ค.
Convoy effect: ์คํ ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๋ก ์ธํด ๋ค์ ์๋ ํ๋ก์ธ์ค๋ค์ ๋๊ธฐ์๊ฐ์ด ๊ธธ์ด์ง๋ ํ์
- SJF(Shortest job first)
ํ๋ก์ธ์ค์ CPU ๋ฒ์คํธ๊ฐ ๊ฐ์ฅ ์งง์ ์์๋๋ก ์คํํ๋ค.
CPU ์ฌ์ฉ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๋ ๋์ค์ , ์งง์ ํ๋ก์ธ์ค๋ ๋จผ์ !
๊ธฐ์กด์ ์ผ๋ก ๋น์ ์ ํ์ผ๋ก ๊ตฌํ๋๋ค.
- SRTF
SJF + Round Robin
๋จ์ CPU ๋ฒ์คํธ๊ฐ ๊ฐ์ฅ ์งง์ ์์๋๋ก ์คํํ๋ค.
time slice๋งํผ cpu๋ฅผ ์ด์ฉํ๋, ๋จ์ ์์ ์๊ฐ์ด ๊ฐ์ฅ ์ ์ ํ๋ก์ธ์ค๋ถํฐ ์คํ
- priority
์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๋ถํฐ ์คํ
์ฐ์ ์์๊ฐ ๊ฐ๋ค๋ฉด FCFS๋ก ์ฒ๋ฆฌ
starvation(๊ธฐ์) ํ์์ด ๋ฐ์ํ ์ ์์ (์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก์ธ์ค๋ ์คํ ๋ฌด๊ธฐํ ์ง์ฐ)
-> ์์ด์ง ๊ธฐ๋ฒ์ผ๋ก ํด๋น ๋ฌธ์ ๋ฅผ ์ํํ ์ ์์
- Round-Robin
FCFS + ํ์ ์ฌ๋ผ์ด์ค
time slice๋ก ๋๋ ์ง CPU time์ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์คํ
์ ํด์ง ์๊ฐ์ด ๋๋ฌ์์๋ ํ๋ก์ธ์ค๊ฐ ์๋ฃ๋์ง ์์๋ค๋ฉด ๋ค์ ํ์ ๋งจ ๋ค์ ์ฝ์ ํ๋ค.
Round Robin์์ time slice์ ํฌ๊ธฐ๊ฐ ๋๋ฌด ํฌ๋ค๋ฉด fcfs์์ ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ๊ทธ๋๋ก ๋ํ๋๊ณ ,
๋ฐ๋๋ก ๋๋ฌด ์์์ ธ๋ฒ๋ฆฌ๋ฉด context switching์ผ๋ก ์ธํ CPU์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค.
๋ฐ๋ผ์ ์ ์ ํ time slice์ ํฌ๊ธฐ๋ฅผ ํ์ฐ์ ์ผ๋ก ๊ณ ๋ คํด์ผํ๋ค.
- multilevel-queue
์ฐ์ ์์๋ณ๋ก ์ค๋นํ๋ฅผ ์ฌ๋ฌ๊ฐ ์ฌ์ฉํ๋ ๋ฐฉ์
ํ๋ก์ธ์ค ์ ํ๋ณ๋ก ๊ทธ๋ฃนํํด์ ํ๋ณ๋ก ๋ค๋ฅธ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ์ ์๋ค.
queue ๊ฐ์ ์ด๋์ด ๋ถ๊ฐ๋ฅํ๊ณ ๊ธฐ์ ํ์์ด ๋ฐ์ํ ์ ์๋ค.
- multilevel-feedback-queue
queue ๊ฐ์ ์ด๋์ด ๊ฐ๋ฅํ multilevel-queue ์ค์ผ์ค๋ง ๋ฐฉ์
์ ํด์ง time slice ์์ ํ๋ก์ธ์ค๋ฅผ ์๋ฃํ์ง ๋ชปํ์ผ๋ฉด ์ฐ์ ์์๊ฐ ๋ฎ์ ํ๋ก ์ด๋ํ๋ค.
-> ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ฐ์ ์์๊ฐ ์๋์ ์ผ๋ก ๋์์ง
์์ด์ง ๊ธฐ๋ฒ๋ ์ ์ฉ ๊ฐ๋ฅํ๋ค.
CPU ์ค์ผ์ค๋ง์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํํ์ด๋ค!
๊ฒฐ๋ก
์ด์์ฒด์ ๋ ๋ฉํฐํ๋ก์ธ์ค ํ๊ฒฝ์์ CPU์ ์ด์ฉ๋ฅ ์ ์ต๋ํํ๊ธฐ ์ํด ์ฌ๋ฌ ์ค์ผ์ค๋ง ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
๋ง์ผ ์ ํฉํ์ง ๋ชปํ ๋ฐฉ์์ ์ฌ์ฉํ๋ค๋ฉด ํ๋ก์ธ์ค๊ฐ ๋ฌด๊ธฐํ ์ง์ฐ๋๋ ๊ธฐ์(starvation) ํ์์ด๋ ์๋ต ์๊ฐ์ ์ง์ฐ์ ์ด๋ํ ์ ์๋ค.
๋ฐ๋ผ์ CPU ์ ์ ๋ฐฉ์์์๋ถํฐ ์๊ณ ๋ฆฌ์ฆ ๊น์ง, ์ํฉ์ ๋ง๊ฒ ์ ๋นํ ๋ฐฉ์์ ๊ณ ๋ฅด๋ ๊ฒ์ด ์ค์ํ๋ค.
'Computer Science > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๊ณผ ํ์ด์ง ๋ฐฉ์ (1) | 2024.01.03 |
---|---|
๋ฐ๋๋ฝ์ด ๋ฐ์ํ๋ ์ด์ ์ ํด๊ฒฐ ์ ๋ต (2) | 2024.01.03 |
๋ชจ๋ํฐ์ ๋์ ๋ฐฉ์๊ณผ ์๋ฐ์์์ ๋ชจ๋ํฐ (0) | 2023.12.30 |
์ด์์ฒด์ ์คํฐ๋ ์ง๋ฌธ ์ ๋ฆฌ (0) | 2023.12.16 |
ํธ๋์ญ์ ๊ณผ ๊ฒฉ๋ฆฌ ๋ ๋ฒจ (0) | 2023.07.29 |