์์ฑ์ : ๊ถํ์ง, ์๊ทธ๋ฆผ, ์ค๊ฐ์, ์ฅ์ฃผ์ญ, ์ ํฌ์ฌ, ์ด์ธ๋ช
Table of Contents
- ํ๋ก๊ทธ๋จ : ํ์ผ ๋จ์๋ก ์ ์ฅ ์ฅ์น์ ์ ์ฅ๋์ด ์์ผ๋ฉฐ, ์์ง ์คํ๋์ง ์์ ์ํ์ ์ฝ๋ ๋ฉ์ด๋ฆฌ๋ฅผ ์๋ฏธํ๋ค.
- ํ๋ก์ธ์ค : ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ด๋ค. ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํด์๋ ์ฃผ์ ๊ณต๊ฐ, ํ์ผ, ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ด ํ์ํ๋ฐ ์ด์์ฒด์ ๋ก๋ถํฐ ์ด๋ฐ ๊ฒ๋ค์ ํ ๋น ๋ฐ์ ํ๋ก๊ทธ๋จ์ ํ๋ก์ธ์ค๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ์ค๋ ๋ : ํ๋ก์ธ์ค์ ์คํ ๋จ์์ด๋ค. ๊ฐ์ ํ๋ก์ธ์ค ๋ด์ ์๋ ์ค๋ ๋๋ผ๋ฆฌ๋ ํ๋ก์ธ์ค์ ์์์ ๊ณต์ ํ ์ ์๋ค.
ํ๋ก์ธ์ค๋ ์ด์์ฒด์ ๋ก๋ถํฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋น ๋ฐ์ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ด๋ค.
์ฝ๋(Code), ๋ฐ์ดํฐ(Data), ํ(Heap), ์คํ(stack) ์์ญ
- ์ฝ๋ ์์ญ : ํ๋ก์ธ์ค๊ฐ ์คํํ ์ฝ๋๊ฐ ๊ธฐ๊ณ์ด์ ํํ๋ก ์ ์ฅ๋ ๊ณต๊ฐ์ด๋ค. (์ปดํ์ผ ํ์์ ๊ฒฐ์ , Read-Only)
- ๋ฐ์ดํฐ ์์ญ : ์ ์ญ ๋ณ์, static ๋ณ์ ๋ฑ์ด ์ ์ฅ๋ ๊ณต๊ฐ์ด๋ค. ์ ์ญ ๋ณ์, static ๋ณ์๋ฅผ ์ฐธ์กฐํ ์ฝ๋๋ ์ปดํ์ผํ๊ณ ๋๋ฉด ๋ฐ์ดํฐ ์์ญ์ ์ฃผ์๊ฐ์ ๊ฐ๋ฅดํจ๋ค. (์ปดํ์ผ ํ์์ ๊ฒฐ์ , Read-Write : ์คํ ๋์ค ๋ณ๊ฒฝ ๊ฐ๋ฅ)
- ํ ์์ญ : ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ด๋ฆฌํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ผ๋ก, ํ ์์ญ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ ๊ฒ์ ๋์ ํ ๋น์ด๋ผ๊ณ ํ๋ค. (๋ฐํ์์ ๊ฒฐ์ , ์คํ๋ณด๋ค ํ ๋นํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ง์ผ๋ ๋ฐ์ดํฐ ์ฝ๊ณ ์ฐ๊ธฐ๊ฐ ๋๋ฆผ)
- ์คํ ์์ญ : ํจ์ ์์์ ์ ์ธ๋ ์ง์ญ๋ณ์, ๋งค๊ฐ๋ณ์, ๋ฆฌํด๊ฐ, ๋ณต๊ท ์ฃผ์ ๋ฑ์ด ์ ์ฅ๋๋ค. ์คํ์ LIFO ๋ฐฉ์์ ๋ฐ๋ผ ํจ์ ํธ์ถ ์ ๊ธฐ๋กํ๊ณ ์ข ๋ฃ๋๋ฉด ์ ๊ฑฐํ๋ค. (์ปดํ์ผ ํ์์ ๊ฒฐ์ , ์ ํด์ง ํฌ๊ธฐ๊ฐ ์์ผ๋ฏ๋ก stack overflow ์๋ฌ ๋ฐ์ ๊ฐ๋ฅ)
PCB๋ ํน์ ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ์ด์์ฒด์ ์ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ํ๋ก์ธ์ค๋ ์ด์์ฒด์ ์ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ CPU๋ฅผ ํ ๋น๋ฐ๋๋ค. ์์ ์ ์งํํ๋ค๊ฐ ํ๋ก์ธ์ค ์ ํ์ด ๋ฐ์ํ๋ฉด ํ๋ ์ผ์ ์ ์ฅํ๊ณ CPU๋ฅผ ๋ฐํํด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ค์ ์ค์ผ์ค๋ง์ ์ํด ์ฌ์คํ๋์์ ๋ ์ด์ ์ ์ด๋๊น์ง ์์ ์ด ์งํ๋์๋์ง ๊ทธ ์ ๋ณด๋ฅผ ์์์ผ ํ๋ค. ๊ทธ ์ ๋ณด๊ฐ ๋ด๊ธด ๊ณต๊ฐ์ด PCB์ด๋ค. ํ๋ก์ธ์ค ์์ฑ๊ณผ ๋์์ ๊ทธ ํ๋ก์ธ์ค์ ๊ณ ์ ํ PCB๋ ํจ๊ป ์์ฑ๋๋ค.
- ํ๋ก์ธ์ค ์๋ณ์ (Process ID, PID)
- ํ๋ก์ธ์ค ์ํ (Process state) : new, ready, running, waiting, terminated
- ํ๋ก๊ทธ๋จ ์นด์ดํฐ (Program counter) : ํ๋ก์ธ์ค๊ฐ ๋ค์์ ์คํํ ๋ช ๋ น์ด์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํด
- CPU ๋ ์ง์คํฐ : Accumulator, Index Register, ๋ฒ์ฉ ๋ ์ง์คํฐ ๋ฑ
- CPU ์ค์ผ์ค๋ง ์ ๋ณด : ํ๋ก์ธ์ค ์ฐ์ ์์, ์ต์ข ์คํ ์๊ฐ, CPU ์ ์ ์๊ฐ ๋ฑ
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๋ณด : Page table, Segment table ๋ฑ
- ๊ณ์ ์ ๋ณด : CPU ์ฌ์ฉ ์๊ฐ, ์ ํ ์๊ฐ, ๊ณ์ ๋ฒํธ ๋ฑ
- ์ ์ถ๋ ฅ ์ํ ์ ๋ณด : ํ๋ก์ธ์ค์ ํ ๋น๋ ์ ์ถ๋ ฅ ์ฅ์น, ๊ฐ๋ฐฉ๋ ํ์ผ ๋ชฉ๋ก ๋ฑ
์ค๋ ๋๋ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ฑํ๋ ๋ ๋ฆฝ์ ์ธ ์คํ ๋จ์์ด๋ค. ์ค๋ ๋๋ ๊ฐ์ ํ๋ก์ธ์ค ๋ด ๋ค๋ฅธ ์ค๋ ๋์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ํ ์ ์๋ค.
- ์ค๋ ๋๋ ํ๋์ ์คํ ํ๋ฆ์ด๋ฏ๋ก ์คํ๊ณผ ๊ด๋ จ๋ ๋ฐ์ดํฐ๊ฐ ํ์ํ๋ค.
- ๋ ๋ฆฝ์ : ๊ฐ ์ค๋ ๋๋ ์์ ๋ง์ ๊ณ ์ ํ ์ค๋ ๋ ID, ํ๋ก๊ทธ๋จ ์นด์ดํฐ (PC), ๋ ์ง์คํฐ ์งํฉ, ์คํ ์์ญ์ ๊ฐ์ง๋ค.
- ๊ณต์ : ๊ทธ๋ฆฌ๊ณ ์ํ ํ๋ก์ธ์ค ๋ด์ ์ฝ๋/๋ฐ์ดํฐ/ํ ์์ญ๊ณผ ๊ธฐํ ์ด์์ฒด์ ์์ (์ด๋ฆฐ ํ์ผ, ์ ํธ ๋ฑ) ์ ๋ค๋ฅธ ์ค๋ ๋์ ๊ณต์ ํ๋ค.
- ๊ฐ ์ค๋ ๋๋ ์คํ ์์ญ์ ํตํด ๋ ๋ฆฝ์ ์ธ ์คํ ํ๋ฆ์ ๊ฐ์ง๋ค.
- ์ค๋ ๋๋ ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ค ์ค๋ ๋ ํ๋์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๊ฐ์ ํ๋ก์ธ์ค ๋ด์ ๋ค๋ฅธ ์ค๋ ๋ ๋ชจ๋๊ฐ ๊ฐ์ ๋ก ์ข ๋ฃ๋๋ค. (ํ๋ก์ธ์ค๋ ํ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ ์ข ๋ฃ๋์ด๋ ๊ณต์ ์์์ ์์์ํค๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ์ํฅ์ ์ฃผ์ง ์๋๋ค.)
- Concurrent : ์ด๋ค Job ์ฌ๋ฌ ๊ฐ๊ฐ ๋์์ ์ฒ๋ฆฌ๋๋ค๋ ๊ฐ๋ (๋ฉํฐ)
- Parallel : ์ด๋ค ํ๋์ Job์ ์ชผ๊ฐ์ ์ฌ๋ฌ sub-job์ผ๋ก ๋๋๊ณ , ์ด๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌ๋ ๊ตฌ์กฐ์์ ๋์์ ์ฒ๋ฆฌํด์ ์์ฑํ๋ ๊ฐ๋ (์๋์ฐจ ์กฐ๋ฆฝ์ ์ฌ๋ฌ ์ฌ๋์ด ๋์์ ํ๋ ๊ฒ, CPU์ Core ์ฌ๋ฌ ๊ฐ ํํ)
๋ฐ๋ผ์ parallelism ์์ด concurrency๋ฅผ ๊ฐ์ง๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
๋ฉํฐ ํ๋ก์ธ์๋ ๋ฉํฐ ์ฝ์ด ๊ตฌ์กฐ๊ฐ ๋ฐ์ ํ๊ธฐ ์ ์๋ ์ฑ๊ธ ํ๋ก์ธ์๋ก ์ฌ๋น ๋ฅด๊ฒ ํ๋ก์ธ์ค๋ฅผ ์ ํํ์ฌ concurrentํ๊ฒ ๋์ํ์ง๋ง parallelํ๊ฒ ๋์ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋๋ก ํ์๋ค.
Context-Switching ์ด๋, CPU ์ฝ์ด๋ฅผ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ์ ํํ๊ธฐ ์ํด ํ์ฌ ํ๋ก์ธ์ค์ ์ํ ์ ์ฅ ๋ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํ ๋ณต์์ ์ํํ๋ ์์ ์ ๋งํ๋ค.
- Context๋ CPU๊ฐ ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ธฐ ์ํ ์ ๋ณด๋ฅผ ๋งํ๋ฉฐ, PCB์ ์ ์ฅ๋๋ ์ ๋ณด๋ค์ด ํด๋น๋๋ค.
- Context-Switching์ด ๋ฐ์ํ๋ฉด ์ปค๋์ด ์ด์ ํ๋ก์ธ์ค์ context๋ฅผ ๊ทธ ํ๋ก์ธ์ค์ PCB์ ์ ์ฅํ๊ณ ์๋กญ๊ฒ ์คํํ (์ค์ผ์ค๋ง์ผ๋ก ์์ฝ) ํ๋ก์ธ์ค์ ์ ์ฅ๋ context๋ฅผ ๋ถ๋ฌ์ค๊ฒ ๋๋ค.
- Context-Switching ์ํ ์ค์๋ CPU์ ์์์ด ์ด๋ค ํ๋ก์ธ์ค์ ํ ๋น๋ ์ํ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ CPU๊ฐ ์๋ฌด ์์ ๋ ํ ์ ์๋ค. (๋ฐ๋ผ์ Context-Switching time์ pure overhead)
์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ๋์์ ์ํํ๋ ๊ฒ์ด๋ค.
ํ๋ก์ธ์ค๋ ๋ถ๋ชจ-์์ ๊ด๊ณ๋ผ๊ณ ํด๋ ์์ ๋ง์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ์ง๊ฒ ๋๋ฉฐ, ๊ณต์ ๋๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ ์์ด ๋ ๋ฆฝ์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ๋ ํญ ๋ธ๋ผ์ฐ์ง์ ์ง์ํ๋ค. ๋ง์ผ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฉํฐ ํ๋ก์ธ์ค ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง์ง ์๋๋ค๋ฉด, ์ด๋ค ํญ์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ด ๋น์ ์ ์ข ๋ฃ๋์์ ๋ ๋ค๋ฅธ ๋ชจ๋ ํญ์ ํฌํจํ ์ ์ฒด ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๊ฒ์ด๋ค.
๊ตฌ๊ธ์ ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๋ ๋ฉํฐ ํ๋ก์ธ์ค ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๋ธ๋ผ์ฐ์ ์ ๊ฐ ํญ์ (Renderer) ํ๋ก์ธ์ค์ด๋ฉฐ, ์ด๋ค์ ๊ฐ์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ค. ํ๋์ ์น ์ฌ์ดํธ๊ฐ ๋น์ ์ ์ข ๋ฃ๋์ด๋ ๋ค๋ฅธ (Renderer) ํ๋ก์ธ์ค๋ ์ํฅ์ ๋ฐ์ง ์๋๋ค.
ํฌ๋กฌ์ ๋ค์๊ณผ ๊ฐ์ 3๊ฐ์ง ์ ํ์ ํ๋ก์ธ์ค๋ฅผ ์ง์ํ๋ค.
- ๋ธ๋ผ์ฐ์ ํ๋ก์ธ์ค : ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๋์คํฌ ๋ฐ ๋คํธ์ํฌ I/O๋ฅผ ๊ด๋ฆฌํ๋ค. ํฌ๋กฌ์ด ์์๋๋ฉด ์ ๋ธ๋ผ์ฐ์ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๋ค.
- Renderer ํ๋ก์ธ์ค : ์น ํ์ด์ง ๋ ๋๋ง์ ์ํ ๋ก์ง(HTML, JavaScript, ์ด๋ฏธ์ง ๋ฑ ์ฒ๋ฆฌ)์ ํฌํจํ๋ค. ์ด ๋, ์ ํญ์์ ์ด๋ฆฌ๋ ๊ฐ ์น ์ฌ์ดํธ์ ๋ํด ์ Renderer ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๋ฏ๋ก ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ํ์ฑํ๋ ์ ์๋ค.
- ํ๋ฌ๊ทธ์ธ ํ๋ก์ธ์ค : Flash ๋๋ QuickTime๊ณผ ๊ฐ์ ๊ฐ ํ๋ฌ๊ทธ์ธ ์ ํ์ ๋ํด ํ๋ฌ๊ทธ์ธ ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๋ค. ํ๋ฌ๊ทธ์ธ ํ๋ก์ธ์ค์๋ ํ๋ฌ๊ทธ์ธ์ ๋ํ ์ฝ๋์ ์ฐ๊ด๋ Renderer, ๋ธ๋ผ์ฐ์ ํ๋ก์ธ์ค์ ํต์ ํ ์ ์๋๋ก ํ๋ ์ถ๊ฐ ์ฝ๋๊ฐ ํฌํจ๋์ด ์๋ค.
๋ ๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ์ง๋ ํ๋ก์ธ์ค๋ผ๋ฆฌ๋ ํต์ ํ๋ ๋ฐฉ๋ฒ์ด ์๋ค. ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๊ธฐ ์ํด์ IPC (Inter-Process Communication) ๋ฉ์ปค๋์ฆ์ด ํ์ํ๋ค. IPC์๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ (shared memory) ์ ๋ฉ์์ง ์ ๋ฌ (message passing) ์ ๋๊ฐ์ง ๋ชจ๋ธ์ด ์๋ค.
- ๊ณต์ ๋ฉ๋ชจ๋ฆฌ : ํ๋ก์ธ์ค๊ฐ ๊ณต์ ํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ด ์ค์ ๋๋ฉฐ, ๊ฐ ํ๋ก์ธ์ค๋ ๊ณต์ ์์ญ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ๋ฐฉ์์ผ๋ก ์ ๋ณด๋ฅผ ๊ตํํ ์ ์๋ค.
- ๋ฉ์์ง ์ ๋ฌ : ํ๋ก์ธ์ค ๊ฐ ๋ฉ์์ง๋ฅผ ๊ตํํ๋ฉฐ ํต์ ํ๋ค.
- ๋ ๋ฆฝ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ์์ ์ฑ์ด ๋๋ค.
- ํ๋์ ํ๋ก์ธ์ค๊ฐ ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋์ด๋ ์์ ํ๋ก์ธ์ค ์ด์ธ์ ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ ์๋ฌด๋ฐ ์ํฅ์ ๋ฐ์ง ์๋๋ค.
- ๋ ๋ฆฝ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ Context Switching์ ์ํ ์ค๋ฒํค๋(์บ์ ์ด๊ธฐํ ๋ฑ)๊ฐ ๋ฐ์ํ๋ค.
- Context Switching์ด ๋น๋ฒํ๊ฒ ์ผ์ด๋๋ฉด ์ฑ๋ฅ ์ ํ๋ฅผ ์ ๋ฐํ ์ ์๋ค.
ํ ํ๋ก์ธ์ค์์ ์ฌ๋ฌ ๊ฐ์ ์ฐ๋ ๋๋ฅผ ๋์์ ์ํํ๋ ๊ฒ์ด๋ค.
- ์น ์๋ฒ ํ๋ก์ธ์ค๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ๊ทธ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ณ๋์ ์ค๋ ๋๋ฅผ ์์ฑํ๋ค. ์ด๋ ์ ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๋ ๊ฒ๋ณด๋ค ๋น์ฉ์ ์ธ ์ธก๋ฉด์์ ํจ์ฌ ํจ์จ์ ์ด๋ค.
- ์ด์์ฒด์ ์ ์ปค๋์ ๋ฉํฐ ์ค๋ ๋์ด๋ค. Linux ์์คํ
๋ถํ
์ ์ฌ๋ฌ ์ปค๋ ์ค๋ ๋๊ฐ ์์ฑ๋๊ณ , ๊ฐ ์ค๋ ๋๋ ์ฅ์น ๊ด๋ฆฌ, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋๋ ์ธํฐ๋ฝํธ ์ฒ๋ฆฌ์ ๊ฐ์ ํน์ ์์
์ ์ํํ๋ค. (
ps -ef
๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์คํ ์ค์ธ Linux ์์คํ ์์ ์ปค๋ ์ค๋ ๋๋ฅผ ํ์ ํ ์ ์๋ค.) - ์ด๋ฏธ์ง์ ๋ชจ์์์ ์ฌ์ง ์ธ๋ค์ผ์ ์์ฑํ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ณ๋์ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๊ฐ์ ๊ฐ๋ณ ์ด๋ฏธ์ง์์ ์ธ๋ค์ผ์ ์์ฑํ ์ ์๋ค.
- ์น ๋ธ๋ผ์ฐ์ ๋ ํ๋์ ์ค๋ ๋์์๋ ์ด๋ฏธ์ง๋ ํ ์คํธ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , ๋๋ค๋ฅธ ์ค๋ ๋์์๋ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์๋ค.
- ์๋ ํ๋ก์ธ์๋ ๊ทธ๋ํฝ์ ํ์ํ๊ธฐ ์ํ ์ค๋ ๋, ์ฌ์ฉ์์ ํค ์ ๋ ฅ์ ์๋ตํ๊ธฐ ์ํ ์ค๋ ๋, ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ง์ถค๋ฒ ๋ฐ ๋ฌธ๋ฒ ๊ฒ์ฌ๋ฅผ ์ํํ๊ธฐ ์ํ ์ค๋ ๋๋ฅผ ๊ฐ์ง ์ ์๋ค.
- ์๋ต์ฑ์ด ์ข์์ง๋ค. ๋จ์ผ ์ค๋ ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๊ทธ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ์๋ต์ ๊ธฐ๋ค๋ ค์ผ ํ๋ค. ๋ฉํฐ ์ค๋ ๋๋ฅผ ์ฌ์ฉํจ์ผ๋ก์ ์๋ต์ฑ์ ํฅ์์ํฌ ์ ์๋ค.
- ์์์ ๊ณต์ ํ ์ ์๋ค. ํ๋ก์ธ์ค๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ๋ฉ์์ง ์ ๋ฌ๊ณผ ๊ฐ์ ๊ธฐ์ ์ ํตํด์๋ง ์์์ ๊ณต์ ํ ์ ์๋ค. ํ์ง๋ง ์ค๋ ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ์ด ์ํ ํ๋ก์ธ์ค์ ์์์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ๋์ผํ ์ฃผ์ ๊ณต๊ฐ ๋ด์์ ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ๊ฐ์ง ์ ์๋ค.
- ๋น์ฉ์ด ์ ๋ค. ์ค๋ ๋๋ ์์ ์ด ์ํ ํ๋ก์ธ์ค์ ์์์ ๊ณต์ ํ๋ฏ๋ก ์ค๋ ๋ ์์ฑ๊ณผ Context-Switching ๋น์ฉ์ด ๋ ์ ๋ค.
- ์ค๋ ๋๋ ํ๋ก์ธ์ค ๋ด ์์์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์ค๋ ๋ ํ๋์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๊ฐ์ ํ๋ก์ธ์ค ๋ด์ ๋ชจ๋ ์ค๋ ๋๊ฐ ์ข ๋ฃ๋ ์ ์๋ค.
- ๊ณต์ ์์์ ๋ํ ๋๊ธฐํ ๋ฌธ์ ๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค.
ํ๋ก์ธ์ค ์ค์ผ์ค๋ฌ๋ ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ๊ณผ time sharing์ ๋ชฉ์ ์ ๋ฌ์ฑํ๊ธฐ ์ํด ์คํ ๊ฐ๋ฅํ ์ฌ๋ฌ ํ๋ก์ธ์ค ์ค์์ ํ๋์ ํ๋ก์ธ์ค๋ฅผ ์ ํํด ์คํํ๋ค. ๊ฐ CPU ์ฝ์ด๋ ํ๋ฒ์ ํ ํ๋ก์ธ์ค๋ฅผ ์คํํ ์ ์๋ค. ๋ฐ๋ผ์ ๋จ์ผ CPU ์ฝ์ด ์์คํ ์ ๋ฐํด ๋ฉํฐ ์ฝ์ด ์์คํ ์ ํ ๋ฒ์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ์คํํ ์ ์๋ค.
- ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ (multiprogramming) : CPU ์ฌ์ฉ๋ฅ ์ ์ต๋ํํ๊ธฐ ์ํด ํญ์ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋๋ก ํ๋ค. ์ด๋ค ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฌ์ฉํ๋ค๊ฐ I/O ์์ ๋ฑ CPU๋ฅผ ํ์๋ก ํ์ง ์๋ ์๊ฐ์ด ์ค๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค.
- ์๋ถํ (time sharing) : ๊ฐ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ๋์ ์ฌ์ฉ์๋ค์ด ์ํธ์์ฉํ ์ ์๋๋ก ํ๋ก์ธ์ค ๊ฐ CPU ์ฝ์ด๋ฅผ ์์ฃผ ์ ํํ๋ ๊ฒ์ด๋ค. CPU๊ฐ ํ๋์ ํ๋ก๊ทธ๋จ์ ์ํํ๋ ์๊ฐ์ ๋งค์ฐ ์งง์ ์๊ฐ(ms)์ผ๋ก ์ ํํ์ฌ ํ๋ก๊ทธ๋จ์ ๋ฒ๊ฐ์ ์ํํ๋๋ก ํ๋ฉด CPU๊ฐ ํ๋์ธ ํ๊ฒฝ์์๋ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ์ฌ์ฉํ๋ ๋ฏํ ํจ๊ณผ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
- New : ํ๋ก์ธ์ค๊ฐ ์์ฑ๋จ
- Running : ํ๋ก์ธ์ค์ Instruction์ด ์คํ๋จ
- Waiting : (I/O ์์ ์๋ฃ๋ ์ ํธ ์์ ๊ณผ ๊ฐ์) ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆผ
- Ready : ํ๋ก์ธ์์ ํ ๋น๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆผ
- Terminated : ํ๋ก์ธ์ค๊ฐ ์คํ์ ๋๋
- ํ๋ก์ธ์ค๊ฐ ์์คํ ์ ๋ค์ด์ค๋ฉด ready queue์ ๋ค์ด๊ฐ์ CPU ์ฝ์ด์์ ์คํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค.
- Linked List ํํ๋ก ์ ์ฅ๋๋ฉฐ, ready queue์ header๋ list์ ์ฒซ๋ฒ์งธ PCB๋ฅผ ๊ฐ๋ฆฌํค๊ณ , ๊ฐ PCB์ ํฌ์ธํฐ๋ ready queue์ ์๋ ๋ค์ PCB๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
- I/O ์์ฒญ๊ณผ ๊ฐ์ ํน์ ์ด๋ฒคํธ๊ฐ ์ฒ๋ฆฌ ์๋ฃ๋๊ธฐ๊น์ง๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค๊ฐ wait queue์ ๋ฐฐ์น๋๋ค.
- ํ๋ก์ธ์ค๋ waiting ์ํ์์ ready ์ํ๋ก ๋ฐ๋๋ฉด ready queue์ ๋ค์ด๊ฐ๊ฒ ๋๋ค.
ํ๋ก์ธ์ค๋ ์ข ๋ฃ๋ ๋๊น์ง ์์ Queueing-diagram๊ณผ ๊ฐ์ ์ฃผ๊ธฐ๋ฅผ ๋ฐ๋ณตํ๊ณ , ์ข ๋ฃ๋๋ฉด ๋ชจ๋ ํ์์ ์ ๊ฑฐ๋๊ณ PCB ๋ฐ ์์ ํ ๋น์ด ํด์ ๋๋ค.
๋ด์ฉ ์ถ๊ฐ ์์
CPU ์ค์ผ์ค๋ง์ Ready Queue์ ์๋ ํ๋ก์ธ์ค๋ค์ ๋์์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
CPU ์ค์ผ์ค๋ง์ ๋ค์์ 4๊ฐ์ง ์ํฉ์ ๋ํ์ฌ ๋ฐ์ํ ์ ์๋ค.
- ํ๋ก์ธ์ค๊ฐ running โ waiting ์ํ๋ก ์ ํ (ex. I/O ์์ฒญ ๋๋ ํ์ ํ๋ก์ธ์ค ์ข ๋ฃ๋ฅผ ์ํ wait() ํธ์ถ)
- ํ๋ก์ธ์ค๊ฐ running โ ready ์ํ๋ก ์ ํ (ex. interrupt ๋ฐ์)
- ํ๋ก์ธ์ค๊ฐ waiting โ ready ์ํ๋ก ์ ํ (ex. I/O ์๋ฃ)
- ํ๋ก์ธ์ค ์ข ๋ฃ
์ค์ผ์ค๋ง ์ ์ํฉ 1, 4์์๋ ์ ํ๊ถ ์์ด ์ ํ๋ก์ธ์ค๋ฅผ ์ ํํด์ผ ํ๋ค. ํ์ง๋ง ์ํฉ 2, 3์์๋ ๋ค์๊ณผ ๊ฐ์ ์ ํ๊ถ์ด ์๋ค.
- ๋น์ ์ ์ค์ผ์ค๋ง : CPU๊ฐ ํ ๋น๋ ์ด๋ค ํ๋ก์ธ์ค๋ ์ข ๋ฃ / waiting ์ํ๋ก ์ ํํ์ฌ CPU๋ฅผ ํด์ ํ ๋๊น์ง CPU๋ฅผ ์ ์งํ๊ณ , ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ๊ทธ ๋๊น์ง CPU๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- ์ ์ ์ค์ผ์ค๋ง : ์ด๋ค ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ๊ณ ์์ ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ CPU๋ฅผ ์ ์ ํ ์ ์๋ค. Windows, macOS, Linux ๋ฐ UNIX๋ฅผ ํฌํจํ ๊ฑฐ์ ๋ชจ๋ ์ต์ ์ด์์ฒด์ ๋ ์ ์ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค.
- ๋น์ ์ ์ค์ผ์ค๋ง
- ๋จผ์ CPU๋ฅผ ์์ฒญํ๋ ํ๋ก์ธ์ค์ ๋จผ์ CPU๊ฐ ํ ๋น๋๋ค.
- FIFO queue ๋ฅผ ์ฌ์ฉํด ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค.
- ๋ฌธ์ ์ ) convoy effect : ๋จผ์ ๋ค์ด์จ ์ด๋ค ํ๋ก์ธ์ค์ CPU ์ฒ๋ฆฌ ์๊ฐ์ด ๊ธธ ๊ฒฝ์ฐ ๋ค๋ฅธ ๋ชจ๋ ํ๋ก์ธ์ค๋ค์ด ๊ธฐ๋ค๋ฆผ์ผ๋ก์ ๋ ์งง์ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์งํ๋ ์ ์๋ ๊ฒฝ์ฐ๋ณด๋ค CPU ๋ฐ ์ฅ์น ์ฌ์ฉ๋ฅ ์ด ๋ฎ์์ง๋ ํ์
- ๋น์ ์ ์ค์ผ์ค๋ง ๋ฐฉ์ : CPU burst time์ด ๊ฐ์ฅ ์์ ํ๋ก์ธ์ค์๊ฒ ๋จผ์ CPU๋ฅผ ํ ๋นํ๋ค. ๋ง์ผ CPU burst time์ด ๊ฐ๋ค๋ฉด, FCFS ๋ฐฉ์์ ์ ์ฉํ๋ค.
- ์ ์ ์ค์ผ์ค๋ง ๋ฐฉ์ (SRTF (Shortest-Remaining-Time-First) Scheduling) : ์๋ก ๋ค์ด์จ ํ๋ก์ธ์ค์ CPU burst time์ด ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ ๋จ์ burst time ๋ณด๋ค ์๋ค๋ฉด ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ์๋ก ๋ค์ด์จ ํ๋ก์ธ์ค๊ฐ ์ ์ ํ๋ค.
- Priority Scheduling์ ํ ์์ด๋ค. (์ฐ์ ์์ = CPU burst time)
- ์ฃผ์ด์ง ํ๋ก์ธ์ค ์งํฉ์ ๋ํด ์ต์ ํ๊ท ๋๊ธฐ ์๊ฐ์ ์ ๊ณตํ๋ค๋ ์ ์์ ์ต์ ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ํ์ง๋ง CPU burst time์ ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๊ธฐ ๋๋ฌธ์ CPU ์ค์ผ์ค๋ง ์์ค์์ ๊ตฌํํ ์ ์๋ค. ์ด์ ๋ํ ํ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ SJF ์ค์ผ์ค๋ง์ ๊ทผ์ฌํํ๋ ๊ฒ์ด๋ฉฐ, ์ด์ CPU burst time ์ง์ ํ๊ท ์ผ๋ก ์์ธกํ ์ ์๋ค.
- ๋ฌธ์ ์ ) starvation : CPU ์ฒ๋ฆฌ ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๋ ๊ณ์ Ready Queue์ ๋ค๋ก ๋ฐ๋ ค๋๊ธฐ ๋๋ฌธ์ ๋ฌดํ์ ๊ธฐ๋ค๋ฆฌ๋ ์ํฉ์ด ๋ฐ์ํ ์ ์๋ค.
- ์ ์ ์ค์ผ์ค๋ง
- ๊ฐ ํ๋ก์ธ์ค๋ time quantum (or time slice) ์ด๋ผ๋ ์์ ์๊ฐ ๋จ์(10-100ms)๋ฅผ ๊ฐ๊ฒ ๋๋ค. ํ๋ก์ธ์ค๋ 1 time quantum ๋์ ์ค์ผ์ค๋ฌ์ ์ํด CPU๋ฅผ ํ ๋น ๋ฐ๊ณ , ์๊ฐ์ด ๋๋๋ฉด interrupt๋ฅผ ๋ฐ์ Ready Queue์ tail์ ๋ฐฐ์น๋๋ค.
- Ready Queue๋ Circular FIFO queue ํํ์ด๋ค.
- RR์ ํ๊ท ๋๊ธฐ ์๊ฐ์ ๊ธด ํธ์ด๋ค. ํ์ง๋ง ๊ณต์ ํ๋ค.
n
๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์๊ณ time quantum์ดq
์ผ ๋, ์ด๋ค ํ๋ก์ธ์ค๋(n-1) x q
์๊ฐ ๋จ์ ์ด์ ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ค.
Time quantum ์ค์ ์ ์ฃผ์ํ ์
- Time quantum์ด ๋๋ฌด ํฌ๋ค๋ฉด : FCFS์ ๊ฐ์์ง๋ค.
- Time quantum์ด ๋๋ฌด ์๋ค๋ฉด : Context Switching์ด ๋๋ฌด ๋น๋ฒํ๊ฒ ์ผ์ด๋ overhead๊ฐ ๋ฐ์ํ๋ค.
์์ ๊ฐ์ด RR ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ time quantum์ ํฌ๊ธฐ์ ์ข์ฐ๋ ์ ์์ผ๋ฏ๋ก ์ ์ ํ ์ ์ ํด์ผ ํ๋ฉฐ ์ด๋ context-switch time๋ณด๋ค ํฐ ๊ฒ์ด ์ข์ง๋ง ๋ ๋๋ฌด ์ปค์๋ ์ ๋๋ค. (๊ฒฝํ์ ์ผ๋ก CPU burst์ 80ํ๋ก๋ time quantum๋ณด๋ค ์งง์๊ฒ ์ข๋ค๊ณ ํจ)
- ์ ์๋ก ํํ๋ ์ฐ์ ์์๊ฐ ๋ ๋์ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ํ ๋นํ๋ ์ค์ผ์ค๋ง์ด๋ค. ์ฐ์ ์์๋ ๋ด๋ถ์ /์ธ๋ถ์ ์ผ๋ก ์ ์ํ ์ ์๋ค.
- ๋ด๋ถ์ : ์๊ฐ ์ ํ, ๋ฉ๋ชจ๋ฆฌ ์๊ตฌ ์ฌํญ, ์ด๋ฆฐ ํ์ผ ์, ํ๊ท I/O burst ๋ ํ๊ท CPU burst ๋น์จ ๋ฑ ์ธก์ ๊ฐ๋ฅํ ์๋ ์ฌ์ฉํด ๊ณ์ฐ
- ์ธ๋ถ์ : ํ๋ก์ธ์ค์ ์ค์์ฑ, ์ปดํจํฐ ์ฌ์ฉ์ ๋ํด ์ง๋ถ๋๋ ์๊ธ์ ์ ํ ๋ฐ ๊ธ์ก, ์์ ์ ํ์ํ๋ ๋ถ์, ๊ธฐํ ์ ์น์ ์์ธ ๋ฑ
- ์ ์ / ๋น์ ์ ์ค์ผ์ค๋ง ๋ชจ๋ ๊ฐ๋ฅํ๋ค.
- ์ ์ ๋ฐฉ์ : ์๋ก ๋์ฐฉํ ํ๋ก์ธ์ค์ ์ฐ์ ์์๊ฐ ํ์ฌ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ณด๋ค ๋์ผ๋ฉด CPU ์ ์
- ๋น์ ์ ๋ฐฉ์ : ๊ฐ์ ๊ฒฝ์ฐ ๋จ์ํ ์ ํ๋ก์ธ์ค๋ฅผ Ready Queue์ ๋งจ ์์ ๋๋ค.
- ๋ฌธ์ ์ ) indefinite blocking, starvation
- ์คํํ ์ค๋น๊ฐ ๋์์ผ๋ CPU๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค๋ block๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ ์ ์๋ค.
- ์ฐ์ ์์๊ฐ ๋ฎ์ ์ผ๋ถ ํ๋ก์ธ์ค๋ ๋ฌด๊ธฐํ ๋๊ธฐ ์ํ๊ฐ ๋ ์ ์๋ค.
- ํด๊ฒฐ ๋ฐฉ์) Aging, Round-Robin๊ณผ ๊ฒฐํฉ
- Aging : ์ค๋ซ๋์ ๋๊ธฐํ๋ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ์ ์ง์ ์ผ๋ก ๋์ด๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ์ ์ ํด๊ฒฐํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ๋๊ธฐ ์ค์ธ ํ๋ก์ธ์ค์ ์ฐ์ ์์๋ฅผ ๋งค์ด ๋๋ฆฌ๋ ๊ฒ์ด๋ค.
- RR+PS : ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋๋ฐ, ๋์ผํ ์ฐ์ ์์์ ํ๋ก์ธ์ค์ ๋ํด์๋ Round-Robin ์ค์ผ์ค๋ง์ ์ ์ฉํ๋ค.
Synchronous == Blocking ? Asynchronous == Non-blocking?
๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด ๋ค๋ฅด๋ค.
๋๊ธฐ์ ๋น๋๊ธฐ, Blocking ๊ณผ Non-blocking์ ๊ฐ๊ฐ ๊ด์ฌ์ ๊ฐ๋ ๋ถ๋ถ์ด ๋ค๋ฅด๋ค.
Sync & Async
๋๊ธฐ์ ๋น๋๊ธฐ๋ ํธ์ถ ๋๋ ํจ์์ ์๋ฃ๋ฅผ ํธ์ถํ ์ชฝ์์ ์ ๊ฒฝ์ ์ฐ๋ ํธ์ถ ๋ฐ์ ์ชฝ์์ ์ ๊ฒฝ์ ์ฐ๋์ ์ฐจ์ด๋ค.
Blocking & Non-blocking
Blocking ํธ์ถ๋ฐ์ ์ชฝ์ด ํธ์ถํ ์ชฝ์ ์ ์ด๊ถ์ ๋๊ฒจ์ฃผ์ง ์๋ ๊ฒ์ด๊ณ Non-blocking์ ๋ค์ ์ ์ด๊ถ์ ๋๊ฒจ ์ฃผ๋ ๊ฒ์ด๋ค.
๋ค๊ฐ์ง ์กฐํฉ
Sync & Blocking | Async & Blocking |
---|---|
Sync & Non-blocking | Async & Non-blocking |
์ด ๋ชจ๋ ๊ฒฝ์ฐ์ ์๊ฐ ๊ฐ๋ฅํ๋ค.
-
Sync & Blocking
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ฐํ๋ Sync ์ด๋ค. ํจ์๋ฅผ ํธ์ถํ๋ฉด ํธ์ถ ๋ฐ์ ์ชฝ์์ ์ ์ด๊ถ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ณผ๊ฐ์ด ๋ฐํ ๋ ๋ ๊น์ง ๋ค์ ๋์์ ์ํ ํ์ง ์๋๋ค.
-
Sync & Non-Blocking
Non-Blocking ์ด๋ผ ํจ์๊ฐ ์๋ฃ ๋์ง ์์๋ ์ ์ด๊ถ์ ๋๊ฒจ ์ฃผ์ด ํจ์๋ฅผ ํธ์ถํ ์ชฝ์์ ๋ค์ ๋์์ ์ํ ํ ์๋ ์์ง๋ง ํจ์๊ฐ ์๋ฃ๋๋ ๊ฒ์ ์ ๊ฒฝ์ ์จ์ผํ๊ธฐ ๋๋ฌธ์ ์ฃผ๊ธฐ์ ์ผ๋ก ํจ์๊ฐ ์๋ฃ ๋์๋์ง ํ์ธ ํด์ผํ๋ค.
-
Async & Blocking
์ ์์์ด ์ ๊ฐ๋ ๊ทธ๋ฆผ์ด๋ค. ์์ ์๋ฃ ์ฌ๋ถ๋ฅผ ํธ์ถ๋ ์ชฝ์์ ์ ๊ฒฝ ์ฐ๊ณ ์ ์ด๊ถ๋ ํธ์ถ๋ ์ชฝ์์ ๊ฐ์ง๊ณ ์๋ค. ์ฌ์ค์ Sync & Blocking๊ณผ ๊ฑฐ์ ๊ฐ์ ์ ์ฌ์ฉ๋์ง ์๋๋ค.
-
Async & Non-blocking
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ฐํ๋ Async์ด๋ค. ํจ์๋ฅผ ํธ์ถํ๋ฉด ์ ์ด๊ถ์ ๋ค์ ํธ์ถ ํ์ชฝ์ผ๋ก ๋๊ฒจ์ฃผ์ด ๋ค์ ๋์์ ์ด์ด ๋๊ฐ๋ฉด์ ํธ์ถ ๋ฐ์ ์ชฝ์์ ์์์ ์ฝ๋ฐฑ ํจ์์ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํดํ์ฌ์ค๋ค.
- ๋์ผํ ์์์ ๋์์ ์ ๊ทผํ๋ ์์ ์ ์คํํ๋ ์ฝ๋์์ญ
- ๋ฉํฐ ์ฐ๋ ๋ฉ์ ๋ฌธ์ ์ ์ด ๋ฐ์
Example
Counter++; => LOAD register1 = counter INCREASE register1 = register1 +1 STORE counter = register1 Counter--; => LOAD register2 = counter DECREASE register2 = counter -1 STORE counter = register2๋ง์ฝ, counter = 5 ๋ผ๊ณ ๊ฐ์ ํ๊ณ counter++ ๊ณผ counter-- ๋ฅผ ์๋ก๋ค๋ฅธ ์ฐ๋ ๋์์ ์คํ ์ํค๋ฉด ์คํ ์์์ ๋ฐ๋ผ 4, 5 ,6 ๋ชจ๋ ๊ฒฐ๊ณผ ๊ฐ์ผ๋ก ๋์ฌ ์ ์๋ค.
๊ณตํต๋ (data) ์์ญ์ ํ๋์ ํ๋ก์ธ์ค(task or thread) ๋ง ๋ค์ด ๊ฐ ์ ์๋๋ก ์ค๊ณํ๋ ๊ฒ. ์ด๋ฌํ ์ค๊ณ๋ฅผ ์ํด์๋ ์ธ๊ฐ์ง ์๊ตฌ์กฐ๊ฑด์ด ์ถฉ์กฑ ๋์ด์ผ ํ๋ค.
- Mutual Exclusion(์ํธ๋ฐฐํ)
์ด๋ ํ Task(Thread)๊ฐ Critical Section ์ ์ฌ์ฉ์ค์ด๋ฉด ๋ค๋ฅธ Task๋ ์ฌ์ฉ์ด ๋ถ๊ฐํจ.
- Progress
ํ์ฌ Critical Section ์ ์ฌ์ฉ์ค์ธ Task๊ฐ ์๊ณ Critical Section์ ๋ค์ด๊ฐ๊ธธ ์ํ๋ Task ๊ฐ ์๋ค๋ฉด ๋ฐ๋ก ๋ค์ฌ๋ณด๋
- Bounded Waiting
ํ์ ๋ ๋๊ธฐ์๊ฐ์ ๊ฐ์ ธ์ผ ํ๋ค => ๋ฌดํ ๋๊ธฐ X
- Memory Barriers
- Compare & Swap
- Atomic Variables.
- Mutex Lock (hardware-based)
- Acquire() : Lock ํ๋
- Release() : Lock ๋ฐฉ์ถ
Task๊ฐ Crtical Section์ ๋ค์ด๊ฐ ๋ acquire() ํ๊ณ ๋์ฌ ๋ release() ํ์ฌ ํ Task๋ง Critical Section ์ ๋ค์ด ๊ฐ ์ ์๊ฒ ํ๋ค.
=> ํ์ฅ์ค ์นธ ํ๊ฐ ์ด์ ํ๊ฐ!
while(true){ acquire(); /* Critical Section*/ release(); /* Remainder Section*/ } acquire(){ // ์ฌ์ฉ๊ฐ๋ฅ ํด์ง๋ฉด ํฌ๋ฆฌํฐ์ปฌ ์น์ ์ ๋ค์ด๊ฐํ ๋ฌธ์ ์ ๊ธ! while(!available) // Busy Waiting available = false; } release(){ // ์ฌ์ฉ๊ฐ๋ฅ ํ๊ฒ ํด์ค available = true; }๋ฌธ์ ์ : Busy waiting(spin lock) ์ผ๋ก ์ธํด ํจ์จ์ด ๋จ์ด์ง๋ค.
- Semaphores
Wait ๊ณผ Signal์ ์ด์ฉํ์ฌ control ํ๋ค.
Semaphore๋ Critical Section์ ๋ค์ด๊ฐ ์ ์๋ task์ ์์ด๋ค. ์์์ ๊ฐฏ์๊ฐ ์ฌ๋ฌ๊ฐ๋ผ๊ณ ์๊ฐํ๋ ๊ฒ์ด ํธํ๋ค. ๋ฐ๋ผ์ Critical Section์ ์ํธ ๋ฐฐํ์ ์ผ๋ก ๋ค์ด ๊ฐ ์ ์๋ ๊ฒ์ด๋ค.
=> ํ์ฅ์ค(Critical Section)์์ ์นธ(์์) n๊ฐ , ์ ๊ดํ์ n ํ์
Semaphore = 1 ์ด๋ฉด Mutex Lock ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์์ง์ธ๋ค.
Semaphore s // Integer Value & Positive #
- Busy Waiting ์ ์ฌ์ฉํ๋ Semaphore
wait(s){ while(s <= 0){} // busy waiting s-- } signal(s){ s++ }s ๊ฐ์ด ์์์ฌ์ผ์ง๋ง Critical Section์ ๋ค์ด๊ฐ ์์ ์ ์ํ ํ ์ ์์.
Busy waiting์ ์ฌ์ฉํ๋ ๊ตฌํ์ Critical Section ์ ์์ง๋ง ์ฌ์ฉํ๊ณ ์ ํ๋ Task์ ์๊ฐ ์ ์ ๋ ์ฌ์ฉํจ.
- Busy Waiting ์ ์ฌ์ฉํ์ง ์๋ Semaphore
// waiting queue๋ฅผ ์ฌ์ฉ wait(s){ s--; if(s < 0){ // s < 0 ์ด๋ฉด s์ ์ ๋๊ฐ ๋งํผ waiting queue์์ Task ๋๊ธฐ์ค // waiting queue์ task t ๋ฅผ ์ง์ด๋ฃ์ block(); } } signal(s){ s++; if(s <= 0){ // waiting queue์์ ๋๊ธฐ์ค์ธ task ์กด์ฌ // waiting queue์์ task t ๋ฅผ ์ ๊ฑฐ wakeup(t); } }
Mutex Lock ๊ณผ Semaphore ์ ์ฐจ์ด!
-
Semaphore ๋ Mutex Lock์ด ๋ ์ ์์ง๋ง ์ญ์ ์ฑ๋ฆฝํ์ง ์๋๋ค.
-
Semaphore ๋ ํ๋ก์ธ์ค ๋ฒ์์์ ์์ ๋ถ๊ฐ๋ฅ , Mutex๋ ์์ ๊ฐ๋ฅ
-
Mutex Lock์ Lock์ ๊ฐ๊ณ ์๋ thread๊ฐ ํด์ ๊ฐ๋ฅํ ๋ฐ๋ฉด, Semaphore๋ ์ธ๋ถ์์๋ ํด์ ๊ฐ๋ฅ
-
Semaphore ๋ ์์คํ ๋ฒ์์ ๊ฑธ์ณ์ ธ ์๊ณ ํ์ผํํ๋ก ์กด์ฌํ๋ ๋ฐ๋ฉด, Mutex Lock์ ํ๋ก์ธ์ค ๋ฒ์ ๋ด์ ์์ด์ ์ข ๋ฃ์ ์๋์ผ๋ก clean up ๋์ด์ง
- Monitor
๊ฐ์ฅ ๋ฐ์ ๋ ๊ธฐ์ , ์ด๋ฐ๊ฒ ์๋ค๋ ๊ฒ๋ง ์๊ณ ์์ด๋ ๋๊ธด ํ์ง๋ง ๊ถ๊ธํ๋ค๋ฉด,
Operating System Concepts 10th Edition(๊ณต๋ฃก์ฑ ) 6์ฅ ๋ด์ฉ์ ์ฐธ๊ณ ํ๊ธธ ๋ฐ๋.
์๋์ ์๋ฃ์์ ์์ธํ ์ค๋ช ๊ณผ ์ฝ๋๋ฅผ ๋ณผ ์ ์๋ค.
- ์์ฑ์ ์ด์ธ๋ช | Paging, Segmentation
๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๊ฐ ํ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฌผ๋ฆฌ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ณด๋ค ํฐ ํ๋ก์ธ์ค๋ฅผ ์คํ์ํฌ ์ ์๋ค. ๊ทธ๋ ๋ค๋ฉด ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํฌ๊ธฐ๊ฐ ํฐ ํ๋ก์ธ์ค๋ฅผ ์คํ์ํค๊ณ ์ถ์ผ๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น? ๊ทธ๋์ ๋์จ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก '๊ฐ์๋ฉ๋ชจ๋ฆฌ'์ด๋ค.
ํ๋ก์ธ์ค ์ ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋ด์ ์ฌ๋ผ์ค์ง ์๋๋ผ๊ณ ์คํํ ๊ฐ๋ฅํ๋๋ก ํ๋ ๊ธฐ๋ฒ์ ํตํ์ด ๊ฐ์๋ฉ๋ชจ๋ฆฌ๋ผ๊ณ ํ๋ฉฐ, ํ์ํ ๋ถ๋ถ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆผ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ ํ๋ก์ธ์ค์ ํฌ๊ธฐ๋ฅผ ์ค์ด๋
์๊ตฌ ํ์ด์ง ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค. ํ๋ก์ธ์ค ์ด๋ฏธ์ง๋ฅผ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆด ํ์๊ฐ ์์ด์ง๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ ์ฉ๋ ๋ถ์กฑ ์ด์๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ค์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๊ฐ๋
๊ณผ ์ฌ์ฉ์์ ๋
ผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ๊ฐ๋
์ ๋ถ๋ฆฌ
ํ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ๋ ์ผ๋ง๋ ์ง ํฐ ๊ฐ์์ฃผ์ ๊ณต๊ฐ์ ํ๋ก๊ทธ๋๋จธ์๊ฒ ์ ๊ณตํ ์ ์๋ค.
- ์์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ค ์ฌ์ด์ ๊ณต์ ๋ ์ ์๋๋ก ํ๋ค. ๊ฐ ํ๋ก์ธ์ค๋ค์ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ ์ ๊ฐ์ ์ฃผ์ ๊ณต๊ฐ์ ๋๊ณ ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ ์ธ์ํ์ง๋ง, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ฌ๋ผ๊ฐ ์๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ ํ์ด์ง๋ค์ ๋ชจ๋ ํ๋ก์ธ์ค์ ๊ณต์ ๋๊ณ ์๋ค.
- ํ๋ก์ธ์ค๋ค์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๋ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํ๊ณ , ํ๋ก์ธ์ค๋ค์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํตํด ํต์ ํ ์ ์๋ค.
- fork()๋ฅผ ํตํ ํ๋ก์ธ์ค ์์ฑ๊ณผ์ ์์ ํ์ด์ง๋ค์ด ๊ณต์ ๋๋ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
ํ๋ก๊ทธ๋จ ์คํ ์์ ์ ํ๋ก๊ทธ๋จ ์ ์ฒด๋ฅผ ๋์คํฌ์์ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๋ ๋์ , ์ด๊ธฐ์ ํ์ํ ๊ฒ๋ค๋ง ์ ์ฌํ๋ ์ ๋ต
์ ์๊ตฌ ํ์ด์ง์ด๋ผ ํ๋ฉฐ, ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์คํ
์์ ๋ง์ด ์ฌ์ฉ๋๋ค.
- ๊ฐ์๋ฉ๋ชจ๋ฆฌ๋ ๋๊ฐ ํ์ด์ง๋ก ๊ด๋ฆฌ๋๋ค.
- ์๊ตฌํ์ด์ง์ ์ฌ์ฉํ๋ ๊ฐ์๋ฉ๋ชจ๋ฆฌ์์๋ ์คํ๊ณผ์ ์์ ํ์ํด์ง ๋ ํ์ด์ง๋ค์ด ์ ์ฌ๋๋ค. ๋ฐ๋ผ์ ํ๋ฒ๋ ์ ๊ทผ๋์ง ์์ ํ์ด์ง๋ ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ง ์๋๋ค.
- 2021 ์๋๊ณต ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ
- https://github.com/JaeYeopHan/Interview_Question_for_Beginner
์์ ์๊ตฌํ์ด์ง์์ ์ธ๊ธ๋๋๋ก ํ๋ก์ธ์ค์ ๋์์ ํ์ํ ํ์ด์ง๋ฅผ ์์ฒญํ๋ ๊ณผ์ ์์ page fault(ํ์ด์ง ๋ถ์ฌ)
๊ฐ ๋ฐ์ํ๊ฒ ๋๋ฉด, ์ํ๋ ํ์ด์ง๋ฅผ ๋ณด์กฐ์ ์ฅ์ฅ์น์์ ๊ฐ์ ธ์ค๊ฒ ๋๋ค. ํ์ง๋ง, ๋ฌผ๋ฆฌ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ชจ๋ ์ฌ์ฉ์ค์ธ ์ํฉ์ด๋ผ๋ฉด ํ์ด์ง ๊ต์ฒด๊ฐ ์ด๋ค์ ธ์ผ ํ๋ค.
- ๋์คํฌ์์ ํ์ํ ํ์ด์ง์ ์์น๋ฅผ ์ฐพ๋๋ค.
- ๋น ํ์ด์ง ํ๋ ์์ ์ฐพ๋๋ค.
- ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ํตํด ํฌ์๋ ํ์ด์ง๋ฅผ ๊ณ ๋ฅธ๋ค.
- ํฌ์๋ ํ์ด์ง๋ฅผ ๋์คํฌ์ ๊ธฐ๋กํ๊ณ , ๊ด๋ จ ํ์ด์ง ํ ์ด๋ธ์ ์์ ํ๋ค.
- ์๋กญ๊ฒ ๋น์์ง ํ์ด์ง ํ ์ด๋ธ ๋ด ํ๋ ์์ ์ ํ์ด์ง๋ฅผ ์ฝ์ด์ค๊ณ , ํ๋ ์ ํ ์ด๋ธ์ ์์ ํ๋ค.
- ์ฌ์ฉ์ ํ๋ก์ธ์ค ์ฌ์์
First-In-First-Out Page Replacement
๋ฌผ๋ฆฌ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ด์จ ํ์ด์ง ์์๋๋ก ํ์ด์ง ๊ต์ฒด ์์ ์ ๋จผ์ ๋๊ฐ๊ฒ ๋๋ค.
-
์ฅ์
- ์ดํดํ๊ธฐ ์ฝ๊ณ , ํ๋ก๊ทธ๋๋ฐ๋ ์ฝ๋ค.
-
๋จ์
- ์ค๋๋ ํ์ด์ง๊ฐ ๋ถํ์ํ ์ ๋ณด๋ฅผ ํฌํจํ๋ค๊ณ ๋ณด์ฅํ ์ ์๋ค.
- ์ฒ์๋ถํฐ ํ๋ฐํ๊ฒ ์ฌ์ฉ๋๋ ํ์ด์ง๋ฅผ ๊ต์ฒดํด์ ํ์ด์ง ๋ถ์ฌ์จ์ ๋์ผ ์ ์๋ค.
Belady์ ๋ชจ์
: ํ์ด์ง๋ฅผ ์ ์ฅํ ์ ์๋ ํ์ด์ง ํ๋ ์์ ๊ฐ์๋ฅผ ๋๋ ค๋ ๋๋ ค ํ์ด์ง ๋ถ์ฌ๊ฐ ๋ ๋ง์ด ๋ฐ์ํ๋ค๋ ๋ชจ์์ด ์กด์ฌํ๋ค.
Optimal Page Replacement
๋ชจ๋ ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค ๋ฎ์ ํ์ด์ง ๋ถ์ฌ์จ์ ๋ณด์ด๋ฉฐ Belady์ ๋ชจ์
๋ํ ๋ฐ์ํ์ง ์๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ํต์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ์ฐพ์ ๊ต์ฒดํ๋ ๊ฒ์ด๋ค. ์ฃผ๋ก ๋น๊ต ์ฐ๊ตฌ ๋ชฉ์ ์ ์ํด ์ฌ์ฉ๋๋ค.(์์ฌ์ฉ๋๋ค๋ ๋ง)
-
์ฅ์
- ๊ฐ์ฅ ๋ฎ์ ํ์ด์ง ๋ถ์ฌ์จ์ ๋ณด์ฅํ๋ค.
-
๋จ์
- ๊ตฌํ์ด ์ด๋ ต๋ค. ๋ชจ๋ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ ๊ณํ์ ๋ฏธ๋ฆฌ ํ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
Least-Recently-Used Page Replacement
์ต์ ์๊ณ ๋ฆฌ์ฆ์ ๊ทผ์ฌ ์๊ณ ๋ฆฌ์ฆ. ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ์ ํํ์ฌ ๊ต์ฒดํ๋ค.
- ํน์ง
- FIFO < LRU < OPT
Least-Frequently-Used Page Replacement
์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ค. ํ๋ฐํ๊ฒ ์ฌ์ฉ๋๋ ํ์ด์ง๋ ์ฐธ์กฐ ํ์๊ฐ ๋ง์์ง ๊ฑฐ๋ผ๋ ๊ฐ์ ์์ ๋ง๋ค์ด์ก๋ค.
- ํน์ง
- ์ด๋ค ํ๋ก์ธ์ค๊ฐ ํน์ ํ์ด์ง๋ฅผ ์ง์ค์ ์ผ๋ก ์ฌ์ฉํ๋ค๊ฐ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๋ ์ด์ ์ฌ์ฉํ์ง ์์๋ ๊ณ์ ๋ฉ๋ชจ๋ฆฌ์ ๋จธ๋ฌผ๊ฒ ๋์ด ์ด๊ธฐ ๊ฐ์ ์ ์ด๊ธ ๋ ์ ์๋ค.
- OPT ์๊ณ ๋ฆฌ์ฆ์ ์ ๋๋ก ๊ทผ์ฌํ์ง ๋ชปํด ์ ์ฐ์ด์ง ์๋๋ค.
Most-Frequently-Used Page Replacement
์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๊ฐ ์ต๊ทผ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์๊ณ , ์์ผ๋ก ๊ณ์ ์ฌ์ฉ๋ ๊ฒ์ด๋ผ๋ ๊ฐ์ ์ ๊ธฐ๋ฐํ๋ค.
- ํน์ง
- OPT ์๊ณ ๋ฆฌ์ฆ์ ์ ๋๋ก ๊ทผ์ฌํ์ง ๋ชปํด ์ ์ฐ์ด์ง ์๋๋ค.
- 2021 ์๋๊ณต ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ
- https://github.com/JaeYeopHan/Interview_Question_for_Beginner
์บ์๋, ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ ๊ฐ์ ๋ฏธ๋ฆฌ ๋ณต์ฌํด ๋๋ ์์ ์ฅ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ์บ์๋ ์ ์ฅ ๊ณต๊ฐ์ด ์๊ณ ๋น์ฉ์ด ๋น์ผ๋์ , ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ณต์ฌํด ๋๊ธฐ ๋๋ฌธ์ ๊ณ์ฐ์ด๋ ์ ๊ทผ ์๊ฐ์ ๋ํญ ์ค์ฌ ๋ ๋น ๋ฅธ ์๋๋ก ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ค.
- ์ ๋ฐ์ดํธ๊ฐ ์์ฃผ ๋ฐ์ํ์ง ์๋ ๋ฐ์ดํฐ
- ๋ฐ๋ณต์ ์ผ๋ก ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋๋ ค์ฃผ๋ ๊ฒฝ์ฐ
- ์์ฃผ ์กฐํ๋๋ ๋ฐ์ดํฐ
- ๊ฒฐ๊ตญ ์บ์๋ ์ง์์ ์ผ๋ก DBMS ํน์ ์๋ฒ์ ์์ฒญํ๋๊ฒ์ด ์๋, ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์๋ค๊ฐ ๋ถ๋ฌ๋ค ์ฐ๋ ๊ฒ์ ์๋ฏธํ๋ค.
CPU์์ ๋ช ๋ น์ด๋ฅผ ์ํํ๋ฉฐ ๋งค๋ฒ ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๊ฒ ๋๋๋ฐ, ์ด๋ Hit rate๊ฐ ์ง์ญ์ฑ์ ๊ฐ๋๋ค. ์ง์ญ์ฑ์ด๋, ํ๋ก์ธ์ค๋ค์ด ๊ธฐ์ต์ฅ์น ๋ด์ ์ ๋ณด๋ฅผ ๊ท ์ผํ๊ฒ ์ก์ธ์คํ๋ ๊ฒ์ด ์๋๋ผ, ์ด๋ ์๊ฐ์ ํน์ ๋ถ๋ถ์ ์ง์ค์ ์ผ๋ก ์ฐธ์กฐํ๋๊ฒ์ ๋งํ๋ค. ์ง์ญ์ฑ์ ๋ฉ๋ชจ๋ฆฌ์ ์์น์ ์ ๊ทผ ์๊ฐ์ ๋ฐ๋ผ์ ๊ณต๊ฐ์ , ์๊ฐ์ ์ธ ํน์ฑ์ ๋ณด์ธ๋ค.
ํ ๋ฒ ์ฐธ์กฐํ ๋ฉ๋ชจ๋ฆฌ์ ์์ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ค์ ์ฐธ์กฐํ๊ฒ ๋๋ ์ฑ์ง์ ๋งํ๋ค.
- Array๋ผ๋ ์ผ์ ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์์ฐจ์ ์ผ๋ก ํ ๋น๋ฐ์ ์ฌ์ฉํ ๋, ๊ณต๊ฐ ํ ๋น์ ์ฐ์์ ์ผ๋ก ๋ฐ๊ฒ ๋๋ค. ์ด Array ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฌ์ฉ๋์ด์ง ๋ ์ฐ์์ ์ผ๋ก ์ฌ์ฉ๋ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ค.
ํ ๋ฒ ์ฐธ์กฐ๋ ์ฃผ์์ ๋ด์ฉ์ ๊ณง ๋ค์์ ๋ค์ ์ฐธ์กฐ๋๋ค๋ ํน์ฑ์ ๋งํ๋ค.
- ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ ์, ํน์ ๋ฉ๋ชจ๋ฆฌ๊ฐ์ผ๋ก ์ ์ธ๋ ๋ถ๋ถ์ ๋ฐ๋ณตํ์ฌ ์ ๊ทผํ๊ฒ ๋๋ค.
๋ํ ์บ์๋ ํ๋์จ์ด๊ฐ ์๋, ์๋ฒ์ ๊ธฐ์ค์ผ๋ก ๋ก์ปฌ ์บ์์ ๊ธ๋ก๋ฒ ์บ์๋ก ๋๋๋ค. ๋ก์ปฌ ์บ์์ ๊ธ๋ก๋ฒ ์บ์๋ฅผ ์๋ง๊ฒ ์ ํํ์ฌ ์ฌ์ฉํ ๊ฒฝ์ฐ, ์์คํ ์ ์ฑ๋ฅ์ ๋์ผ ์ ์๋ค.
- ์๋ฒ๋ง๋ค ์บ์๋ฅผ ๋ฐ๋ก ์ ์ฅํ๋ค.
- ๋ค๋ฅธ ์๋ฒ์ ์บ์๋ฅผ ์ฐธ์กฐํ๊ธฐ ์ด๋ ต๋ค.
- ์๋ฒ ๋ด์์ ์๋ํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋น ๋ฅด๋ค.
- ๋ก์ปฌ ์๋ฒ ์ฅ๋น์ ๋ฆฌ์์ค๋ฅผ ์ด์ฉํ๋ค.(๋ฆฌ์์ค : ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ)
- ์ฌ๋ฌ ์๋ฒ์์ ์บ์ ์๋ฒ์ ์ ๊ทผํ์ฌ ์ฐธ์กฐ ํ ์ ์๋ค.
- ๋ณ๋์ ์บ์ ์๋ฒ๋ฅผ ์ด์ฉํ๊ธฐ ๋๋ฌธ์ ์๋ฒ ๊ฐ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ ์ฝ๋ค.
- ๋คํธ์ํฌ ํธ๋ํฝ์ ์ฌ์ฉํด์ผ ํด์ Local Cache๋ณด๋ค ๋๋ฆฌ๋ค.
- ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐํ์ฌ ์ ์ฅํ ์ ์๋ค.
- ์์ฑ์ ๊ถํ์ง | [CS] ์บ์ ๋ฉ๋ชจ๋ฆฌ
- https://j0free.tistory.com/3
- 2021 ์๋๊ณต ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ํ๊ธฐ
๊ต์ฐฉ์ํ๋ ์ํธ ๋ฐฐ์ ์ ์ํด ๋ํ๋๋ ๋ฌธ์ ์ ์ผ๋ก, ๋ ์ด์์ ํ๋ก์ธ์ค๋ค์ด ์์์ ์ ์ ํ ์ํ์์ ์๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ ์ ํ๊ณ ์๋ ์์์ ์๊ตฌํ๋ฉฐ ๋ฌดํ์ ๊ธฐ๋ค๋ฆฌ๋ ํ์์ด๋ค.
๊ต์ฐฉ์ํ๊ฐ ๋ฐ์ํ๊ธฐ ์ํด์๋ ๋ค์์ ๋ค ๊ฐ์ง ์กฐ๊ฑด์ด ์ถฉ์กฑ๋์ด์ผ ํ๋๋ฐ, ํ๋๋ผ๋ ์ถฉ์กฑ๋์ง ์์ผ๋ฉด ๊ต์ฐฉ์ํ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
- ์ํธ๋ฐฐ์ (Mutual Exclusion) : ํ ๋ฒ์ ํ ๊ฐ์ ํ๋ก์ธ์ค๋ง์ด ๊ณต์ ์์์ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค.
- ์ ์ ์ ๋๊ธฐ(Hold and Wait) : ์ต์ํ ํ๋์ ์์์ ์ ์ ํ๊ณ ์์ผ๋ฉด์ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋น๋์ด ์ฌ์ฉ๋๊ณ ์๋ ์์์ ์ถ๊ฐ๋ก ์ ์ ํ๊ธฐ ์ํด ๋๊ธฐํ๋ ํ๋ก์ธ์ค๊ฐ ์์ด์ผ ํ๋ค.
- ๋น์ ์ (Non-preemption) : ๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋น๋ ์์์ ์ฌ์ฉ์ด ๋๋ ๋๊น์ง ๊ฐ์ ๋ก ๋นผ์์ ์ ์์ด์ผ ํ๋ค.
- ํํ ๋๊ธฐ(Circular Wait) : ๊ณต์ ์์์ ์ฌ์ฉํ๊ธฐ ์ํด ๋๊ธฐํ๋ ํ๋ก์ธ์ค๋ค์ด ์ํ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๊ณ , ์์ ์๊ฒ ํ ๋น๋ ์์์ ์ ์ ํ๋ฉด์ ์์ด๋ ๋ค ํ๋ก์ธ์ค์ ์์์ ์๊ตฌํด์ผ ํ๋ค.
๊ต์ฐฉ์ํ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ์ฌ์ ์ ์์คํ ์ ์ ์ดํ๋ ๋ฐฉ๋ฒ์ผ๋ก, ๊ต์ฐฉ์ํ ๋ฐ์์ ๋ค ๊ฐ์ง ์กฐ๊ฑด์ค์์ ์ด๋ ํ๋๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์์ ๋ญ๋น๊ฐ ๊ฐ์ฅ ์ฌํ ๊ธฐ๋ฒ์ด๋ค.
- ์ํธ ๋ฐฐ์ ๋ถ์ : ํ ๋ฒ์ ์ฌ๋ฌ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ์์์ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค.
- ์ ์ ๋ฐ ๋๊ธฐ ๋ถ์ : ํ๋ก์ธ์ค๊ฐ ์คํ๋๊ธฐ ์ ํ์ํ ๋ชจ๋ ์์์ ํ ๋นํ์ฌ ํ๋ก์ธ์ค ๋๊ธฐ๋ฅผ ์์ ๊ฑฐ๋, ์์์ด ์ ์ ๋์ง ์์ ์ํ์์๋ง ์์์ ์๊ตฌํ๋ค.
- ๋น์ ์ ๋ถ์ : ์์์ ์ ์ ํ๊ณ ์๋ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ์์์ ์๊ตฌํ ๋ ์ ์ ํ๊ณ ์๋ ์์์ ๋ฐ๋ฉํ๊ณ , ์๊ตฌํ ์์์ ์ฌ์ฉํ๊ธฐ ์ํด ๊ธฐ๋ค๋ฆฌ๊ฒ ํ๋ค.
- ํํ ๋๊ธฐ ๋ถ์ : ์์์ ์ ํ ์์๋ก ๋ถ๋ฅํ์ฌ ๊ณ ์ ๋ฒํธ๋ฅผ ํ ๋นํ๊ณ , ๊ฐ ํ๋ก์ธ์ค๋ ํ์ฌ ์ ์ ํ ์์์ ๊ณ ์ ๋ฒํธ๋ณด๋ค ์์ด๋ ๋ค ์ด๋ ํ์ชฝ ๋ฐฉํฅ์ผ๋ก๋ง ์์์ ์๊ตฌํ๋ค.
๊ต์ฐฉ์ํ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ ๋ฐฐ์ ํ์ง ์๊ณ , ๊ต์ฐฉ์ํ๊ฐ ๋ฐ์ํ๋ฉด ์ ์ ํ ํผํด๋๊ฐ๋ ๋ฐฉ๋ฒ์ผ๋ก, ์ํ์ ์๊ณ ๋ฆฌ์ฆ(Banker's Algorithm) ์ด ์ฌ์ฉ๋๋ค.
1. ์ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ต์คํธ๋ผ๊ฐ ์ ์ํ ๊ธฐ๋ฒ์ผ๋ก, ์ํ์์ ๋ชจ๋ ๊ณ ๊ฐ์ ์๊ตฌ๊ฐ ์ถฉ์กฑ๋๋๋ก ํ๊ธ์ ํ ๋นํ๋๋ฐ์ ์ ๋ํ ๊ธฐ๋ฒ 2. ๊ฐ ํ๋ก์ธ์ค์๊ฒ ์์์ ํ ๋นํ์ฌ ๊ต์ฐฉ์ํ๊ฐ ๋ฐ์ํ์ง ์์ผ๋ฉฐ, ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ์๋ฃ๋ ์ ์๋ ์ํ๋ฅผ ์์ ์ํ(safe state)๋ผ๊ณ ํ๋ฉฐ, ๊ต์ฐฉ์ํ๊ฐ ๋ฐ์ํ ์ ์๋ ์ํ๋ฅผ ๋ถ์์ ์ํ(unsafe state)๋ผ๊ณ ํจ 3. ์ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ๊ธฐ ์ํด์๋ ์์์ ์๊ณผ ํ๋ก์ธ์ค ์๊ฐ ์ผ์ ํด์ผ ํจ 4. ์ํ์ ์๊ณ ๋ฆฌ์ฆ์ ํ๋ก์ธ์ค์ ๋ชจ๋ ์๊ตฌ๋ฅผ ์ ํํ ์๊ฐ์์ ํ ๋นํ๋ ๊ฒ์ ๋ณด์ฅํจ
์์คํ ์ ๊ต์ฐฉ์ํ๊ฐ ๋ฐ์ํ๋์ง ์ ๊ฒํ์ฌ ๊ต์ฐฉ์ํ์ ์๋ ํ๋ก์ธ์ค์ ์์์ ๋ฐ๊ฒฌํ๋ ๊ธฐ๋ฒ์ด๋ค. ๋ฐ๊ฒฌ ํ์ ๊ต์ฐฉ์ํ ํ๋ณต(Recovery) ์ง์ ์ ์ํํ๋ฏ๋ก ๋ฐ๊ฒฌ๊ธฐ๋ฒ๊ณผ ํ๋ณต๊ธฐ๋ฒ์ ํจ๊ป ์ด๋ค. (Detection & Recovery)
๊ต์ฐฉ์ํ๋ฅผ ์ผ์ผํจ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ๊ฑฐ๋, ๊ต์ฐฉ์ํ์ ํ๋ก์ธ์ค์ ํ ๋น๋ ์์์ ์ ์ ํ์ฌ ํ๋ก์ธ์ค๋ ์์์ ํ๋ณตํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ํฌ๊ฒ ํ๋ก์ธ์ค ์ข ๋ฃ์ ์์ ์ ํ์ผ๋ก ๋๋๋ค.
- ํ๋ก์ธ์ค ์ข ๋ฃ
ํ๋ก์ธ์ค ํ๋๋ฅผ ์์๋ก ์ข ๋ฃํ์ฌ ๊ต์ฐฉ์ํ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋ ๊ฐ์ง์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
- ์ฒซ๋ฒ์งธ, ๊ต์ฐฉ์ํ ํ๋ก์ธ์ค๋ฅผ ๋ชจ๋ ์ค์งํ๋ค. ์๋นํ ํฐ ๋น์ฉ์ด ๋ค์ด๊ฐ์ง๋ง, ๋จ์ํ๋ค.
- ๋๋ฒ์งธ, ๊ต์ฐฉ์ํ๊ฐ ์ ๊ฑฐ๋ ๋๊น์ง ํ ํ๋ก์ธ์ค์ฉ ์ค์งํ๋ค. ๊ฐ ํ๋ก์ธ์ค๊ฐ ์ค์ง๋ ๋๋ง๋ค ๊ต์ฐฉ์ํ๋ฅผ ํ์ธํด์ผํ๊ธฐ ๋๋ฌธ์, ์๋นํ ์ค๋ฒํค๋๋ฅผ ์ ๋ฐํ๋ค.
- ์์ ์ ์
๊ต์ฐฉ์ํ๊ฐ ๊นจ์ง ๋๊น์ง ํ๋ก์ธ์ค๋ก๋ถํฐ ์์์ ๊ณ์์ ์ผ๋ก ์ ์ ํด ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ์ฃผ์ด์ผ ํ๋ค. ๋ฐ๋ผ์ ๋ค์ ์ฌํญ๋ค์ ๊ผญ ๊ณ ๋ คํด์ผ ํ๋ค.
- ํฌ์์ ์ ํ : ์ด๋ค ์์๊ณผ ํ๋ก์ธ์ค๊ฐ ์ ์ ๋ ๊ฒ์ธ๊ฐ๋ฅผ ๊ณ ๋ฏผํ๋ค. ๋น์ฉ์ ์ต์ํ ํ๊ธฐ ์ํด ๊ต์ฐฉ์ํ ํ๋ก์ธ์ค๊ฐ ์ ์ ํ๊ณ ์๋ ์์์ ์, ๊ต์ฐฉ์ํ ํ๋ก์ธ์ค๊ฐ ์ง๊ธ๊น์ง ์คํํ๋๋ฐ ์์ํ ์๊ฐ๊ณผ ๊ฐ์ ๋ณ์๋ฅผ ๊ณ ๋ คํ์ฌ ํฌ์์๋ฅผ ์ ํํ๋ค.
- ๋กค๋ฐฑ : ๋ง์ฝ ํน์ ํ๋ก์ธ์ค ์์์ ๊ฐ์ ๋ก ๋ฐฉ์ถํ๊ณ ์ ์ ํ๋ค๋ฉด, ๊ทธ ํ๋ก์ธ์ค๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊ฒ์ธ์ง ๊ณ ๋ฏผํด์ผ ํ๋ค. ๊ฐ์ฅ ์์ ํ ๋ฐฉ๋ฒ์ ํ๋ก์ธ์ค๋ฅผ ์ค์งํ๊ณ ์ฌ์์ํ๋ ๋กค๋ฐฑ์ด๋ค.
- ๊ธฐ์ ์ํ : ๊ณ์ํด์ ํน์ ํ๋ก์ธ์ค์ ์์์ ๊ฐ์ ๋ก ๋ฐฉ์ถ์์ผ ์ ์ ์ ์์ผ์ฃผ๋ฉด, ๊ทธ ํ๋ก์ธ์ค๋ ๊ณ์ํด์ ํฌ์์๊ฐ ๋ ํ๋ฅ ์ด ๋์์ง๊ณ , ์์ํ ์คํ์ด ์๋ฃ๋์ง ๋ชปํ๋ ๊ธฐ์์ํ์ ๋น ์ง ์ ์๋ค. ๋ฐ๋ผ์ ํ๋ก์ธ์ค์ ๋กค๋ฐฑ ํ์ ์ ํ์ ๋๋ ๋ฑ, ํ๋ก์ธ์ค๊ฐ ํ์ ๋ ์๊ฐ์๋ง ํฌ์์๋ก ์ ์ ๋๋ค๋ ๊ฒ์ ๋ฐ๋์ ๋ณด์ฅํด์ผํ๋ค.
- https://coding-factory.tistory.com/311
- 2021 ์๋๊ณต ์ ๋ณด์ฒ๋ฆฌ๊ฐ์ฌ ํ๊ธฐ
์ง๋ฌธ์ ๋ํ ๋ต์ ๋งํด๋ณด๋ฉฐ ๊ณต๋ถํ ๋ด์ฉ์ ์ ๊ฒํ ์ ์์ผ๋ฉฐ, ํด๋ฆญํ๋ฉด ๋ต๋ณ ๋ด์ฉ์ ํ์ธํ ์ ์์ต๋๋ค.
ํ๋ก๊ทธ๋จ๊ณผ ํ๋ก์ธ์ค์ ์ฐจ์ด์ ๋ํ์ฌ ์ค๋ช ํด๋ณด์ธ์.
- ํ๋ก๊ทธ๋จ: ์์ ์ ์ํด ์คํํ ์ ์๋ ํ์ผ์ ๋จ์๋ฅผ ์๋ฏธํจ.
- ํ๋ก์ธ์ค: ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ด
CPU
๋ฅผ ํ ๋น๋ฐ์ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ํ๋ก์ธ์ค๋ผ ์ผ์ปฌ์.
ํ๋ก์ธ์ค์ ์ค๋ ๋์ ์ฐจ์ด์ ๋ํ์ฌ ์ค๋ช ํด๋ณด์ธ์.
- ์ค๋ ๋๋ ํ๋ก์ธ์ค๋ฅผ ๊ตฌ์ฑํ๋ ์คํ ๋จ์์ ๋๋ค.
- ํ๋ก์ธ์ค์ ๋ฌ๋ฆฌ ์ค๋ ๋๋ ์ฝ๋, ๋ฐ์ดํฐ, ํ ์์ญ์ ํตํด ํ๋ก์ธ์ค ์์์ ๊ณต์ ํ ์ ์์ต๋๋ค.
- ํ๋ก์ธ์ค์ ๋ฌ๋ฆฌ ์ค๋ ๋๋ ์์์ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ํ ์ค๋ ๋์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๊ฐ์ ํ๋ก์ธ์ค ๋ด์ ์ค๋ ๋ ๋ชจ๋๊ฐ ์ข ๋ฃ๋ฉ๋๋ค.
ํ๋ก์ธ์ค๊ฐ ๋์ค์ ์ค์ง๋๋ ๊ฒฝ์ฐ, ๊ทธ ์์ธ๊ณผ ๋ค์ ์คํํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ผ๊น์?
- ์์ธ :
์ธํฐ๋ฝํธ
ํน์์์คํ ์ฝ
๋ฑ์ ์ํด ํ๋ก์ธ์ค๊ฐ ์ค์ง๋ ์ ์๋ค. - ๋ค์ ์คํํ ์ ์๋ ๋ฐฉ๋ฒ : PCB ์์ ํด๋น ํ๋ก์ธ์ค์ ์ ๋ณด(ํ๋ก๊ทธ๋จ์นด์ดํฐ์ ๊ฐ์ ์คํ ์ ๋ณด ๋ฑ)๊ฐ ์ ์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ถํ์ ์คํ ๊ฐ๋ฅํ ์ํ๊ฐ ๋๋ฉด PCB๋ฅผ ํตํด ๋ค์ ์คํํ ์ ์๋ค.
ํ๋ก์ธ์ค์ ํ, ์คํ ์์ญ์๋ ์ด๋ค ์ ๋ณด๊ฐ ์๋์?
- ํ ์์ญ: ๋์ ํ ๋น๋๋ ๋ชจ๋ ์์๋ค
- ์คํ ์์ญ: ๋งค๊ฐ๋ณ์, ๋ก์ปฌ๋ณ์, ๋ฆฌํด๊ฐ, ๋ณต๊ท์ฃผ์ ๋ฑ
์คํ์ ์ค๋ ๋๋ง๋ค ๋ ๋ฆฝ์ ์ผ๋ก ํ ๋นํ๋ ์ด์ ๊ฐ ๋ฌด์์ธ๊ฐ์?
๊ฐ ์ค๋ ๋๊ฐ ๋
๋ฆฝ์ ์ธ ์คํ ํ๋ฆ์ ๊ฐ๊ธฐ ์ํด์๋ ๋
๋ฆฝ์ ์ธ ํจ์ ํธ์ถ์ด ๋ณด์ฅ
๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค.
์ค๋ ๋์ ๋ฉํฐ ์ค๋ ๋์ ์ฐจ์ด์ ๋ํ์ฌ ์ค๋ช ํ๊ณ , ๋ฉํฐ ์ค๋ ๋์ ์ฅ๋จ์ ์ ์ค๋ช ํด๋ณด์ธ์.
- ์ค๋ ๋ : ํ ๋น ๋ฐ์ ์์์ ์ด์ฉํ ํ๋ก์ธ์ค์ ์คํ ํ๋ฆ์ ๋จ์์ด๋ค.
- ๋ฉํฐ ์ค๋ ๋ : ํ ํ๋ก์ธ์ค ๋ด์์ ์ด๋ฌํ ์ค๋ ๋๊ฐ ์ฌ๋ฌ ๊ฐ ๋์ํ๋ ๋ฐฉ์์ ์๋ฏธํ๋ค.
- ๋ฉํฐ์ค๋ ๋์ ์ฅ์ : ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ๊ฐ ๋๋ ๋ฐฉ์์ ๋นํด ์ปจํ ์คํธ ์ค์์นญ ๋น์ฉ์ด ์ ๊ฒ ๋ค๋ฉฐ ์๋ต ์๊ฐ์ด ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์๋ค.
- ๋ฉํฐ์ค๋ ๋์ ๋จ์ : ๊ฐ์ ํ๋ก์ธ์ค ๋ด์ ์์์ ๋ค๋ฅธ ์ค๋ ๋๋ค๊ณผ ๊ณต์ ํ๋ฏ๋ก
๋๊ธฐํ ๋ฌธ์
๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค. ๋ํ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด ๋ด๋ถ ์ค๋ ๋๋ค ์ญ์ ๋ชจ๋ ์ข ๋ฃ๋๋ฏ๋ก ํ ์ค๋ ๋๊ฐ ํ๋ก์ธ์ค๋ฅผ ์๋์น ์๊ฒ ์ข ๋ฃํ์ ๊ฒฝ์ฐ ๋๋จธ์ง ์ค๋ ๋๋ค๋ ๋ชจ๋ ์ข ๋ฃ๋ ์ ์๋ค๋ ๋จ์ ์ด ์๋ค.
๋ฉํฐ ์ค๋ ๋์ ๋ฉํฐ ํ๋ก์ธ์ค์ ์ฐจ์ด๋ฅผ ๋งํด์ฃผ์ธ์.
- ๋ฉํฐ ์ค๋ ๋ : ์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ์ฐจ์ง, context switch ๋น ๋ฆ. ํ์ง๋ง ๋๊ธฐํ ๋ฌธ์ ๊ฐ ์๊ณ ํ๋์ ์ค๋ ๋๊ฐ ์ข ๋ฃ๋๋ฉด ์ ์ฒด ์ค๋ ๋๊ฐ ์ข ๋ฃ๋ ์ ์์.
- ๋ฉํฐ ํ๋ก์ธ์ค : ํ๋์ ํ๋ก์ธ์ค๊ฐ ์ฃฝ๋๋ผ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์๋ ์ํฅ์ ๋ผ์น์ง ์์. ํ์ง๋ง ๋ง์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐจ์งํ๊ณ CPU ์ ์ ์๊ฐ์ ๋ง์ด ์ฐจ์งํจ.
Context Switching์ ๋ํ์ฌ ์ค๋ช ํด๋ณด์ธ์.
ํ๋ก์ธ์ค๋ CPU๋ฅผ ํ ๋น๋ฐ์ ์ํ์ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ด๋ค. ํ์ฌ CPU๋ฅผ ํ ๋น๋ฐ์ ์คํ์ค์ธ ํ๋ก์ธ์ค A์ ๋๊ธฐ์ค์ธ ํ๋ก์ธ์ค B๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์ ๋, A ํ๋ก์ธ์ค์์ B ํ๋ก์ธ์ค๋ก CPU ์ฌ์ฉ/์ ์ด๊ถ์ด ์ด์ ๋๋ ๊ฒ์ Context Switching
์ด๋ผ๊ณ ํ๋ค.
์ค์ผ์ฅด๋ง์ด ์ ํ์ํ๊ฐ์?
ํ์ ์ ์ธ ๋ฉ๋ชจ๋ฆฌ(์์)๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด, ๊ณต์ ์ฑ์ ์ฃผ๊ธฐ ์ํด ํ์ํ๋ค.
์ค์ผ์ค๋ฌ์ CPU ์ค์ผ์ค๋ฌ์ ์ฐจ์ด์ ๋ํ์ฌ ์ค๋ช ํด๋ณด์ธ์.
์ค์ผ์ค๋ฌ(=Job Scehduler, ์ฅ๊ธฐ ์ค์ผ์ค๋ฌ)๋ ๋์คํฌ์ ๋ฉ๋ชจ๋ฆฌ ๊ฐ ์ค์ผ์ค๋ง์ ๋ด๋นํ๋ค.
CPU ์ค์ผ์ฅด๋ฌ(= ๋จ๊ธฐ ์ค์ผ์ค๋ฌ)๋ ๋ฉ๋ชจ๋ฆฌ์ CPU ๊ฐ ์ค์ผ์ค๋ง์ ๋ด๋นํ๋ค.
์ค๊ธฐ ์ค์ผ์ฅด๋ฌ์์ suspended ์ํ์ blocked ์ํ์ ๋ค๋ฅธ์ ์ ๋ฌด์์ธ๊ฐ์?
blocked ์ํ๋ ๋ค๋ฅธ I/O ์์ ์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ์ด๊ธฐ ๋๋ฌธ์ ์ค์ค๋ก ready queue๋ก ๋์๊ฐ์ ์์ง๋ง, suspended๋ ์ธ๋ถ์ ์ธ ์ด์ ๋ก ์ ์๋๊ธฐ ๋๋ฌธ์ ์ค์ค๋ก ๋์๊ฐ ์ ์๋ค.
FCFS ์ค์ผ์ค๋ง์ ๊ฐ์ ํ ์ค์ผ์ค๋ง ๋ฐฉ์์ ๋ํ์ฌ ์ค๋ช ํด๋ณด์ธ์.
FCFS๋ ๋จผ์ ๋์ฐฉํ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ํ ๋นํ๋ ๊ธฐ๋ฒ์ด๋ค.
ํ์ง๋ง ๋จผ์ ๋์ฐฉํ ํ๋ก์ธ์ค๊ฐ ์คํ ์๊ฐ์ด ๊ธด ๊ฒฝ์ฐ ๋์ค์ ๋์ฐฉํ ํ๋ก์ธ์ค๋ค์ ๋๊ธฐ ์๊ฐ์ด ๊ธธ์ด์ง๋ Convoy Effect
๋ผ๋ ๋ฌธ์ ์ ์ ๊ฐ์ง๊ณ ์๋ค.
์ด๋ฅผ ๊ฐ์ ํ SJF(Shortest Job First)
๊ธฐ๋ฒ์ด ์๋ค.
SJF๋ ์งง์ ์คํ์๊ฐ์ ๊ฐ๋ ํ๋ก์ธ์ค์๊ฒ CPU๋ฅผ ๋จผ์ ํ ๋นํ๋ ๊ธฐ๋ฒ์ด๋ค.
Convoy Effect๋ ํด๊ฒฐํ์์ง๋ง, ์คํ์๊ฐ์ด ๊ธด ํ๋ก์ธ์ค๋ ๊ณ์ CPU๋ฅผ ํ ๋น๋ฐ์ง ๋ชปํ๋ Starvation ํ์
์ด ์ผ์ด๋ ์ ์๋ค.
Round Robin ์ค์ผ์ค๋ง ๋ฐฉ์์์ time quantum ์ค์ ์ ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ค๋ช ํด๋ณด์ธ์.
RR ๊ธฐ๋ฒ์์
-
ํ์ํํ ์ด ๊ธด ๊ฒฝ์ฐ: ํ์ํํ ์ด ํ๋ก์ธ์ค์ ์คํ์๊ฐ๊ณผ ๋น์ทํด์ง๋ค๋ฉด FCFS๋ ๋ค๋ฅผ ๋ฐ ์์ด์ง๋ค.
-
ํ์ํํ ์ด ์งง์ ๊ฒฝ์ฐ: ํ์ํํ ์ด ์งง์ Context Switching์ด ์์ฃผ ์ผ์ด๋๊ฒ ๋์ด ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค.
์ค๋ฒํค๋๊ฐ ์ด๋ค๊ฑด๊ฐ์?
ํ๋ก๊ทธ๋จ์ ์คํ ํ๋ฆ ๋์ค์ ๋๋จ์ด์ง ์์น์ ์ฝ๋๋ฅผ ์คํ์์ผ์ผ ํ ๋, ์ถ๊ฐ์ ์ผ๋ก ์๊ฐ, ๋ฉ๋ชจ๋ฆฌ, ์์์ด ์ฌ์ฉ๋๋ ํ์์ ์ค๋ฒํค๋๋ผ ํ๋ค.
Synchronous ์ Asynchronous์ ์ฐจ์ด์ ์ด ๋ฌด์์ธ๊ฐ์.
ํธ์ถ๋๋ ํจ์์ ๋ํด ์์ ์๋ฃ ์ฌ๋ถ๋ฅผ ํธ์ถํ ์ชฝ์์ ํ์ธํ๋ฉด Synchronous, ๋ฐ๋๋ก ํธ์ถ ๋ฐ์ ์ชฝ์์ ํ์ธ์ ํ๋ฉด Asynchronous ๋ผ๊ณ ํ๋ค.
Blocking ๊ณผ Non-Blocking์ ์ฐจ์ด์ ์ด ๋ฌด์์ธ๊ฐ์.
ํธ์ถ ๋ฐ์ ์ชฝ์์ ํจ์๊ฐ์ ๋ฐ๋ก ๋ฆฌํดํ์ง ์๊ณ ์ ์ด๊ถ์ ๋ค๊ณ ์์ผ๋ฉด Blocking, ๋ฐ๋ก ๋ฆฌํด์ ํด์ฃผ์ด ๋ค๋ฅธ ์ผ์ ํ ์ ์์ผ๋ฉด Non-blocking ์ด๋ค.
Race Condition(๊ฒฝ์ ์ํ)์ ๋ํ์ฌ ๊ฐ๋จํ ์์๋ฅผ ๋ค์ด ์ค๋ช ํด์ฃผ์ธ์.
Race Condition์ด๋ ๋ ๊ฐ ์ด์์ concurrentํ ํ๋ก์ธ์ค ํน์ ์ค๋ ๋๊ฐ ๊ณต์ ์์์ ์ ๊ทผํ๋ ค๊ณ ํ ๋ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ ์์ด ์ ๊ทผํ์ฌ ๊ทธ ์์์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋ ๋ฌธ์ ๋ฅผ ๋งํฉ๋๋ค. ๊ฐ๋จํ ์์๋ก๋ ๊ณ์ข ์๊ณ ๊ด๋ฆฌ๋ฅผ ์ค๋ช ํด๋ณด๊ฒ ์ต๋๋ค. ๊ณ์ข์ ์๊ณ ๋ผ๋ ๊ณต์ ์์ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ๊ณ ์ถ๊ธํ๋ ์ฐ์ฐ์ ์ํํ ๋, ๋๊ธฐํ๊ฐ ์ด๋ฃจ์ด์ง์ง ์์ผ๋ฉด ์๊ณ ์์ ์ด์ค์ผ๋ก ์ถ๊ธ๋๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ฉฐ ์ํ๋ ๋, ๊ฐ ํ๋ก์ธ์ค์์ ๊ณต์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋ ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ๋ฌด์์ด๋ผ ๋ถ๋ฅด๋์? ๊ทธ๋ฆฌ๊ณ ๊ทธ์ ๋ํ ๊ฐ๋จํ ์ค๋ช ๋ถํ๋๋ฆฝ๋๋ค.
์๊ณ ์์ญ์ ๋๋ค. ์๊ณ ์์ญ์ ๊ณต์ ์์์ ๋์์ ์ ๊ทผํ๋ ์์ ์ ์คํํ๋ ์ฝ๋ ์์ญ์ ์นญํฉ๋๋ค. ๊ณต์ ์์์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ ๊ทผํ ๋ ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์ ํ ํ๋ก์ธ์ค๊ฐ ์๊ณ ๊ตฌ์ญ์ ์ํํ ๋๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ํด์ผ ํฉ๋๋ค.
์๊ณ ์์ญ์ ํ๋ก์ธ์ค๋ค์ด ๊ฐ์ด ์ธ ์ ์๋ ์ ์ ์กฐ๊ฑด์ ์ค๋ช ํด์ฃผ์ธ์.
์๊ณ ์์ญ์ ํ๋ก์ธ์ค๋ค์ด ๊ฐ์ด ์ธ ์ ์๋ ์ ์ ์กฐ๊ฑด์ผ๋ก๋ Mutual Exclusion, Progress, Bounded Waiting 3๊ฐ์ง๊ฐ ์์ต๋๋ค.
- ์ํธ ๋ฐฐ์ (Mutual Exclusion) : ์ด๋ค task๊ฐ ์๊ณ ์์ญ์ ์ฌ์ฉ ์ค์ด๋ฉด ๋ค๋ฅธ task๋ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
- ์งํ (Progress) : ํ์ฌ ์๊ณ ์์ญ์ ์ฌ์ฉ ์ค์ธ task๊ฐ ์๊ณ , ๋ค์ด๊ฐ๊ธธ ์ํ๋ task๊ฐ ์๋ค๋ฉด ๋ฐ๋ก ๋ค์ฌ๋ณด๋ ๋๋ค.
- ํ์ ๋ ๋๊ธฐ (Bounded Waiting) : ํ๋ก์ธ์ค๊ฐ ์ง์ ๊ฐ๋ฅํ ํ์์๋ ์ ํ์ด ์์ด์ ํน์ ํ ํ ํ๋ก์ธ์ค๋ง ๊ณ์ ์ง์ ํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
Thread-safe์ ๋ํ์ฌ ์ค๋ช ํด์ฃผ์ธ์.
๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ๊ณต์ ์์์ ์ ๊ทผํ ๋, ์๋ํ๋๋ก ๋์ํ๋ ๊ฒ์ ๋งํฉ๋๋ค. Thread-safeํ๊ธฐ ์ํด์๋ ๊ณต์ ์์์ ์ ๊ทผํ๋ ์๊ณ ์์ญ์ Mutex, Semaphore ๋ฑ์ ๋๊ธฐํ ๊ธฐ๋ฒ์ผ๋ก ์ ์ดํด์ค์ผ ํฉ๋๋ค.
Reentrant์ ๊ฐ๋ ์ ๋ํ์ฌ ์ค๋ช ํ๊ณ , Thread-safe ์์ ์ฐจ์ด์ ์ ์ค๋ช ํด์ฃผ์ธ์.
Reentrant๋ ์ฌ์ง์ ์ฑ์ด๋ผ๋ ์๋ฏธ๋ก, Reentrant ํจ์๋ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ์ ๊ทผํด๋ ์ธ์ ๋ ๊ฐ์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค. ์ด๋ฅผ ๋ง์กฑํ๊ธฐ ์ํด์ ํจ์ ๋ด์์๋ ๊ณต์ ์์์ ์ฌ์ฉํ์ง ์๊ณ , ํธ์ถ ์ ์ ๊ณต๋ ๋งค๊ฐ๋ณ์ ๋ง์ผ๋ก ๋์ํ๋ฉด ๋ฉ๋๋ค. ๋ฐ๋ผ์ Reentrantํ๋ค๋ฉด Thread-safeํ์ง๋ง ๊ทธ ์ญ์ ์ฑ๋ฆฝํ์ง ์์ต๋๋ค.
Mutex Lock ๊ณผ Semaphore ์ ์ฐจ์ด์ ์ด ๋ฌด์์ธ๊ฐ์.
- Semaphore๋ Mutex Lock์ด ๋ ์ ์์ง๋ง ์ญ์ ์ฑ๋ฆฝํ์ง ์๋๋ค.
- Semaphore๋ ํ๋ก์ธ์ค ๋ฒ์์์ ์์ ๋ถ๊ฐ๋ฅํ๊ณ Mutex๋ ์์ ๊ฐ๋ฅํ๋ค.
- Mutex Lock์ Lock์ ๊ฐ๊ณ ์๋ thread๊ฐ ํด์ ๊ฐ๋ฅํ ๋ฐ๋ฉด, Semaphore๋ ์ธ๋ถ์์๋ ํด์ ๊ฐ๋ฅํ๋ค.
- Semaphore๋ ์์คํ ๋ฒ์์ ๊ฑธ์ณ์ ธ ์๊ณ ํ์ผ ํํ๋ก ์กด์ฌํ๋ ๋ฐ๋ฉด, Mutex Lock์ ํ๋ก์ธ์ค ๋ฒ์ ๋ด์ ์์ด์ ์ข ๋ฃ ์ ์๋์ผ๋ก clean up ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ์ ์์๊ฐ ์ด๋ป๊ฒ ๋๋์ง CPU์์ ๊ฐ๊น์ด ์์ผ๋ก ๋งํด๋ณด์ธ์.
๋ ์ง์คํฐ โ ์บ์ ๋ฉ๋ชจ๋ฆฌ โ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ โ ๋ณด์กฐ๊ธฐ์ต์ฅ์น โ ์ธ๋ถ๊ธฐ์ต์ฅ์น์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค. CPU๋ก๋ถํฐ ๋ฉ์ด์ง์๋ก ์ฌ์ด์ฆ๋ ์ปค์ง๊ณ , ๊ฐ๊ฒฉ์ ์ ๋ ดํด์ง๋ฉฐ, ์ ๊ทผ ์๋๋ ๋๋ ค์ง๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ๋ฌด์์ผ๊น์? ์ ํ ๊น์?
์์คํ ์ด ์คํ๋ ๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์คํ์ด ๋๋๋ฐ, ๊ฐ ํ๋ก์ธ์ค๊ฐ ์คํ๋๊ธฐ ์ํด์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์๋ก ํ๋ค. ๊ทธ๋ฌ๋ ๋ฉ๋ชจ๋ฆฌ๋ ํ์ ๋์ด ์๋ค. ์คํ๋์ด์ผ ํ๋ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ํ์ํ ์๊ธฐ์ ์ ์ ํ๊ฒ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น์ ๋ฐ์ ์ ์๋๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ํ์ํ๋ค.
RAM์ ๋๋ฆฌ๋ฉด ์ด๋ป๊ฒ ๋๋์?
RAM์ ๋๋ฆฐ๋ค๋ ๊ฒ์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ์ ๋๋ฆฐ๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋งํผ ํ ๋ฒ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ์ํจ ํ ์ฒ๋ฆฌํ ์ ์๋ ํ๋ก์ธ์ค์ ์์ด ๋ง์์ง๋ค. ๋ฐ๋ผ์ ์ปดํจํฐ์ ์๋๊ฐ ๋นจ๋ผ์ง๋ค.
์ปดํจํฐ์ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๊ณ ์ถ์ผ๋ฉด ๋ฌด์์ RAM๋ง ๋๋ฆฌ๋ฉด ๋๋ ๊ฒ์ธ๊ฐ?
๊ทธ๋ ์ง ์๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋์ด๋๋ ๋งํผ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ๋นํ ์ ์๋ ํ๋์จ์ด๊ฐ ํ์ํ๋ค.
๋ง์ฝ 16GB์ ๋ฉ์ธ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , ์ด์์ฒด์ ์ ์ฉ๋์ด 16GB๋ผ๊ณ ํด๋ณด์. ๊ทธ๋ผ ์ด ์ปดํจํฐ๋ ์ด์์ฒด์ ์ธ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๋ ๊ฒ์ธ๊ฐ?
์ด์์ฒด์ ์ ์ฉ๋์ด 16GB๋ผ๊ณ ํด์ 16GB ์ ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ์ง ์๋๋ค. ์ง๊ธ ๋น์ฅ ํ์ํ ๋ถ๋ถ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ ์คํํ๋ค. ํ๋ก๊ทธ๋จ์ ์ฉ๋์ด 16GB๋ผ๊ณ ํด์ ๊ผญ ๊ทธ ์ฉ๋๋งํผ์ ๊ณต๊ฐ์ด ํ์ํ ๊ฒ์ ์๋๋ค.
์ธ๋ถ ๋จํธํ, ๋ด๋ถ ๋จํธํ์ ๋ํ์ฌ ์ค๋ช ํด๋ณด์ธ์.
- ์ธ๋ถ ๋จํธํ : ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ์ ๊ณต๊ฐ์ ์ถฉ๋ถํ ๊ณต๊ฐ์ ๊ฐ์ง์ง๋ง ๊ทธ๊ฒ๋ค์ด ์ฐ์์ ์ด์ง ์๊ณ ์์ ๊ณต๊ฐ๋ค๋ก ๋ถ์ฐ๋์ด ์๋ ์ํ๋ฅผ ๋งํฉ๋๋ค.
- ๋ด๋ถ ๋จํธํ : ํ๋ก์ธ์ค์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ๊ฐ ์ค์ ๋ก ์ฌ์ฉํ ์์ญ๋ณด๋ค ์ปค์ ๋จ์ ๊ณต๊ฐ์ด ์๊ธด ์ํ๋ฅผ ๋งํฉ๋๋ค.
์ธ๋ถ ๋จํธํ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ ๋ต์ด ์๋ค๋ฉด?
๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๊ตฐ๋ฐ๋ก ๋ชฐ์๋ฃ์ด ๋น์ด์๋ hole์ ์ ๊ฑฐํ๋ '์์ถ' ๊ธฐ์ ์ด ์๋ค.
์ธ๋ถ ๋จํธํ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ์์ถ์ ์ํํด์ฃผ๋ฉด ๋๋ ๊ฒ์ธ๊ฐ?
์์ถ์ด ์ธ๋ถ ๋จํธํ๋ฅผ ํด๊ฒฐํ๋ ์ข์ ๋ฐฉ๋ฒ์ด๊ธด ํ์ง๋ง ์์ถ์ ํ๋๋ฐ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฐ๋ค. ์์ถ์ ์์ฃผํ๋ ๊ฒ์ ์คํ๋ ค ์ฑ๋ฅ ์ ํ์ ์์ธ์ด ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์์ถ ์ธ์ ์ธ๋ถ ๋จํธํ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ์์?
Paging. ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ผ์ ํ ํฌ๊ธฐ๋ก ๋ถ๋ฐฐํ ํ ํ๋ก์ธ์ค๊ฐ ์๊ตฌํ๋ ์ฉ๋๋งํผ ๋ฉ๋ชจ๋ฆฌ ์กฐ๊ฐ์ ํ ๋นํ๋ค.
๊ฐ์๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐ๋ฆฌ๊ฐ ์ ์ฌ์ฉํด์ผ ํ ๊น์?
ํ๋ก์ธ์ค์ ์กด์ฌํ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ฌดํํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ์๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ์ผ ํ๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ์ฌ ์ผ์ด๋๋ ์๊ธฐ์น ์์ ์ค๋ฅ๋ค์ ๊ฐ์๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์ผ์ด๋์ง ์๊ณ ์ ์์ ์ผ๋ก ํ๋ก์ธ์ค๊ฐ ์งํํ ์ ์๋๋ก ๋์์ค๋ค.
๊ฐ์๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์๋ ์ด๋ค ๊ฒ๋ค์ด ์์๊น์?
๋ํ์ ์ผ๋ก ๋๊ฐ์ง Paging : ๊ณ ์ ๋ ์์ญ์ธ ํ์ด์ง๋ก ๋ถํ , Segmentation : ๊ฐ๋ณ์ ์ธ ์์ญ์ธ ์ธ๊ทธ๋จผํธ๋ก ๋ถํ ์ด ์๋ค.
๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋ ํ์ด์ง ์ค ์ฌ์ฉํ๋ ค๋ ํ์ด์ง๊ฐ ์๋ ํ์์ ๋ฌด์์ด๋ผ๊ณ ์นญํ ๊น์?
Page fault
page fault๊ฐ ์ผ์ด๋ฌ๋ค๊ณ ๊ฐ์ ํด๋ด ์๋ค. ์ด์์ฒด์ ๋ page fault์ ๋ํ ํด๊ฒฐ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ป๊ฒ ํ๋ํ ๊น์?
๋ณด์กฐ์ ์ฅ์ฅ์น์์ ํด๋นํ๋ ํ๋ก์ธ์ค๋ฅผ ๋ถ๋ฌ์ค๊ฑฐ๋ ํ์ด์ง ๊ต์ฒด๋ฅผ ์งํํฉ๋๋ค.
ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ ๋ค์ํ ๋ฐฉ๋ฒ๋ค์ ๋ํด ์๋ ค์ฃผ์ธ์.
- FIFO : ๋จผ์ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ด์จ ํ์ด์ง ์์๋๋ก ๊ต์ฒดํ๋ค.
- OPR : ์์ผ๋ก ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ์ฐพ์ ๊ต์ฒดํ๋ค.
- LRU : ๊ฐ์ฅ ์ค๋ซ๋์ ์ฌ์ฉ๋์ง ์์ ํ์ด์ง๋ฅผ ์ ํํ์ฌ ๊ต์ฒดํ๋ค.
- LFU : ์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ์ ์ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ค.
- MFU : ์ฐธ์กฐ ํ์๊ฐ ๊ฐ์ฅ ๋ง์ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ค.
ํ์ด์ง๋ค์ ํ ๋นํ๋ ค๊ณ ํ๋๋ฐ ํ๋ ์์ด ๋งค์ฐ ์ปค์ ํธํ๊ฒ ํ์ด์ง๊ฐ ํ ๋น๋ ์ ์๋ ์ํฉ์ ๊ฐ์ ํด๋ด ์๋ค. ์ด ์ํฉ์ด ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ์ด๋์ผ๊น์? ๋ง์ฝ ์๋๋ผ๋ฉด ์ด๋ค ์ํฉ์์ ์ด๋์ด ์๋์ง ์๊ฒฌ์ ๋ฃ๊ณ ์ถ์ด์.
๋ฒจ๋ผ๋์ ๋ชจ์ ํ์์ด ์ผ์ด๋ ์ ์์ต๋๋ค. ํ์ด์ง ํ๋ ์ ์๊ฐ ๋ง์ผ๋ฉด ํ์ด์ง ๋ถ์ฌ์ ์๊ฐ ์ค์ด๋๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด์ง๋ง ํ์ด์ง ํ๋ ์ ์๋ฅผ ์ฆ๊ฐ์์ผฐ๋๋ฐ๋ ๋ถ๊ตฌํ๊ณ ํ์ด์ง ๋ถ์ฌ๊ฐ ๋ง์ด ์ผ์ด๋๋ ํ์์ ์นญํฉ๋๋ค.
์ต์ ์ ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ธ OPR(Optimal Page Replacement)๊ฐ ํ์ค์ ์ผ๋ก ๊ฐ๋ฅํ ๊น์? ์ ์ ์กฐ๊ฑด์ด ์์ด๋ ๊ด์ฐฎ์ต๋๋ค. ๋ํ ์ค์ํ์์ ์ฐ์ผ ์ ์์๊น์?
๋ชจ๋ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฐธ์กฐ ๊ณํ์ ๋ฏธ๋ฆฌ ํ์ ํ ์ ์๋ค๋ฉด ๊ฐ๋ฅํฉ๋๋ค. ์ค์ํ์์ ์ฐ์ผ ์ ์์ผ๋ ค๋ฉด ๋งค์ผ ๊ฐ์ ํ๋์ ๋ฐ๋ณตํ๋ bot์๊ฒ OPR์ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ฏธ๋ฆฌ ์๋ฒฝํ ํ์ด์ง์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฆฌ๋ ์ค ์ด์์ฒด์ ์์๋ ์ด๋ค ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ๊น์? ์์ ์ด ์๊ฐํ๋ ์ด์ ์ ํจ๊ป ์๊ณ ๋ฆฌ์ฆ์ ์ค๋ช ํด์ฃผ์ธ์.
LRU(Least Recently Used Algorithm)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
OPR(Optimal Page Replacement)์ด ์ ์ผ ์ด์์ ์ด์ง๋ง OPR์ ์ด๋ก ์์์๋ง ๊ฐ๋ฅํ๊ณ ํ์ค์์๋ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ OPR์ ๊ฐ์ฅ ๊ทผ์ฌํ LRU์ ์ฌ์ฉํฉ๋๋ค.
LRU๋ ๊ฐ์ฅ ์ค๋ซ๋์ ์ฐธ์กฐ๋์ง ์์ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ ๊ธฐ๋ฒ์ผ๋ก ์ค๋ฒํค๋๊ฐ ํฐ ๊ฒ์ด ๋จ์ ์ด์ง๋ง ๋ค๋ฅธ ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ๋นํ์ฌ ์ ์ผ ์ด์์ ์
๋๋ค.
- Operating System Concepts - 10th Edition
- ์คํ, ํ, ์ฝ๋, ๋ฐ์ดํฐ์์ญ - ์๋ ๊ฐ๋ฐ์
- [์ด์์ฒด์ (OS)] 5. ํ๋ก์ธ์ค ๊ด๋ฆฌ - codemcd