
์ด๋ฒ ํฌ์คํ ์ cs ์ด์์ฒด์ ์ ๋ํด ๊ณต๋ถํด๋ณด๋ ค๊ณ ํ๋ค.
| ์ฃผ์ | ๋ชฉํ |
|---|---|
| ํ๋ก์ธ์ค์ ์ค๋ ๋ | ์คํ ๋จ์์ ์ฐจ์ด, ์ปจํ ์คํธ ์ค์์นญ ์ ํ ์ดํด |
| ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ | ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ, ํ์ด์ง, ์ธ๊ทธ๋ฉํ ์ด์ ๊ตฌ์กฐ ์ดํด |
| CPU ์ค์ผ์ค๋ง | FCFS, SJF, RR ๋ฑ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ ์ ํ ์ดํด |
| ๋๊ธฐํ | ๋ฎคํ ์ค, ์ธ๋งํฌ์ด, ๊ต์ฐฉ ์ํ (Deadlock) ์ดํด |
ํ๋ก์ธ์ค (Process) โ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ์๋ฏธํ๋ค
์ฆ, ์ฐ๋ฆฌ๊ฐ ๋ง๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋ ๋, ์ด์์ฒด์ ๋ โํ๋ก์ธ์คโ๋ผ๋ ๋จ์๋ก ๊ด๋ฆฌํ๋ค.
์ค๋ ๋ (Thread) โ ํ๋ก์ธ์ค ์์์ ์ค์ ๋ก ์์ ์ ์ํํ๋ ์ต์ ์คํ ๋จ์
ํ๋์ ํ๋ก์ธ์ค ์์๋ ์ต์ 1๊ฐ์ ์ค๋ ๋๊ฐ ๋ฐ๋์ ์กด์ฌํ๋ค.
์ด ์ค๋ ๋๋ฅผ ๋ฉ์ธ ์ค๋ ๋(Main Thread).
โ ๊ฐ์ ํ๋ก์ธ์ค ๋ด์์ ์ฌ๋ฌ ์์
์ ๋์์ ์ฒ๋ฆฌํ ์ ์์
โ ๋ฉ๋ชจ๋ฆฌ ๊ณต์ ๋ก ๋ฐ์ดํฐ ์ ๋ฌ์ด ๋น ๋ฆ
โ ์น ์๋ฒ, ๊ฒ์ ๋ฑ์์ ๋งค์ฐ ๋ง์ด ์ฌ์ฉ๋จ
โ ๏ธ ์ค๋ ๋๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํ๊ธฐ ๋๋ฌธ์ ์๋ชป ์ค๊ณํ๋ฉด ์ถฉ๋, ๋ฐ์ดํฐ ์ค์ผ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์.
๋๊ธฐํ ๋ฌธ์ (Race Condition) โ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๊ฐ์ ๋ฐ์ดํฐ์ ๋์์ ์ ๊ทผํ ๋ ์๊ธฐ๋ ์ค๋ฅ
| ํญ๋ชฉ | ํ๋ก์ธ์ค | ์ค๋ ๋ |
|---|---|---|
| ์ ์ | ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ | ํ๋ก์ธ์ค ๋ด ์ต์ ์คํ ๋จ์ |
| ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ | ๋ ๋ฆฝ์ | ๊ณต์ (์ฝ๋, ๋ฐ์ดํฐ, ํ) |
| ์คํ | ๋ ๋ฆฝ์ | ๊ฐ ์ค๋ ๋๋ง๋ค ๋ณ๋ |
| ์์ฑ ๋น์ฉ | ์๋์ ์ผ๋ก ํผ | ์๋์ ์ผ๋ก ์์ |
| ๋ํ ์ฌ๋ก | ๋ธ๋ผ์ฐ์ ์คํ, ๊ฒ์ ์คํ ๋ฑ | ๋ธ๋ผ์ฐ์ ํญ, ์์ ์คํธ๋ฆฌ๋ฐ ๋ฑ |
์ปดํจํฐ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฉ๋์ด ํ์ ๋์ด ์๋ค.
ํ์ง๋ง ํ๋ก๊ทธ๋จ๋ค์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด๋ ์ ์คํ๋์ด์ผ ํฉ๋๋ค.
์ด์์ฒด์ ๋ ์ฌ๋ฌ ํ๋ก๊ทธ๋จ์ด ๋์์ ๋์๊ฐ ๋ 1. ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ๋ง๊ณ 2. ํ๋ก๊ทธ๋จ๋ค์ด ์๋ก ์นจ๋ฒํ์ง ์๊ฒ 3. ํ์ํ๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ํฐ ํ๋ก๊ทธ๋จ๋ ์คํ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ผ ํ๋ค.
์ด์์ฒด์ ๊ฐ RAM ๊ณผ ๋ณด์กฐ ๊ธฐ์ต์ฅ์น(SSD/HDD)๋ฅผ ํจ๊ป ํ์ฉํด ๋ง์น "๋ฉ๋ชจ๋ฆฌ๊ฐ ํจ์ฌ ํฐ ๊ฒ์ฒ๋ผ" ๋ณด์ด๊ฒ ํ๋ ๊ธฐ์ ์ ๋๋ค.
๐ก ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌํ์ ์ํ ๋ํ์ ์ธ ๋ฐฉ๋ฒ
๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณ ์ ํฌ๊ธฐ์ ๋ธ๋ก์ธ ํ์ด์ง(Page) ๋ก ๋๋ ์ ๊ด๋ฆฌํ๋ ๊ธฐ๋ฒ
๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฝ๋, ๋ฐ์ดํฐ, ์คํ ๊ฐ์ ๋ ผ๋ฆฌ์ ๊ตฌ์ญ(์ธ๊ทธ๋จผํธ) ์ผ๋ก ๋๋ ๊ด๋ฆฌํ๋ ๋ฐฉ์
| ํญ๋ชฉ | ํ์ด์ง | ์ธ๊ทธ๋ฉํ ์ด์ |
|---|---|---|
| ๋ถํ ๊ธฐ์ค | ๊ณ ์ ํฌ๊ธฐ ํ์ด์ง | ๋ ผ๋ฆฌ์ ๊ตฌ์ญ (์ฝ๋, ๋ฐ์ดํฐ ๋ฑ) |
| ํฌ๊ธฐ | ๊ณ ์ | ๊ฐ๋ณ |
| ์ฅ์ | ์กฐ๊ฐํ ์ต์ํ, ๊ด๋ฆฌ ์ฌ์ | ๋ ผ๋ฆฌ์ ๊ด๋ฆฌ ์ฌ์ |
| ๋จ์ | ์ธ๋ถ ์๋ฏธ ์์, ์ฃผ์ ๋ณํ ํ์ | ์ธ๋ถ ๋จํธํ ๊ฐ๋ฅ์ฑ |
ํ๋ ์ด์์ฒด์ ๋ ๋ณดํต ํ์ด์ง ๊ธฐ๋ฐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค.
์ธ๊ทธ๋ฉํ
์ด์
์ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์๊ณ , ๊ณผ๊ฑฐ ์์คํ
์์ ์ฃผ๋ก ์ฐ์๋ค.
๐ก ๊ทธ๋์ ์๋ฒ์์ Out of memory: Killed process 12345 (your-app) ์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด์ ๊ฐ์๊ธฐ ํ๋ก์ธ์ค๊ฐ ๊ฐ์ ์ข
๋ฃ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๊ฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ๋ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์ด๋ค.
์ค์ ๋ฉ๋ชจ๋ฆฌ(RAM)๊ฐ ๋ถ์กฑํ๊ณ ๋์คํฌ I/O๋ ํ๊ณ์ ๋ค๋ค๋ฅด๋ฉด โ ๋ ์ด์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ํ ๋น ๋ถ๊ฐ โ OOM ์๋ฌ ๋ฐ์
์ด์์ฒด์ ์ ์ค์ํ ์ญํ ์ค ํ๋๋ ์ฌ๋ฌ ํ๋ก์ธ์ค์๊ฒ ๊ณต์ ํ๊ณ ํจ์จ์ ์ผ๋ก CPU๋ฅผ ๋๋ ์ฃผ๋ ๊ฒ์ด๋ค.
์ด ๊ณผ์ ์CPU ์ค์ผ์ค๋ง์ด๋ผ๊ณ ํจ.
์ปดํจํฐ๋ ๋์์ ๋ง์ ํ๋ก๊ทธ๋จ์ ์คํํ๋ค.
ํ์ง๋ง CPU ์ฝ์ด๋ ํ์ ๋์ด ์์ด์ ํ ๋ฒ์ ํ ์์
๋ง ์ํํ ์ ์๋ค.
์ด์์ฒด์ ๋ ๋น ๋ฅด๊ฒ ํ๋ก์ธ์ค๋ฅผ ๊ต์ฒดํ๋ฉด์ ๋ง์น ๋์์ ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ค.
โ๋จผ์ ์จ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์ฒ๋ฆฌ๋๋คโ
โ์์ ์๊ฐ์ด ๊ฐ์ฅ ์งง์ ํ๋ก์ธ์ค๋ฅผ ๋จผ์ ์คํโ
โ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค๋ฅผ ๋จผ์ ์คํโ
โํ๋ก์ธ์ค๋ง๋ค ์ผ์ ์๊ฐ(Time Quantum)๋งํผ CPU๋ฅผ ํ ๋นโ
| ์๊ณ ๋ฆฌ์ฆ | ํน์ง | ์ฅ์ | ๋จ์ |
|---|---|---|---|
| FCFS | ๋์ฐฉ ์์ | ๋จ์ | Convoy Effect |
| SJF | ์งง์ ์์ ์ฐ์ | ํ๊ท ๋๊ธฐ ์๊ฐ ์ต์ํ | ์ค์ ์์ธก ์ด๋ ค์ |
| Priority | ์ฐ์ ์์ ๊ธฐ๋ฐ | ์ค์ํ ์์ ๋น ๋ฅด๊ฒ ์คํ | Starvation ์ํ |
| Round Robin | ์ ํด์ง ์๊ฐ์ฉ ์ํ | ๊ณต์ ์ฑ ๋์, ๋๋ฆฌ ์ฌ์ฉ | ์ค๋ฒํค๋ ๊ฐ๋ฅ์ฑ |
๐ก ์ผ๋ฐ์ ์ผ๋ก ํ๋์๋ ๊ธฐ๋ณธ์ ์ผ๋ก Round Robin + Priority Scheduling ์กฐํฉ์ CPU ์ค์ผ์ฅด๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค. ๋ฌผ๋ก ํ๋ก์ธ์ค ๊ทธ๋ฃน๋ณ๋ก ์ค์ผ์ค๋ง ์ ์ฑ ์ ๋ค๋ฅด๊ฒ ์ ์ฉํ๊ธฐ๋ ํ๋ค๊ณ ํ๋ค.
์ค๋ ๋๋ ํ๋ก์ธ์ค ์์์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ณต์ ํจ.
โ ๋์์ ๊ฐ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ฉด, ๊ฐ์ด ๊ผฌ์ด๊ฑฐ๋ ์ถฉ๋ํ ์ํ์ด ์๋ค. ์ด ๋ฌธ์ ๋ฅผ Race Condition (๊ฒฝ์ ์ํ) ๋ผ๊ณ ํฉ๋๋ค.
์์
- ์ํ ๊ณ์ข ์ ๊ธ/์ถ๊ธ
- ์ผํ๋ชฐ ์ฌ๊ณ ์ฒ๋ฆฌ
Mutual Exclusion (์ํธ ๋ฐฐ์ )์ ์ฝ์
ํ ๋ฒ์ ํ๋์ ์ค๋ ๋๋ง ์๊ณ ๊ตฌ์ญ(Critical Section)์ ๋ค์ด๊ฐ ์ ์๋๋ก ํ๋ ๋๊ธฐํ ๊ธฐ๋ฒ
ํน์ง
๋ฎคํ ์ค์ ํ์ฅํ
๋์์ ๋ค์ด๊ฐ ์ ์๋ ์ค๋ ๋ ์๋ฅผ ์ ํํ๋ ๋๊ธฐํ ๊ธฐ๋ฒ
์ข ๋ฅ
| ํญ๋ชฉ | ๋ฎคํ ์ค | ์ธ๋งํฌ์ด |
|---|---|---|
| ์ ๊ทผ ๊ฐ๋ฅ ์ค๋ ๋ ์ | 1๊ฐ | ์ฌ๋ฌ ๊ฐ (N๊ฐ) |
| ์ฌ์ฉ ๋ชฉ์ | ์ํธ ๋ฐฐ์ | ์ ํ์ ๋์ ์ ๊ทผ |
| Deadlock ์ํ | ์์ | ์์ |
| ์ฌ์ฉ ์์ | ๊ณต์ ๋ณ์ ๋ณดํธ | ์์ ์ ํ (ex. DB Connection Pool) |
| ์ฉ์ด | ๋ป | ์ค๋ช |
|---|---|---|
| ํ๋ก์ธ์ค (Process) | ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ | ๋ ๋ฆฝ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ, OS๊ฐ ๊ด๋ฆฌํ๋ ๊ธฐ๋ณธ ๋จ์ |
| ์ค๋ ๋ (Thread) | ํ๋ก์ธ์ค ๋ด ์ต์ ์คํ ๋จ์ | ๊ฐ์ ํ๋ก์ธ์ค ๋ด์์ ์์ ์ํ |
| ๋ฉ์ธ ์ค๋ ๋ (Main Thread) | ํ๋ก์ธ์ค ๋ด ์ต์ด ์ค๋ ๋ | ํ๋ก๊ทธ๋จ ์์ ์ ์๋ ์์ฑ |
| ๋ฉ๋ชจ๋ฆฌ ๊ณต์ | ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฌ์ฉ | ๋ฐ์ดํฐ ์์ญ, ํ ์์ญ ๊ณต์ |
| ์คํ | ํจ์ ํธ์ถ ์ ๋ณด ์ ์ฅ ์์ญ | ์ค๋ ๋๋ง๋ค ๋ ๋ฆฝ์ ์ผ๋ก ํ ๋น |
| ๋๊ธฐํ ๋ฌธ์ (Race Condition) | ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์์ ๋ฐ์ดํฐ์ ์ ๊ทผํด ๋ฐ์ํ๋ ์ถฉ๋ ๋ฌธ์ | ์ฃผ์ ๊น๊ฒ ์ค๊ณํด์ผ ํจ |
| ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ (Virtual Memory) | ์ค์ ๋ณด๋ค ํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ ๊ธฐ์ | RAM + ์ ์ฅ์ฅ์น ์กฐํฉ |
| ํ์ด์ง (Page) | ๊ณ ์ ํฌ๊ธฐ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก | ๋ณดํต 4KB ๋จ์ |
| ํ์ด์ง ํ ์ด๋ธ (Page Table) | ๊ฐ์ ์ฃผ์์ ์ค์ ์ฃผ์ ๋งคํ ํ | ์ฃผ์ ๋ณํ ์ ์ฌ์ฉ |
| ํ์ด์ง ํดํธ (Page Fault) | ํ์ํ ํ์ด์ง๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ์ํ | ๋์คํฌ์์ ๋ถ๋ฌ์ค๊ธฐ ๋ฐ์ |
| ์ธ๊ทธ๋ฉํ ์ด์ (Segmentation) | ๋ ผ๋ฆฌ์ ์๋ฏธ ๋จ์๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ | ์ฝ๋/๋ฐ์ดํฐ/์คํ ๋ฑ์ผ๋ก ๊ตฌ๋ถ |
| ์ธ๋ถ ๋จํธํ (External Fragmentation) | ๋ฉ๋ชจ๋ฆฌ ๋นํ์ด ์๊ธฐ๋ ํ์ | ์ธ๊ทธ๋ฉํ ์ด์ ์ ๋จ์ |
| CPU ์ค์ผ์ค๋ง | CPU๋ฅผ ์ฌ๋ฌ ํ๋ก์ธ์ค์ ๋ถ๋ฐฐํ๋ ์์ | OS์ ํต์ฌ ์ญํ |
| FCFS | First-Come, First-Served | ๋์ฐฉ ์์๋๋ก ์ฒ๋ฆฌ |
| SJF | Shortest Job First | ์งง์ ์์ ๋จผ์ ์คํ |
| Priority Scheduling | ์ฐ์ ์์ ๊ธฐ๋ฐ ์ค์ผ์ค๋ง | ๋์ ์ฐ์ ์์ ๋จผ์ ์คํ |
| Round Robin (RR) | ์๊ฐ ํ ๋น ๊ธฐ๋ฐ ์ํ ์ค์ผ์ค๋ง | ํ๋ OS ๊ธฐ๋ณธ ์ค์ผ์ค๋ง |
| Starvation | ์์ ์ด ์์ํ ์คํ๋์ง ์๋ ํ์ | Priority Scheduling์ ๋จ์ |
| Aging | ์ค๋ ๊ธฐ๋ค๋ฆฐ ์์ ์ ์ฐ์ ์์๋ฅผ ์ฌ๋ฆฌ๋ ๊ธฐ๋ฒ | Starvation ํด๊ฒฐ์ฑ |
| Race Condition | ๋์์ ์ ๊ทผํด ๋ฐ์ํ๋ ์ถฉ๋ ๋ฌธ์ | ๋๊ธฐํ ์คํจ ์ ๋ฐ์ |
| ๋๊ธฐํ (Synchronization) | ์ค๋ ๋ ๊ฐ ์ถฉ๋์ ๋ง๊ณ ์กฐ์ ํ๋ ๊ณผ์ | ๋ฉํฐ์ค๋ ๋ ํ์ ๊ฐ๋ |
| ๋ฎคํ ์ค (Mutex) | ํ ๋ฒ์ ํ๋๋ง ์ ๊ทผ ๊ฐ๋ฅํ ์ ๊ธ ์ฅ์น | ์ํธ ๋ฐฐ์ ์ฅ์น |
| ์ธ๋งํฌ์ด (Semaphore) | ๋์ ์ ๊ทผ ๊ฐ๋ฅํ ์ค๋ ๋ ์๋ฅผ ์ ํํ๋ ์ฅ์น | ๋ฎคํ ์ค์ ํ์ฅํ |
| Deadlock | ์ค๋ ๋๊ฐ ์๋ก ๋ฝ์ ํ์ง ๋ชปํด ๋ฉ์ถ๋ ์ํ | ๋๊ธฐํ ์ค๊ณ ์คํจ ์ ๋ฐ์ |