- ์์์ ์ฐ์ฐ (atomic operation)
: ์์ ์ฐ์ฐ → ๋ ์ด์ ๋๋ ์ง์ง ์๋ ์ฐ์ฐ
: DataRace ๋ฌธ์ ๋ฐ์ํ ์ ์์ → ๋ ๊ฐ ์ด์์ ์ค๋ ๋๊ฐ ๊ณต์ ์์์ ๋๊ณ ์๋ก ๊ฒฝ์ ์ ์ผ๋ก ๊ฐ์ ์ฝ๊ณ ์จ์ ๋ฐ์ํจ
: ์์ ์ฐ์ฐ์ด ๋๋๋ก ์ฒ๋ฆฌํด์ฃผ์ด์ผ ํจ
๋ฎคํ
์ค(mutex) ์ธ๋งํฌ์ด(semaphore) |
์ด๋ค ์ฝ๋ ์์ญ์ด๋ ๋ฐ์ดํฐ์ ๋ฐฐํ์ ์ ๊ทผ (์ํธ๋ฐฐ์ )์ ๋ณด์ฅํ๋ ๊ฐ์ฒด Critical section ๋๋ lock์ด๋ผ๊ณ ๋ ๋ถ๋ฆ ์ธ๋งํฌ์ด๋ ์ต๋ n๋ช ์ด ๊ณต์ ์์์ ๋์์ ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ํ๊ณ ๋๋จธ์ง ๊ฐ์ฒด๋ ํ ๋ฒ์ ํ ๋ช ๋ง ๊ณต์ ์์์ ์ ๊ทผ ๊ฐ๋ฅํจ |
์กฐ๊ฑด ๋ณ์(conditional variable) ์ด๋ฒคํธ(event) |
ํ ์ค๋ ๋๊ฐ ์ด๋ค ์กฐ๊ฑด์ด ๋ง์กฑ๋๊ฑฐ๋ ์ ํธ๊ฐ ์ฌ ๋๊น์ง ์ ์๋๋ก ํจ. ๋ค๋ฅธ ์ค๋ ๋๊ฐ ์ด ๋ณ์ ๊ฐ์ ๊ฐฑ์ ํด ์ ์๊ณ ์๋ ์ค๋ ๋๋ฅผ ๊นจ์ธ ์ ์์ |
๋ฐฐ๋ฆฌ์ด(barrier) | ์ฐธ์ฌ ์ค์ธ ์ค๋ ๋๊ฐ ๋ชจ๋ ๋ฐฐ๋ฆฌ์ด๋ฅผ ๋ถ๋ฅธ ์ง์ ์ ๋๋ฌํด์ผ๋ง ๋ค์์ผ๋ก ๋์ด๊ฐ ์ ์์ ํ๋๋ผ๋ ๋๋ฌํ์ง ๋ชปํ๋ฉด ๋๊ธฐ ์ํ |
์ค๋ ๋ ํฌํฌ(fork) ์กฐ์ธ(join) |
ํฌํฌ : ํ๋์ ์ค๋ ๋๊ฐ ์ฌ๋ฌ ์ค๋ ๋๋ก ๋๋์ด ์ง๋ค ์กฐ์ธ : ๋๋์ด์ง ์ค๋ ๋๊ฐ ์ข ๋ฃ๋จ ๋ฐฐ๋ฆฌ์ด์ ์ ์ฌํ ๋ฉด์ด ์์ผ๋ ์ค๋ ๋ ์กฐ์ธ ํจ์๋ ์ธ์๋ก ๋ฐ์ ์ค๋ ๋ ๋ฆฌ์คํธ๊ฐ ๋ชจ๋ ์๋ฉธ๋๊ฑฐ๋ ์ ์ด๋ ํ๋๊ฐ ์๋ฉธ๋์ด์ผ ๋ฐํ๋จ |
- ์ง๋ ฌ ํ๋ก๊ทธ๋จ์ ๋ณ๋ ฌํํ๋ ค๋ฉด
1) ์ ํฉํ ๋ณ๋ ฌํ ๋์ ์ฐพ๊ธฐ
→ ๊ฐ์ฅ ๋ง์ ์ํ ์๊ฐ์ ์ฐจ์งํ๋ ํจ์๋ ๋ฃจํ
2) ๊ทธ ๋์์ ๋ณ๋ ฌํ ๊ฐ๋ฅํ์ง ์ฝ๋ ๋ถ์ํ๊ธฐ - ๋ฐ์ดํฐ ์์กด์ฑ ๋ถ์ / ์ถฉ๋ถํ ๋ณํ์ฑ ์๋์ง
→ ๊ฐ๋จํ๊ฒ ๋ณ๋ ฌํ๊ฐ ๋๋๊ฐ, ๋๊ธฐํ ๊ฐ์ฒด๋ฅผ ์ด์ฉํด ์๊ณ ๋ฆฌ์ฆ์ ์์ ํด์ผ ํ๋๊ฐ
→ ๋ฐ์ดํฐ ์์กด์ฑ ๊ฒ์ฌ / ๋ฃจํ์ผ ๊ฒฝ์ฐ ๋ฃจํ ์ ์ด ์์กด์ฑ ์กฐ์ฌ ํ์
(์๋ฌด๋ฐ ๋ ธ๋ ฅํ์ง ์๊ณ ๊ทธ๋ฅ ๋ณ๋ ฌํ๊ฐ ๊ฐ๋ฅํ ๋ฃจํ์ผ ๋ embarrassingly parallel์ด๋ผ ํจ
3) ์ฝ๋ ๋ณ๋ ฌํ ํ๊ธฐ - ์ ๊ทผ ๋๋ ๋ณ์๊ฐ ๋ฉํฐ์ค๋ ๋๋ก๋ถํฐ ์์ ํ๊ฐ/๋๊ธฐํ๊ฐ ํ์ํ๊ฐ & ์ด๋ค ์ข ๋ฅ์ ๋ณ๋ ฌ์ฑ์ ์ฐพ์ ์ด๋ป๊ฒ ๋ณ๋ ฌํ? & ๋ณ๋ ฌํ๋ ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ์ค์ ๋ก ๋ฉํฐ์ฝ์ด์ ํ ๋น?
→ ์์ ๋ฃจํ๋ฅผ ๋ณ๋ ฌํํด ์ค๋ ๋ ํฌํฌ/์กฐ์ธ ๋น์ฉ์ ์ต์ํํ๋ ๊ฒ์ด ์ค์
4) ์ ๋๋ก ๋์๊ฐ๋์ง ๊ฒ์ฆ
5) ์ต์ ์ ์ฑ๋ฅ์ ๋ผ ์ ์๊ฒ ํ๋
- ํ์ด์ ๋ฒ๊ทธ
: ๋ฒ๊ทธ๋ฅผ ์ก์ผ๋ ค๋ฉด ๊ฐ์ฅ ๋จผ์ ๋ฐ๊ฒฌํ ๋ฒ๊ทธ๋ฅผ ์ฌํํด์ผ ํจ
: ๋ฉํฐ์ค๋ ๋ ๋ฒ๊ทธ๋ printf๋ฅผ ๋ฃ์ด์ ๋ฒ๊ทธ๋ฅผ ํ์ธํ๋ ค ํ๋ฉด ์ด ์์ฒด๊ฐ ์ํฅ์ ์ฃผ์ด ์ ํํ ํ์ ํ๊ธฐ ์ด๋ ค์
1) ๋ฐ์ดํฐ ๋ ์ด์ค (DataRace)
: ์ด๋ค ๊ณต์ ๋ฐ์ดํฐ๊ฐ ๋ ์ค๋ ๋ ์ด์์๊ฒ์ ๋์์ ์ ๊ทผ๋๋ ์ํฉ + ์ ์ด๋ ํ๋์ ์ ๊ทผ์ด ์ฐ๊ธฐ์ผ ๊ฒฝ์ฐ
: ์ด๋ก ์ธํ ๋ฒ๊ทธ๋ ์ฌํํ๊ธฐ ์ด๋ ต๋ค
2) ์์์ฑ ์๋ฐ, ์์ ์๋ฐ : ๊ทผ๋ณธ์ ์์ธ์ ๋ฉ๋ชจ๋ฆฌ ์ค์ผ์
3) ๋ฐ๋๋ฝ ๋ฒ๊ทธ
'๐ค Study > ์ปดํจํฐ ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CA 02] ๋ช ๋ น์ด (0) | 2024.07.10 |
---|---|
[CA 01] ๊ฐ์ & ๋ฐ์ดํฐ & ๋ช ๋ น์ด (0) | 2024.06.26 |
[๋ฉํฐ์ฝ์ดCPU] 08. ๋ฉ๋ชจ๋ฆฌ ๋ช ๋ น ์คํ ์๊ณ ๋ฆฌ์ฆ & ํ๋ฆฌํซ์ฒ (0) | 2024.04.11 |
[๋ฉํฐ์ฝ์ดCPU] 07. ๋ถ๊ธฐ๋ฌธ & ๊ฐ์ํจ์ (0) | 2024.04.09 |
[๋ฉํฐ์ฝ์ดCPU] 06. ๋ฐ์ดํฐ ๋ณ๋ ฌ์ฑ & ์บ์ (0) | 2024.04.08 |