๋์์ฑ(Concurrency)๊ณผ ๋ณ๋ ฌ์ฑ(Parallelism)
- ๋์์ฑ(Concurrency)์ ๋น ๋ฅด๊ฒ ์ ํํ๋ฉฐ ์ฌ๋ฌ ์์
์ ์ํํด ์ฌ๋ฌ ์์
์ด ๋์์ ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ฒ ์ํํ๋ ๊ฒ์ด๋ค. ํ ๊ฐ์ ์ฝ์ด์์๋ ๋์์ฑ์ด ์ผ์ด๋๊ณ ์์
๊ฐ์ ๋ฌธ๋งฅ๊ตํ์ด ์ผ์ด๋๋ค.
- ๋์์ฑ์ ๋ฌธ์ ์ ์ ๋๊ธฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
- ๋ณ๋ ฌ์ฑ(Parallelism)์ ์ฌ๋ฌ ์ฝ์ด์์ ์ฌ๋ฌ ์์
์ ๋์์ ์ํํ๋ ๊ฒ์ด๋ค. ์ฝ์ด๊ฐ ํ๋๋ผ๋ฉด ๋ณ๋ ฌ์ฑ์ด ๋ฐ์ํ ์ ์๋ค.
- ๋ณ๋ ฌ์ฑ์ ๋ฌธ์ ์ ์ ์ฌ๋ฌ ์์
์ ๋์์ ์ํํด์ Race Condition, ๋๊ธฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
- ๋์์ฑ๊ณผ ๋ณ๋ ฌ์ฑ์ ๋๊ธฐํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค๋ ๊ณตํต์ ์ ๊ฐ์ง๊ณ ์๋ค.
ํ๋ก์ธ์ค์ ๋๊ธฐํ
- ํ๋ก์ธ์ค ๋๊ธฐํ๋ ํ๋ก์ธ์ค ์ฌ์ด์ ์ํ ์๊ธฐ๋ฅผ ๋ง์ถ๋ ๊ฒ์ด๋ค.
- ํ๋ก์ธ์ค ๋๊ธฐํ๋ฅผ ํ ๊ฒฝ์ฐ ์คํ ์์๊ฐ ์ ์ด๋๊ณ ์ํธ ๋ฐฐ์ ๊ฐ ๋๋ค.
์๊ณ ๊ตฌ์ญ(Critical Section)
- ์ ๊ทผํด์๋ ์๋๋ ๊ณต์ ์์(ํ์ผ, ์
์ถ๋ ฅ, ๊ณต์ ๋ฐ์ดํฐ ๋ฑ)์ ์ ๊ทผํ๋ ๋ช
๋ น๋ฌธ ๋๋ ์ฝ๋์ ์ผ๋ถ ์์ญ์ ๋งํ๋ค.
๋ ์ด์ค ์ปจ๋์
(Race Condition)
- ์๋ชป๋ ์คํ์ผ๋ก ์ธํด ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์๊ณ ๊ตฌ์ญ์ ์ฝ๋๋ฅผ ์คํํ์ฌ ๊ณต์ ์์์ ์ผ๊ด์ฑ์ ํค์น๋ ํ์์ด๋ค.
- ๋ ์ด์ค ์ปจ๋์
์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ์ ์ผ๋ก ์ํธ ๋ฐฐ์ , ์งํ, ์ ํ ๋๊ธฐ๋ฅผ ํตํด์ ํด๊ฒฐํ ์ ์๋ค.
์ํธ ๋ฐฐ์ (Mutual Exclusion)
- ํ๋์ ํ๋ก์ธ์ค๊ฐ ์๊ณ ๊ตฌ์ญ์์ ์คํ๋๊ณ ์์ผ๋ฉด, ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์๊ณ ๊ตฌ์ญ์์ ์คํ๋ ์ ์๋ ๊ฒ์ด๋ค. ๊ณต์ ๊ฐ ๋ถ๊ฐ๋ฅํ ์์์ ๋์ ์ฌ์ฉ์ ํผํ ์ ์๋ค.
์งํ(Progress)
- ์๊ณ ๊ตฌ์ญ์์ ์คํ๋๊ณ ์๋ ํ๋ก์ธ์ค๊ฐ ์์ ๊ฒฝ์ฐ, ์๊ณ ๊ตฌ์ญ์ ๋ค์ด๊ฐ ์ ์ ํ ํ๋ก์ธ์ค๋ฅผ ์ ํํ๋ ๊ฒ์ด๋ค.
์ ํ ๋๊ธฐ(Bounded Waiting)
- ํ๋ก์ธ์ค์ ๊ธฐ์๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด, ํ ๋ฒ ์๊ณ ๊ตฌ์ญ์์ ์คํ๋ ํ๋ก์ธ์ค๋ ๋ค์ ์คํ์ ์ ํ์ ๋๋ ๊ฒ์ด๋ค.
์ํธ ๋ฐฐ์ ๋ฐฉ์(๋ฎคํ
์ค, ์ธ๋งํฌ์ด, ๋ชจ๋ํฐ)
๋ฎคํ
์ค(Mutual Exclusion)
-
๋ฎคํ
์ค(Mutual Exclusion)๋ ์ํธ ๋ฐฐ์ ๋ฅผ ์ํ ๋๊ธฐํ ๋๊ตฌ์ด๋ค.
-
์๊ณ ๊ตฌ์ญ์ ์ง์
ํ๋ ํ๋ก์ธ์ค๋ ํ์ฌ ์๊ณ ๊ตฌ์ญ์ ์์์ ์๋ฆฌ๊ธฐ ์ํด ๋ฝ์ ์ฌ์ฉํ๋ค. ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์๊ณ ๊ตฌ์ญ์ ๋ฝ์ด ๊ฑธ๋ ค์์ผ๋ฉด ๊ธฐ๋ค๋ฆฌ๊ณ ๋ฝ์ด ์๋ค๋ฉด ์๊ณ ๊ตฌ์ญ์ ์ง์
ํ ์ ์๋ค.
-
acquire ํจ์๋ ํ๋ก์ธ์ค๊ฐ ์๊ณ ๊ตฌ์ญ์ ์ง์
ํ๊ธฐ ์ ์ ํธ์ถํ๋ ํจ์์ด๋ค. ๋ง์ฝ ์๊ณ ๊ตฌ์ญ์ด ์ ๊ฒจ์๋ค๋ฉด ์ด๋ฆด ๋ ๊น์ง(lock์ด false๊ฐ ๋ ๋๊น์ง) ์๊ณ ๊ตฌ์ญ์ ๋ฐ๋ณต์ ์ผ๋ก ํ์ธํ๊ณ ์๊ณ ๊ตฌ์ญ์ด ์ด๋ ค์๋ค๋ฉด ์ ๊ทธ๋(lock์ true๋ก ๋ฐ๊พธ๋) ํจ์์ด๋ค.
-
release ํจ์๋ ์๊ณ ๊ตฌ์ญ์์ ์์
์ด ๋๋๊ณ ํธ์ถํ๋ ํจ์์ด๋ค. ํ์ฌ ์ ๊ธด ์๊ณ ๊ตฌ์ญ์ ์ด์ด์ฃผ๋(lock์ false๋ก ๋ฐ๊พธ๋) ํจ์์ด๋ค.
-
acquire ํจ์๋ ์๊ณ ๊ตฌ์ญ์ด ์ ๊ฒจ์์ ๊ฒฝ์ฐ ๋ฐ๋ณต์ ์ lock์ ํ์ธํ๋๋ฐ, ์ด๊ฒ์ ๋ฐ์ ๋๊ธฐ(Busy Wait)๋ผ๊ณ ํ๋ค.
์ธ๋งํฌ์ด(Semaphore)
- ์ธ๋งํฌ์ด๋ ๊ณต์ ์์์ด ์ฌ๋ฌ ๊ฐ ์๋ ์ํฉ์์ ์ ์ฉ๋๋ ๋๊ธฐํ ๋๊ตฌ์ด๋ค. ์ฌ์ฉํ๊ณ ์๋ ํ๋ก์ธ์ค์ ์๋ฅผ ๊ณตํต์ผ๋ก ๊ด๋ฆฌํ๋ ํ๋์ ๊ฐ์ ์ด์ฉํด ์ํธ ๋ฐฐ์ ๋ฅผ ๋ฌ์ฑํ๋ค.
- ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต์ ์์์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์ ์ญ ๋ณ์ S, ์๊ณ ๊ตฌ์ญ์ ๋ค์ด๊ฐ์ง ๋ง์ง ์๋ ค์ฃผ๋ wait ํจ์, ์๊ณ ๊ตฌ์ญ ์์์ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค๊ฐ ๋ค์ด๊ฐ๋ ๊ด์ฐฎ๋ค๋ ์ ํธ๋ฅผ ์ฃผ๋ signal ํจ์๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
๋ฎคํ
์ค์ ์ธ๋งํฌ์ด์ ์ฐจ์ด??
- ๋๊ธฐํ ๋์์ ๊ฐ์์ ์ฐจ์ด๊ฐ ์๋ค. ๋ฎคํ
์ค๋ ๋๊ธฐํ ๋์์ด 1 ๊ฐ์ง๋ง, ์ธ๋งํฌ์ด๋ ๋๊ธฐํ ๋์์ด ์ฌ๋ฌ ๊ฐ์ด๋ค.
๋ชจ๋ํฐ(Monitor)
- ๋ชจ๋ํฐ๋ ์ธ๋งํฌ์ด์ ํ๊ณ๋ฅผ ๋ณด์ํ๊ณ ๊ณ ์ฐจ์์ ์ธ ๋น๋๊ธฐ ๋ฐฉ๋ฒ์ผ๋ก ์ํธ ๋ฐฐ์ ๋ฅผ ์ ๊ณตํ๋ ๋๊ธฐํ ๋๊ตฌ์ด๋ค.
- ์ธ๋งํฌ์ด๋ waitํจ์์ signalํจ์๋ฅผ ๋งค๋ฒ ์๊ณ ๊ตฌ์ญ ์ ๋ค์ ๋ช
์ํด์ผ ํ๋ค. ๊ทธ๋์ ํ๋ก๊ทธ๋๋จธ์ ์ค์๋ก ์ธํด ํจ์์ ์์ ๋ฌธ์ ๋ ํจ์๋ฅผ ์ค๋ณต์ผ๋ก ์ฌ์ฉํ๋ ๋ฌธ์ ์ ์ด ๋ฐ์ํ ์ ์๋ค.(wait โ signal ์์๋ฅผ ์ง์ผ์ผํจ)
- ๋ชจ๋ํฐ๋ ๊ณต์ ์์๊ณผ ๊ณต์ ์์์ ์ ๊ทผํ๊ธฐ ์ํ ์ธํฐํ์ด์ค(ํต๋ก)๋ฅผ ๋ฌถ์ด ๊ด๋ฆฌํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ก์ธ์ค๋ ๋ฐ๋์ ์ธํฐํ์ด์ค๋ฅผ ํตํด์๋ง ๊ณต์ ์์์ ์ ๊ทผํ๋๋ก ํ๋ค.
๋ฐ๋๋ฝ, ๊ต์ฐฉ ์ํ
- ๋ฐ๋๋ฝ์ ๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ์๋ก ์์์ ์ป์ง ๋ชปํด ์งํ์ ๋ชปํ๊ณ ๋ฌดํํ ๋ค์ ์์์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ๋ฅผ ๋งํ๋ค.
- ํ๋ก์ธ์ค๋ฅผ ์คํํ๊ธฐ ์ํด์๋ ์์์ด ํ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ฐ๋๋ฝ์ด ๋ฐ์ํ๋ ์กฐ๊ฑด์ ๋ํ์ ์ผ๋ก ์ํธ ๋ฐฐ์ , ์ ์ ์ ๋๊ธฐ, ๋น์ ์ , ์ํ ๋๊ธฐ๊ฐ ์๋ค.
- ์ํธ ๋ฐฐ์ ๋ ํ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ์์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ ์ ์์ ๋ ๋ฐ๋๋ฝ์ด ๋ฐ์ํ ์ ์๋ค.
- ์ ์ ์ ๋๊ธฐ๋ ํ๋ก์ธ์ค๊ฐ ์ด๋ ํ ์์์ ํ ๋น๋ฐ์ ์ํ์์ ๋ค๋ฅธ ์์์ ํ ๋น๋ฐ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆด ๋ ๋ฐ๋๋ฝ์ด ๋ฐ์ํ ์ ์๋ค.
- ๋น์ ์ ์ ์ด๋ค ํ๋ก์ธ์ค๋ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์์์ ๊ฐ์ ๋ก ๋บ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋๋ฝ์ด ๋ฐ์ํ๋ค.
- ์ํ ๋๊ธฐ๋ ์์ ํ ๋น ๊ทธ๋ํ๊ฐ ์์ ํํ๋ก ๊ทธ๋ ค์ง๋ฉด ๋ฐ๋๋ฝ์ด ๋ฐ์ํ๋ค. ํ์ง๋ง ์์ ํํ๋ผ๊ณ ํด์ ํญ์ ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด ์๋๋ค.
๋ฐ๋๋ฝ ํํผ ๋ฐฉ๋ฒ 3๊ฐ์ง
๋ฐ๋๋ฝ ์กฐ๊ฑด ์๋ฐฉ
-
๋ฐ๋๋ฝ ๋ฐ์ ์กฐ๊ฑด 4๊ฐ์ง ์กฐ๊ฑด ์ค ํ๋๋ผ๋ ๋ฐ์ํ์ง ์๊ฒ ํ๋ ๊ฒ์ด ๋ฐ๋๋ฝ ์๋ฐฉ ๋ฐฉ๋ฒ์ด๋ค.
-
์ํธ ๋ฐฐ์ ์กฐ๊ฑด ๋ฐฉ์ง๋ ํ ๋ฒ์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๊ณ ์ ์์์ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ ๊ฒ์ด๋ค. ํ์ง๋ง ๋๊ธฐํ์ ๊ด๋ จ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
-
์ ์ ์ ๋๊ธฐ ์กฐ๊ฑด ๋ฐฉ์ง๋ ์ ์ ์ ๋๊ธฐ๋ฅผ ์์ ์ด์์ฒด์ ๊ฐ ํน์ ํ๋ก์ธ์ค์ ์์์ ๋ชจ๋ ํ ๋นํ๊ฑฐ๋, ์์ ํ ๋นํ์ง ์๋ ๋ฐฉ์์ผ๋ก ๋ฐฐ๋ถํ๋ ๊ฒ์ด๋ค. ํ์ง๋ง ์์์ ํ์ฉ์จ์ด ๋ฎ์์ง๋ค.
-
๋น์ ์ ์กฐ๊ฑด ๋ฐฉ์ง๋ ๋น์ ์ ์กฐ๊ฑด์ ์์ด์ ๋ ์์์ ์ด์ฉ ์ค์ธ ํ๋ก์ธ์ค๋ก๋ถํฐ ํด๋น ์์์ ๋นผ์์ ์ ์๋ ๊ฒ์ด๋ค. ํ์ง๋ง ๋ชจ๋ ์์์ด ํญ์ ์ ์ ์ด ๊ฐ๋ฅํ ๊ฒ์ด ์๋๋ค.
-
์ํ ๋๊ธฐ ์กฐ๊ฑด ๋ฐฉ์ง๋ ๋ชจ๋ ์์์ ์์๋ฅผ ์ ํด ์ค๋ฆ์ฐจ์์ผ๋ก ์์์ ํ ๋นํ์ฌ ์ํ ๋๊ธฐ๊ฐ ๋ฐ์ํ์ง ์๋ ๊ฒ์ด๋ค. ํ์ง๋ง ์ ๋ง์ ์์์ ์์๋ฅผ ์ ํ๋ ์ผ์ ๋ง์ ๋ถ๋ด์ด ๋๊ณ ํน์ ์์์ ํ์ฉ๋ฅ ์ด ๋จ์ด์ง ์ ์๋ค.
๋ฐ๋๋ฝ ์กฐ๊ฑด ํํผ
- ๋ฐ๋๋ฝ ์ํ๊ฐ ๋ฐ์ํ์ง ์์ ์ ๋๋ก ์์์ ์กฐ๊ธ์ฉ ํ ๋นํ๋ ๋ฐฉ์์ด๋ค.
- ์์์ ํ ๋นํ ํ์๋ ์์คํ
์ด ํญ์ Safe State์ ์์ ์ ์๋๋ก ํ ๋น์ ํ์ฉํ๋ ๊ฒ์ด๋ค.
- Safe State๋ ๋ฐ๋๋ฝ์ด ๋ฐ์ํ์ง ์๊ณ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ์ ์์ ์ ์์์ ํ ๋น๋ฐ๊ณ ์ข
๋ฃ๋ ์ ์๋ ์ํ๋ฅผ ๋งํ๋ค.
- Unsafe State๋ ์์ ์ํ๊ฐ ์๋ ์ํ๋ฅผ ๋งํ๋ค.
- Safe Sequence๋ ๋ฐ๋๋ฝ์ด ๋ฐ์ํ์ง ์์ผ๋ฉด์ ํ๋ก์ธ์ค๋ค์ ์์์ ํ ๋นํ ์ ์๋ ์์๋ฅผ ์๋ฏธํ๋ค.
- ์ด๋ฌํ ํน์ง์ ์ด๋ฆฐ ๋ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ด ์ํ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- ์ํ์ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ์์ ํ ๋น๋์ ์ฌ์ ์ ํ์
ํ๊ณ ๋ฐ๋๋ฝ์ ํํผํ ์ ์๋ค.
- ํ์ง๋ง ๋ฏธ๋ฆฌ ์ต๋ ์์ ์๊ตฌ๋์ ์์์ผํ๊ณ , ํ ๋นํ ์ ์๋ ์์ ์๊ฐ ์ผ์ ํด์ผํ๋ ๋ฑ ์ฌ์ฉ์ ์์ด ์ ์ฝ ์กฐ๊ฑด์ด ๋ง๋ค.
๋ฐ๋๋ฝ ํ์ง ํ ํ๋ณต
- ๋ฐ๋๋ฝ์ด ๋ฐ์ํ ํ ํ๋ณตํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.
- ํ์ง ๊ธฐ๋ฒ์ ์์ ํ ๋น ๊ทธ๋ํ๋ฅผ ํตํด ๋ฐ๋๋ฝ์ ํ์งํ๋ค. ๋ฐ๋๋ฝ์ ํ์ง ๊ธฐ๋ฒ์ ํตํด ๋ฐ๊ฒฌํ๋ค๋ฉด, ์ํ ๋๊ธฐ์์ ๋ฒ์ด๋ ๋ฐ๋๋ฝ์ผ๋ก๋ถํฐ ํ๋ณต ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
- ํ๋ณต ๊ธฐ๋ฒ์ ์ ์ ์ ํตํ ํ๋ณตํ๋ ๋ฐฉ์๊ณผ ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํด ํ๋ณตํ๋ ๋ฐฉ์์ด ์๋ค.
- ์ ์ ์ ํตํ ํ๋ณต์ ๋ฐ๋๋ฝ์ด ํด๊ฒฐ๋ ๋๊น์ง ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก๋ถํฐ ์์์ ๊ฐ์ ๋ก ๋นผ์์ ํ ํ๋ก์ธ์ค์ ํ ๋นํ๋ ๋ฐฉ์์ด๋ค.
- ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํด ํ๋ณตํ๋ ๋ฐฉ์๋ 2๊ฐ์ง๋ก ๋๋๋๋ฐ, ๋จผ์ ๋ฐ๋๋ฝ์ ๋น ์ง ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ์ค๋จํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋๋ฝ์ ํ ๋ฒ์ ํด๊ฒฐํ ์ ์์ง๋ง ํ๋ก์ธ์ค๋ค์ ์์
๋ด์ฉ์ ์์ ์ ์๋ค.
- ๊ทธ ๋ค์์ ๋ฐ๋๋ฝ์ด ์์ด์ง ๋๊น์ง ํ ํ๋ก์ธ์ค์ฉ ์ข
๋ฃํ๋ ๋ฐฉ์์ผ๋ก ์์
๋ด์ฉ์ ์๋ ๊ฒ์ ์ต๋ํ ์ค์ผ ์ ์์ง๋ง ๊ต์ฐฉ์ํ๊ฐ ์์ด์ก๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๊ณผ์ ์์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค.