- ์ฑ๋ฅ ํฅ์
1) ํ๋ก๊ทธ๋จ ์ต์ ํ
2) ๋ฉํฐ ์ฝ์ด ํ์ฉ → ๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ ํ์
- ๋ฉํฐ์ฐ๋ ๋
: ํ๋์ ํ๋ก๊ทธ๋จ์ด ์ฌ๋ฌ ๊ณณ์ด ๋์ ๋ค๋ฐ์ ์ผ๋ก ์คํ๋จ (๋ณ๋ ฌ์ฒ๋ฆฌ)
- ๋ณ๋ ฌ์ฒ๋ฆฌ
: ํ๋์ ์์ ์ ์ฌ๋ฌ ๊ฐ์ context์์ ๋์์ ์ํ
: context - CPU ์คํ ์ํ (PC๋ฅผ ํฌํจํ ๋ชจ๋ ๋ ์ง์คํฐ ๊ฐ)
: ํ ๋์ ์ปดํจํฐ ์ฌ์ฉ → SMP(์ฌ๋ฌ ๊ฐ์ CPU), Multi-Core (์ฌ๋ฌ ๊ฐ์ Core)
: CPU ํ ๊ฐ ์๋๋ ๋๋ฌด ๋๋ฆฌ๊ธฐ์ ์ฌ์ฉํ๋ ๊ฒ (ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ๊ฐ ๊น๋ํด์ง์ง ์์)
: ๋ฐ์ด ์๋์ ๋ถ๋ช์น ํด๋ญ ์๋ ์ฆ๊ฐ
- ํ๋ก์ธ์ค์ ์ฐ๋ ๋
1) ํ๋ก์ธ์ค : ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ - ํ๋์ ํ๋ก์ธ์ค๋ ํ๋์ ์คํ ํ์ผ์์ ์ถ๋ฐ
2) ์ฐ๋ ๋ : ํ๋ก๊ทธ๋จ ์คํ ํ๋ฆ - ํ๋ก์ธ์ค ์คํ ์ค ํ๋ก๊ทธ๋จ์ด ์ฐ๋ ๋ ์์ฑ ๋ช ๋ น์ ์คํ
: ํ๋ก๊ทธ๋จ์ ํ๋์ ํ๋ก์ธ์ค๊ฐ ๋์ด ์คํ๋จ
: ์ฒ์์ ํ๋์ ์ฐ๋ ๋๋ก ์คํ, ์ฐ๋ ๋๋ ์ฐ๋ ๋๋ฅผ ๋ง๋ค ์ ์์
: ๊ฐ๊ฐ์ ์ฐ๋ ๋๋ ์์ ์ ์คํ ๊ฐ๊ณ ์๊ณ , ๊ฐ์ ํ๋ก์ธ์ค์ ๋ชจ๋ ์ฐ๋ ๋๋ Data, Code, Heap ๊ณต์
- ๋ฉํฐ์ฐ๋ ๋
: ๋ฉ๋ชจ๋ฆฌ
1) ์ ์ญ ๋ณ์ - ๋ชจ๋ ์ฐ๋ ๋๊ฐ ๊ณต์
2) ์ง์ญ ๋ณ์ - ์ฐ๋ ๋๋ง๋ค ๋ฐ๋ก
3) ์ง์ญ ๋ณ์๋ ๊ฐ์ ๋ก ๊ณต์ ๊ฐ๋ฅํจ (๊ทธ๋ฌ์ง ๋ง์)
: ์์(๋ฉ๋ชจ๋ฆฌ, ํ์ผ ํธ๋ค ๋ฑ)์ ๊ณต์ ๋จ
: ์ฅ์ - ์ฑ๋ฅ ํฅ์, ๋น ๋ฅธ ์๋ต ์๋, ๋ ๋์ ์์ ํ์ฉ(CPU), ํ๋ก์ธ์ค๋ณด๋ค ํจ์จ์ (context switch)
: ์ํ - ํ๋ก๊ทธ๋จ ๋ณต์ก๋ ์ฆ๊ฐ, ๋๋ฒ๊น ์ด๋ ค์
: ๊ฒ์์๋ฒ์์์ ๋ฉํฐ ์ฐ๋ ๋ - ๋์ ํฅ์, ๋น ๋ฅธ ์๋
: ๋ ๊ฐ์ง ์คํ์ผ ์กด์ฌ
1) Heterogeneous - ์์ ์ ์ญํ ๋ณ๋ก ๋๋์ด์ ์ ์ฉ ์ฐ๋ ๋์๊ฒ ๋ง๊น → ๊ฒ์ ํด๋ผ์ด์ธํธ
2) Homogeneous - ์์ ์ ์ชผ๊ฐ์ ์ฐ๋ ๋ ๊ตฌ๋ถ ์์ด ๋๋ ์ ํจ → ๊ฒ์ ์๋ฒ
- ๊ฒ์ ์๋ฒ๋ ํจํท ํ๋๋ฅผ ํ ์กฐ๊ฐ์ ์์ ์ผ๋ก ์๊ฐ
: ์ฃผ์์
- ์ฐ๋ ๋ ๊ฐ์๊ฐ ๋ง๋ค๊ณ ์ข์ง ์์
- ํ๋ก์ธ์ / ์ฝ์ด ์์ ๋ง์ถ์ด๋ผ (์ฝ์ด๋ณด๋ค ๋ง์ ์ฐ๋ ๋ → context switching(๋ฌธ๋งฅ ๊ตํ) ๋ถํ, ๋ฐ์์๋ ์ ํ
- ๋ง์ ์ฐ๋ ๋ → OS/HW ๋ถ๋ด
- ๋ด๊ฐ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ด์ฉ์ด ๋ค๋ฅธ ์ฐ๋ ๋์ ์ํด ๋ณ๊ฒฝ ๋ ์ ์์ (DataRace)
- ๋๋ฒ๊น ์ ์ด๋ ค์
// ์ฐ๋ ๋ ๋ง๋ค๊ธฐ
// ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์์ฑ์ ์ด๊ธฐ๊ฐ์ผ๋ก ์คํํ ํจ์ ๋ฃ์
#include <thread>
std::thread t1 { mythread };
// ์ฐ๋ ๋ ์ข
๋ฃ ๊ฒ์ฌ
// ์์ ์ฐ๋ ๋๋ฅผ ์์ฑํ ์ฐ๋ ๋๋ ์์ฑํ ์ฐ๋ ๋์ ์ข
๋ฃ๋ฅผ ํ์ธํด์ผ ํจ
t1.join();
: DataRace - ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๊ฐ ์ด์์ ์ฐ๋ ๋๊ฐ ๋์์ ์ฝ๊ณ ์ฐ๋ ๊ฒฝ์ฐ (์ ์ด๋ ํ ๊ฐ๋ ๋ฐ๋์ ์ฐ๊ธฐ)
: ์ด๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ํ ๋ฒ์ ํ๋๋ง ์ํํ ์ ์๋๋ก ์ฒ๋ฆฌ
- Lock()/Unlock() → Mutex๊ฐ์ฒด (์ ์ญ๋ณ์ ์ ์ธ)
- ๊ฐ์ ๊ฐ์ฒด ์ฌ์ด์์๋ง ๋์, ์๋ก ๋์์ ์คํ ๊ฐ๋ฅํ ํฌ๋ฆฌํฐ์ปฌ ์น์ ์ ๋ค๋ฅธ mutex ์ฌ์ฉ
- ๋จ์ : Lock์ ๋ถํ, ํฌ๊ธฐ(๋๋ฌด ์์ผ๋ฉด ์์ฃผ ํธ์ถ๋์ด ์ฑ๋ฅ ์ ํ, ํฌ๋ฉด ์ค๋ซ๋์ ๋๊ธฐํ๋ ์ฐ๋ ๋๋ก ์ธํด ์ฑ๋ฅ ๊ฐ์)
: Lock์ ๊ฐ์ ์ต์ํ & ๋ณ๋ ฌ ์ํ ์ต๋ํ → ์๊ณ ๋ฆฌ์ฆ ์ฌ์์ฑ ํ์
: Atomic ์๋ฃ ๊ตฌ์กฐ
- ๊ณ ์ฑ๋ฅ : ์ํธ๋ฐฐ์ ์์ด ๋์ ์คํ
- Data Race๋ก ์ธํ ์ค๋์ ์์
- Queue, Stack .. ๋ฑ ๋ค์ํ ์๋ฃ๊ตฌ์กฐ
'๐ค Study > Game Server' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[07์ฃผ์ฐจ] TEST & ์์ผ์ฒ๋ฆฌ (0) | 2024.04.23 |
---|---|
[05์ฃผ์ฐจ] IOCP (0) | 2024.04.22 |
[04์ฃผ์ฐจ] I/O ๋ชจ๋ธ (0) | 2024.04.22 |
[02์ฃผ์ฐจ] ํ๊ฒฝ (1) | 2024.04.19 |
[03์ฃผ์ฐจ] ๋คํธ์ํน - 1 (1) | 2024.04.01 |