์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Git๋ช ๋ น์ด
- ์ฝ๋๋ธ๋ญ
- ![rejected]
- ๋ธ๋์น ์์ฑ
- ๋ธ๋์น ํ์ธ
- branch ํ์ธ
- markdown
- ๋ธ๋์น ์ญ์
- branch ์์ฑ
- ์ฝ๋๋ธ๋ก
- branch ์ญ์
- ๋งํฌ๋ค์ด
- Today
- Total
DevLog
ํ๋ก์ธ์ค์ ์ค๋ ๋: ๊ณต์ ์์๊ณผ ๋จ๋ ์์์ ์ฐจ์ด ๋ณธ๋ฌธ
ํ๋ก์ธ์ค์ ์ค๋ ๋: ๊ณต์ ์์๊ณผ ๋จ๋ ์์์ ์ฐจ์ด
Seungjae Lee 2025. 3. 12. 11:21ํ๋ก์ธ์ค์ ์ค๋ ๋์ ๊ณต์ ์์๊ณผ ๋จ๋ ์์์ ์ฐจ์ด
๋ฉํฐ์ค๋ ๋ฉ์ ํ๋ ์ปดํจํฐ ์์คํ ์์ ํจ์จ์ ์ธ ์์ ์ฒ๋ฆฌ๋ฅผ ์ํด ํ์์ ์ธ ๊ฐ๋ ์ ๋๋ค.
ํ์ง๋ง ์ค๋ ๋๊ฐ ํ๋ก์ธ์ค ๋ด์์ ์ด๋ค ์์์ ๊ณต์ ํ๊ณ , ์ด๋ค ์์์ ๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์ฉํ๋์ง ๋ช ํํ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์ด๋ฒ ํฌ์คํ ์์๋ ํ๋ก์ธ์ค์ ์ค๋ ๋์ ๊ณต์ ์์๊ณผ ๋จ๋ ์์์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
1. ํ๋ก์ธ์ค์ ์ค๋ ๋๋?
- ํ๋ก์ธ์ค
ํ๋ก์ธ์ค๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ์ธ์คํด์ค๋ก, ๋ ๋ฆฝ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ(์ฝ๋, ๋ฐ์ดํฐ, ํ, ์คํ)์ ํ ๋น๋ฐ์ ์คํ๋ฉ๋๋ค. ์ด์์ฒด์ ๋ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌํ๋ฉฐ, ํ๋์ ํ๋ก์ธ์ค๋ ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. - ์ค๋ ๋
์ค๋ ๋๋ ํ๋ก์ธ์ค ๋ด์์ ์คํ ํ๋ฆ์ ๋ด๋นํ๋ ๊ฐ์ฅ ์์ ๋จ์์ ๋๋ค. ๋์ผํ ํ๋ก์ธ์ค ๋ด์ ์ค๋ ๋๋ ๋ฉ๋ชจ๋ฆฌ์ ์์์ ๊ณต์ ํ๋ฉด์๋ ๋ ๋ฆฝ์ ์ธ ์คํ ํ๋ฆ์ ์ ์งํฉ๋๋ค.
2. ๊ณต์ ์์๊ณผ ๋จ๋ ์์์ ๊ฐ๋
๊ณต์ ์์ (Shared Resources)
๊ณต์ ์์์ ๋์ผํ ํ๋ก์ธ์ค ๋ด์ ๋ชจ๋ ์ค๋ ๋๊ฐ ํจ๊ป ์ฌ์ฉํ๋ ์์์ ๋๋ค.
- ์์
- ์ฝ๋ ์์ญ: ์คํํ ํ๋ก๊ทธ๋จ์ ๋ช ๋ น์ด๊ฐ ์ ์ฅ๋ ์์ญ.
- ๋ฐ์ดํฐ ์์ญ: ์ ์ญ ๋ณ์์ ์ ์ ๋ณ์๊ฐ ์ ์ฅ๋ ์์ญ.
- ํ ์์ญ: ๋์ ์ผ๋ก ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ์ฅ๋ ์์ญ.
- ํ์ผ ๋์คํฌ๋ฆฝํฐ: ํ์ผ์ด๋ ์์ผ ๋ฑ ์ธ๋ถ ๋ฆฌ์์ค๋ฅผ ์ฐธ์กฐํ๋ ํธ๋ค.
- ์ญํ
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ํจ์จ์ฑ์ ๋์ด๊ณ , ์ฌ๋ฌ ์ค๋ ๋๊ฐ ํ๋ ฅํ์ฌ ์์ ์ ์ํํ ์ ์๋๋ก ํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ์์ ํ ๋ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ฉํฉ๋๋ค.
- ๋ฌธ์ ์
- ๊ณต์ ์์์ ์ฌ์ฉํ ๋ ๋๊ธฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฎคํ ์ค(Mutex), ์ธ๋งํฌ์ด(Semaphore) ๊ฐ์ ๋๊ธฐํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋จ๋ ์์ (Thread-specific Resources)
๋จ๋ ์์์ ๊ฐ ์ค๋ ๋๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋ณด์ ํ๊ณ ์ฌ์ฉํ๋ ์์์ผ๋ก, ๋ค๋ฅธ ์ค๋ ๋์ ๊ณต์ ๋์ง ์์ต๋๋ค.
- ์์
- ์คํ ์์ญ: ํจ์ ํธ์ถ ์ ์์ฑ๋๋ ์ง์ญ ๋ณ์ ๋ฐ ๋ณต๊ท ์ฃผ์๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ.
- CPU ๋ ์ง์คํฐ: ์ฐ์ฐ ์ค๊ฐ ๊ฒฐ๊ณผ๋ ๋ช ๋ น์ด ์คํ ์ํ๋ฅผ ์ ์ฅํ๋ฉฐ, ํน์ ์์ ์ ์คํ ์ค์ธ ์ค๋ ๋๋ง ์ฌ์ฉ.
- ํ๋ก๊ทธ๋จ ์นด์ดํฐ (Program Counter): ํ์ฌ ์คํ ์ค์ธ ๋ช ๋ น์ด์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํด.
- Thread Local Storage (TLS): ํน์ ์ค๋ ๋๋ง ์ ๊ทผ ๊ฐ๋ฅํ ๋ฐ์ดํฐ ์ ์ฅ์.
- ์ญํ
- ๊ฐ ์ค๋ ๋๋ ์์ ๋ง์ ์คํ ํ๋ฆ๊ณผ ์ํ๋ฅผ ์ ์งํ๊ธฐ ์ํด ๋จ๋ ์์์ ์ฌ์ฉํฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, ํจ์ ํธ์ถ ์ ์์ฑ๋๋ ์ง์ญ ๋ณ์๋ ๋ค๋ฅธ ์ค๋ ๋์ ๊ฒฉ๋ฆฌ๋์ด์ผ ํ๋ฏ๋ก ๊ฐ ์ค๋ ๋๋ ๊ณ ์ ํ ์คํ์ ๊ฐ์ง๋๋ค.
- ๋ฌธ์ ์
- ๋จ๋ ์์์ ๋ ๋ฆฝ์ ์ด์ง๋ง, ๋ฌธ๋งฅ ์ ํ(Context Switching) ์ ์ด์์ฒด์ ๊ฐ ๋ ์ง์คํฐ ๊ฐ์ ์ ์ฅํ๊ณ ๋ณต์ํด์ผ ํ๋ฏ๋ก ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
3. CPU ๋ ์ง์คํฐ์ ๋ฌธ๋งฅ ์ ํ
CPU ๋ ์ง์คํฐ๋ ๋ํ์ ์ธ ์ค๋ ๋์ ๋จ๋ ์์์ ๋๋ค. ์ด๋ ๊ณ์ฐ ์ค๊ฐ ๊ฒฐ๊ณผ๋ ๋ช ๋ น์ด ์คํ ์ํ๋ฅผ ์ ์ฅํ๋ฉฐ, ํน์ ์์ ์ ์คํ ์ค์ธ ์ค๋ ๋๋ง ๋ ์ ์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
๋ฌธ๋งฅ ์ ํ ๊ณผ์
- ํ์ฌ ์คํ ์ค์ธ ์ค๋ ๋์ CPU ๋ ์ง์คํฐ ๊ฐ์ ์ ์ฅ(๋ฉ๋ชจ๋ฆฌ ๋๋ ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก).
- ๋ค์ ์คํํ ์ค๋ ๋์ ์ด์ ๋ ์ง์คํฐ ๊ฐ์ ๋ณต์.
- ์๋ก์ด ์ค๋ ๋๋ฅผ ์คํ.
์ด ๊ณผ์ ์ ํตํด ๊ฐ ์ค๋ ๋๋ ์์ ๋ง์ ์ํ๋ฅผ ์ ์งํ๋ฉฐ ๋ ๋ฆฝ์ ์ผ๋ก ์์ ์ ์ํํฉ๋๋ค.
4. ๊ณต์ ์์ vs ๋จ๋ ์์์ ๋น๊ต
๊ตฌ๋ถ | ๊ณต์ ์์ | ๋จ๋ ์์ |
---|---|---|
์ฌ์ฉ ๋์ | ํ๋ก์ธ์ค ๋ด ๋ชจ๋ ์ค๋ ๋ | ํน์ ์ค๋ ๋ |
์์ | ์ฝ๋ ์์ญ, ๋ฐ์ดํฐ ์์ญ, ํ, ํ์ผ ๋์คํฌ๋ฆฝํฐ | ์คํ, CPU ๋ ์ง์คํฐ, ํ๋ก๊ทธ๋จ ์นด์ดํฐ |
์ญํ | ํจ์จ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๋ฐ ํ๋ ฅ ์ง์ | ๋ ๋ฆฝ์ ์คํ ํ๋ฆ ์ ์ง ๋ฐ ์์ ์ฑ ์ ๊ณต |
๋ฌธ์ ์ | ๋๊ธฐํ ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ | ๋ฌธ๋งฅ ์ ํ์ผ๋ก ์ธํ ์ค๋ฒํค๋ |
5. ๊ฒฐ๋ก
๋ฉํฐ์ค๋ ๋ฉ ํ๊ฒฝ์์ ๊ณต์ ์์๊ณผ ๋จ๋
์์์ ๊ฐ๋
์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
๊ณต์ ์์์ ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๊ณผ ํ๋ ฅ์ ๊ฐ๋ฅํ๊ฒ ํ์ง๋ง ๋๊ธฐํ ๋ฌธ์ ๋ฅผ ์ ๋ฐํ ์ ์๊ณ , ๋จ๋
์์์ ๋
๋ฆฝ์ฑ์ ๋ณด์ฅํ์ง๋ง ๋ฌธ๋งฅ ์ ํ ์ ์ค๋ฒํค๋๋ฅผ ๋ฐ์์ํฌ ์ ์์ต๋๋ค.
์ด ๋ ๊ฐ์ง ํน์ฑ์ ์ดํดํ๊ณ ์ ์ ํ ๊ด๋ฆฌํ๋ฉด ๋ฉํฐ์ค๋ ๋ฉ ํ๊ฒฝ์์ ๋ ์์ ์ ์ด๊ณ ํจ์จ์ ์ธ ์์คํ ์ ์ค๊ณํ ์ ์์ต๋๋ค.