CPU ์ค์ผ์ค๋ง์ ์๊ธฐ ์ , ํ๋ก์ธ์ค ๊ด๋ฆฌ์ ๋ํด ์์์ผ ํฉ๋๋ค!
ํ๋ก์ธ์ค ๊ด๋ฆฌ๋?
์ด์์ฒด์ ์์ ์๋ํ๋ ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฅ ์ ๋๋ค.
์ด๋ค ์๋ฏธ์์๋ ํ๋ก์ธ์(CPU) ๊ด๋ฆฌํ๋ ๊ฒ์ด๋ผ๊ณ ๋ณผ ์๋ ์์ต๋๋ค. ํ์ฌ CPU๋ฅผ ์ ์ ํด์ผ ํ ํ๋ก์ธ์ค๋ฅผ ๊ฒฐ์ ํ๊ณ , ์ค์ ๋ก CPU๋ฅผ ํ๋ก์ธ์ค์ ํ ๋นํ๋ฉฐ, ์ด ํ๋ก์ธ์ค ๊ฐ ๊ณต์ ์์ ์ ๊ทผ๊ณผ ํต์ ๋ฑ์ ๊ด๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
- ํ๋ก์ธ์ค : ํ๋ก๊ทธ๋จ์ ๋ฉ๋ชจ๋ฆฌ ์์์ ์คํ์ค์ธ ์์
- ์ค๋ ๋ : ํ๋ก์ธ์ค ์์์ ์คํ๋๋ ์ฌ๋ฌ ํ๋ฆ ๋จ์
์ ๋ฆฌํ์๋ฉด, ์๋์ ๊ฐ์ ๋ด๋น์ ๋งก๋ ๊ธฐ๋ฅ์ ๋๋ค๐
- ํ๋ก์ธ์ค ์ค์ผ์ค๋ง ๋ฐ ๋๊ธฐํ ๊ด๋ฆฌ ๋ด๋น
- ํ๋ก์ธ์ค ์์ฑ๊ณผ ์ ๊ฑฐ, ์์๊ณผ ์ ์ง, ๋ฉ์์ง ์ ๋ฌ ๋ฑ์ ๊ธฐ๋ฅ ๋ด๋น
๊ด๋ฆฌ ์ข ๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํ๋ก์ธ์ค, ์ค๋ ๋
- ์ค์ผ์ค๋ง
- ๋๊ธฐํ
- IPC ํต์
์ด ์ค ์ค๋์ ์ค์ผ์ค๋ง์ ๊ดํด ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ ์์ ์ ๋๋ค !
CPU Scheduling
ํ๋ก์ธ์ค๊ฐ ์คํ๋๋ ๋ฐฉ์๊ณผ ์์๋ฅผ ๊ฒฐ์ ํ๋ CPU์์ ์ํํ๋ ์์
์ฆ , ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋๋ CPU ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ด ์ด๋ค ํ๋ก๊ทธ๋จ์ CPU ์์ ๊ถ์ ์ค ๊ฒ์ธ์ง ๊ฒฐ์ ํฉ๋๋ค.
์ด CPU ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ ํ๋ก์ธ์ค์์ ํด์ผ ํ๋ ์ผ์ ์ค๋ ๋ ๋จ์๋ก CPU์ ํ ๋นํฉ๋๋ค.
์ ์ฌ์ฉํ๋๊ฐ?
CPU ์ค์ผ์ค๋ง์ด ์์ผ๋ฉด ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์คํํ ์ ์๊ณ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์คํ๋๊ธฐ ์ ์ ํ์ฌ ํ๋ก์ธ์ค๊ฐ ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค. ์ฆ, ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ๋์์ ์คํํ ์ ์๊ฒ ๋๋ ๊ฒ์ ๋๋ค.
์ด๋ก ์ธํด CPU ๋ฆฌ์์ค ํ์ฉ๋๊ฐ ๋จ์ด์ง๊ณ ํ๋ก์ธ์ค ๋๊ธฐ ์๊ฐ์ด ๊ธธ์ด์ ธ ์์คํ ์ฑ๋ฅ์ด ์ ํ๋๊ณ ์ฌ์ฉ์ ์์ฐ์ฑ์ด ์ ํ๋ ์ ์์ต๋๋ค.
์ด์ ์ฒด์ ๋ CPU ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ํ๋ก์ธ์ค์ ์ฐ์ ์์, ์์ ๋ฒ์คํธ ์๊ฐ ๋ฐ ๋์ฐฉ ์๊ฐ๊ณผ ๊ฐ์ ๋ค์ํ ๊ธฐ์ค์ ๋ฐ๋ผ ๋ค์์ ์คํํ ํ๋ก์ธ์ค์ ๊ธฐ๊ฐ์ ๊ฒฐ์ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๊ฐ ํ๋ก์ธ์ค๊ฐ CPU ๋ฆฌ์์ค๋ฅผ ๊ณตํํ๊ฒ ๊ณต์ ํ๋ ๋์์ ์ ์ฒด ์์คํ ์ฒ๋ฆฌ๋์ ์ต๋ํํ๊ณ ์๋ต ์๊ฐ์ ์ต์ํํ ์ ์์ต๋๋ค.
์ ๋ฐ์ ์ผ๋ก CPU ์ค์ผ์ค๋ง์ CPU ๋ฆฌ์์ค ํ์ฉ์ ์ต์ ํํ๊ณ ํจ์จ์ ์ด๊ณ ์๋ต์ฑ์ด ๋ฐ์ด๋ ์์คํ ์ฑ๋ฅ์ ๋ณด์ฅํ๋ ๋ฐ ๋์์ด ๋๋ ์ด์ ์ฒด์ ์ ํ์ ๊ธฐ๋ฅ์ ๋๋ค.
- ์์ ๋ฒ์คํธ ์๊ฐ : ํ๋ก์ธ์ค๊ฐ ์คํ์ ์๋ฃํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์์ ์๊ฐ
๋ชฉํ์ ๋์
- ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋๋ CPU ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ด ์ด๋ค ํ๋ก๊ทธ๋จ์ CPU ์์ ๊ถ์ ์ค ๊ฒ์ธ์ง ๊ฒฐ์
- ๋ชฉํ : CPU ์ด์ฉ๋ฅ ์ ๋๊ฒ, ์ฃผ์ด์ง ์๊ฐ์ ๋ง์ ์ผ์ ํ๊ฒ, ์ค๋น ํ(ready queue)์ ์๋ ํ๋ก์ธ์ค๋ ์ ๊ฒ, ์๋ต ์๊ฐ์ ์งง๊ฒ ์ค์ ํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
- ๋์ : Ready Queue์ ์๋ ํ๋ก์ธ์ค๋ค
์ค์ผ์ค๋ง ์ ํ
์ ์ , ๋น์ ์ ์ค์ผ์ค๋ง ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
- ์ ์ (preemptive)
- CPU ๋ฆฌ์์ค๊ฐ ์ ํ๋ ๊ธฐ๊ฐ ๋์๋ง ํ๋ก์ธ์ค์ ํ ๋น๋ ํ ํ์๋์ด ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋น๋ฉ๋๋ค.
- ๋ผ์ด๋๋ก๋น
- SRF
- ๋ค๋จ๊ณ ํ
- ๋น์ ์ (non-preeptive)
- ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์คํ์ ์๋ฃํ ํ์๋ง ์ ํ๋ก์ธ์ค๊ฐ ์คํ๋ฉ๋๋ค.
- FCFS
- SJF
- ์ฐ์ ์์(HRN)
๋น์ ์ ํ ๋ฐฉ์
ํ๋ก์ธ์ค๊ฐ ์ค์ค๋ก CPU ์์ ๊ถ์ ํฌ๊ธฐํ๋ ๋ฐฉ์์ด๋ฉฐ, ๊ฐ์ ๋ก ํ๋ก์ธ์ค๋ฅผ ์ค์งํ์ง ์๋๋ค. ๋ฐ๋ผ์ ์ปจํ ์คํธ ์ค์์นญ์ผ๋ก ์ธํ ๋ถํ๊ฐ ์ ๋ค.
- FCFS(First Come, First Served)
- ๊ฐ์ฅ ๋จผ์ ์จ ๊ฒ์ ๊ฐ์ฅ ๋จผ์ ์ฒ๋ฆฌํ๋ ์๊ณ ๋ฆฌ์ฆ
- ๊ธธ๊ฒ ์ํ๋๋ ํ๋ก์ธ์ค ๋๋ฌธ์ ‘์ค๋น ํ์์ ์ค๋ ๊ธฐ๋ค๋ฆฌ๋ ํ์(convoy effect)’์ด ๋ฐ์ํ๋ ๋จ์
- SJF(Shortest Job First)
์คํ ์๊ฐ์ด ๊ฐ์ฅ ์งง์ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ฅ ๋จผ์ ์คํํ๋ ์๊ณ ๋ฆฌ์ฆ- ๊ธด ์๊ฐ์ ๊ฐ์ง ํ๋ก์ธ์ค๊ฐ ์คํ๋์ง ์๋ ํ์(starvation)์ด ์ผ์ด๋๋ฉฐ ํ๊ท ๋๊ธฐ ์๊ฐ์ด ๊ฐ์ฅ ์งง์ต๋๋ค.
- ํ์ง๋ง ์ค์ ๋ก๋ ์คํ ์๊ฐ์ ์ ์ ์๊ธฐ ๋๋ฌธ์ ๊ณผ๊ฑฐ์ ์คํํ๋ ์๊ฐ์ ํ ๋๋ก ์ถ์ธกํด์ ์ฌ์ฉํฉ๋๋ค.
- ์ฐ์ ์์(HRN, Hightest Response-ratio Next)
- ๊ธฐ์กด SJF ์ค์ผ์ค๋ง์ ๊ฒฝ์ฐ ๊ธด ์๊ฐ์ ๊ฐ์ง ํ๋ก์ธ์ค๊ฐ ์คํ๋์ง ์๋ ํ์์ด ์์ต๋๋ค. ์ด๋ ์ค๋๋ ์์ ์ผ์๋ก ‘์ฐ์ ์์๋ฅผ ๋์ด๋ ๋ฐฉ๋ฒ(aging)’์ ํตํด ๋จ์ ์ ๋ณด์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋งํฉ๋๋ค.
- ์ฆ, ์ฐ์ ์์๋ฅผ ๊ณ์ฐํ์ฌ ์ ์ ๋ถํ๋ฑ์ ๋ณด์ํ ๋ฐฉ๋ฒ(SJF์ ๋จ์ ๋ณด์)
- ์ฐ์ ์์ = (๋๊ธฐ์๊ฐ + ์คํ์๊ฐ) / ์คํ์๊ฐ
์ ์ ํ ๋ฐฉ์
ํ๋ ์ด์์ฒด์ ๊ฐ ์ฐ๋ ๋ฐฉ์์ผ๋ก ์ง๊ธ ์ฌ์ฉํ๊ณ ์๋ ํ๋ก์ธ์ค๋ฅผ ์๊ณ ๋ฆฌ์ฆ์ ์ํด ์ค๋จ์์ผ ๋ฒ๋ฆฌ๊ณ ๊ฐ์ ๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค์ CPU ์์ ๊ถ์ ํ ๋นํ๋ ๋ฐฉ์์ ๋งํฉ๋๋ค.
- ๋ผ์ด๋ ๋ก๋น(RR, Round Robin)
ํ๋ ์ปดํจํฐ๊ฐ ์ฐ๋ ์ค์ผ์ค๋ง์ธ ์ฐ์ ์์ ์ค์ผ์ค๋ง์ ์ผ์ข ์ผ๋ก ๊ฐ ํ๋ก์ธ์ค๋ ๋์ผํ ํ ๋น ์๊ฐ์ ์ฃผ๊ณ ๊ทธ ์๊ฐ ์์ ๋๋์ง ์์ผ๋ฉด ๋ค์ ์ค๋น ํ(ready queue)์ ๋ค๋ก ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ- ํ ๋น ์๊ฐ์ด ๋๋ฌด ํฌ๋ฉด FCFS๊ฐ ๋๊ณ ์งง์ผ๋ฉด ์ปจํ ์คํธ ์ค์์นญ์ด ์ฆ์์ ธ์ ์ค๋ฒํค๋, ์ฆ ๋น์ฉ์ด ์ปค์ง๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ ์ฒด ์์ ์๊ฐ์ ๊ธธ์ด์ง์ง๋ง ํ๊ท ์๋ต ์๊ฐ์ ์งง์์ง๋ค๋ ํน์ง
- ์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ก๋๋ฐธ๋ฐ์์์ ํธ๋ํฝ ๋ถ์ฐ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก๋ ์ฌ์ฉ
- ๋ก๋ ๋ฐธ๋ฐ์ : ์ฌ์ฉ์์ ์๋ฒ ๊ทธ๋ฃน ์ฌ์ด์ ์์นํ๋ฉฐ ๋ณด์ด์ง ์๋ ์ด์ง์ ์ญํ ์ ํ์ฌ ๋ชจ๋ ๋ฆฌ์์ค ์๋ฒ๊ฐ ๋์ผํ๊ฒ ์ฌ์ฉ๋๋๋ก ํ๋ ๋๋ฐ์ด์ค
- ๋ก๋ ๋ฐธ๋ฐ์ฑ : ์ฌ๋ฌ์๋ฒ์ ํธ๋ํฝ ๋ถ์ฐ ์์ผ์ฃผ๋ ๊ฒ
- SRF(Shortest Remaining Time First)
- ์ค๊ฐ์ ์คํ ์๊ฐ์ด ๋ ์งง์ ์์ ์ด ๋ค์ด์๋ ๊ธฐ์กด ์งง์ ์์ ์ ๋ชจ๋ ์ํํ๊ณ ๊ทธ ๋ค์ ์งง์ ์์ ์ ์ด์ด๋๊ฐ๋๋ฐ, SRF๋ ์ค๊ฐ์ ๋ ์งง์ ์์ ์ด ๋ค์ด์ค๋ฉด ์ํํ๋ ํ๋ก์ธ์ค๋ฅผ ์ค์งํ๊ณ ํด๋น ํ๋ก์ธ์ค๋ฅผ ์ํํ๋ ์๊ณ ๋ฆฌ์ฆ
- ๋ค๋จ๊ณ ํ(Multilevel-Queue)
- ์ฐ์ ์์์ ๋ฐ๋ฅธ ์ค๋น ํ๋ฅผ ์ฌ๋ฌ ๊ฐ ์ฌ์ฉํ๊ณ , ํ๋ง๋ค ๋ผ์ด๋ ๋ก๋น์ด๋ FCFS ๋ฑ ๋ค๋ฅธ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ๊ฒ์ ๋งํฉ๋๋ค.
- ํ ๊ฐ์ ํ๋ก์ธ์ค ์ด๋์ด ์ ๋๋ฏ๋ก ์ค์ผ์ค๋ง ๋ถ๋ด์ด ์ ์ง๋ง ์ ์ฐ์ฑ์ด ๋จ์ด์ง๋ ํน์ฑ
- ์ฐ์ ์์์ค๊ฐ ์ฐ์ ์์ - ์ํธ ์์ฉ์ ์ธ ํ๋ก์ธ์ค - SJF -> CPU
- ๋ฎ์ ์ฐ์ ์์ - ๋ฐฐ์น ํ๋ก์ธ์ค - RR -> CPU
- ๋์ ์ฐ์ ์์ - ์์คํ ํ๋ก์ธ์ค - FCFS -> CPU
- ์ฐ์ ์์์ ๋ฐ๋ฅธ ์ค๋น ํ๋ฅผ ์ฌ๋ฌ ๊ฐ ์ฌ์ฉํ๊ณ , ํ๋ง๋ค ๋ผ์ด๋ ๋ก๋น์ด๋ FCFS ๋ฑ ๋ค๋ฅธ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ๊ฒ์ ๋งํฉ๋๋ค.
์ด๋ ๊ฒ CPU ์ค์ผ์ค๋ฌ๋ ํ๋ก์ธ์ค์ ์ฐ์ ์์, ํ๋ก์ธ์ค์ CPU ๋ฒ์คํธ ๊ธธ์ด, ํ๋ก์ธ์ค๊ฐ ์ค๋น ๋๊ธฐ์ด์์ ๋๊ธฐ ์ค์ธ ์๊ฐ ๋ฐ ์ฌ์ฉ ์ค์ธ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ๊ณผ ๊ฐ์ ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฐ์ ์ ๋ด๋ฆฝ๋๋ค.
'๐ช CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํธ๋์ญ์ ์ด ๋ญ๊ฐ์? (0) | 2023.04.06 |
---|---|
CPU์ ๋ฉ๋ชจ๋ฆฌ (0) | 2023.03.30 |
HTTP๊ฐ ๋ญ๊ฐ์? - ์น์ ์๋ต ๊ณผ์ (0) | 2023.03.17 |
๋ด๊ฐ ๋ง๋ ์ฟ ํค ๋๋ฅผ ์ํด ๊ตฌ์ ์ง (0) | 2023.03.16 |
ํธ๋์ญ์ ๊ณผ ๋ฌด๊ฒฐ์ฑ (1) | 2023.03.14 |