728x90
- ๊ต์ฐฉ ์ํ: https://zu-techlog.tistory.com/128
- ์๊ณ ์์ญ๊ณผ ๊ฒฝ์ ์ํ: https://zu-techlog.tistory.com/129
๋ฎคํ ์ค(Mutex)
- Key์ ํด๋นํ๋ ์ค๋ธ์ ํธ๋ฅผ ์์ ํ ํ๋ก์ธ์ค/์ค๋ ๋(์ดํ ์ค๋ ๋) ๋ง์ด ๊ณต์ ์์์ ์ ๊ทผํ ์ ์๋๋ก ํ๋ ์๊ณ ๋ฆฌ์ฆ
- ๊ณต์ ์์์ lock()์ ํตํด ์ ๊ธํ๊ณ , unlock()์ ํตํด ์ ๊ธ์ ํด์
- ๊ณต์ ์์์ ๋ํด ๋ค์ค ์ค๋ ๋๋ค์ ์ ๊ทผ์ ์กฐ์จํ๊ธฐ ์ํด ๋๊ธฐํ ๋๋ ๋ฝ ์ฌ์ฉ
- ์ ๊ธ์ด ์ค์ ๋๋ฉด ๋ค๋ฅธ ์ค๋ ๋๋ ์ ๊ธ์ด ํด์ ๋ ๋๊น์ง ํด๋น ์์ญ์ ์ ๊ทผํ ์ ์์ (๋์ ์ฌ์ฉ ๋ถ๊ฐ)
- ๊ณต์ ์์์ ์ฌ์ฉ ์ค์ธ ์ค๋ ๋๊ฐ ์์ ๋ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๊ณต์ ์์์ ์ ๊ทผํ๋ฉด Blocking ํ ๋๊ธฐ ํ๋ก ๋ณด๋ด sleep ์ํด
- ์ ๊ธ ๋๋ ์ ๊ธ ํด์ ๋ผ๋ ์ํ๋ง์ ๊ฐ์ง๋ Boolean ํ์ ์ Lock ๋ณ์ ์ฌ์ฉ
- ๊ณต์ ์์์ ์ ์ ํ๋ ์ค๋ ๋๋ Key๋ฅผ ๊ฐ์ง๋ฉฐ ์ ๊ธ ์ค์ ์ ํ๊ณ , ์ ๊ธ ํด์ ์์๋ Key๋ฅผ ๋ค์ ๋๊ธฐ ์ค๋ ๋์๊ฒ ๋ฐ๋ฉ
- Lock์ ๊ฑด ์ค๋ ๋ ๋ง์ด Lock์ ํด์ ํ ์ ์์
๊ณผ์ ์์
- 1๋ฒ ํ๋ก์ธ์ค๊ฐ ์์์ ์ ๊ทผํ๊ธฐ ์ํด Key๋ฅผ ์ ์ ํ ํ ๊ณต์ ์์ ์ด์ฉ
- 2๋ฒ ํ๋ก์ธ์ค๋ ๊ณต์ ์์์ ์ฌ์ฉํ๊ธฐ ์ํด ๋๊ธฐ (sleep)
- 3๋ฒ ํ๋ก์ธ์ค ๋ํ ๊ณต์ ์์์ ์ฌ์ฉํ๊ธฐ ์ํด 2๋ฒ ํ๋ก์ธ์ค ๋ค์ ์๋ฒ์ผ๋ก ๋๊ธฐ
- 1๋ฒ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ์์์ ๋ชจ๋ ์ฌ์ฉํ๊ณ Key๋ฅผ ๋ฐํ
- 2๋ฒ ํ๋ก์ธ์ค๋ ๋๊ธฐํ๊ณ ์๋ค๊ฐ ๋ฐํ๋ Key๋ฅผ ์ ์ ํ๊ณ ๊ณต์ ์์์ ์ฌ์ฉ
โป ์คํ๋ฝ(Spinlock)๊ณผ์ ์ฐจ์ด
์คํ๋ฝ(Spinlock)์ ๋ฝ์ ๊ฐ์ง๊ณ ๊ณต์ ์์์ ์ง์ ํ ์ ์์ ๋๊น์ง ๊ณ์ํด์ ์ง์ ์ ์๋ํ๋ฉฐ ๊ธฐ๋ค๋ฆฌ๊ธฐ ๋๋ฌธ์ CPU ๋ญ๋น ๋ฐ์
๋ฎคํ ์ค(Mute)๋ Lock ๋ณ์๋ฅผ ํตํด ๊ณต์ ์์์ ์ง์ ์ด ๋ถ๊ฐํจ์ด ํ์ธ ๋๋ฉด ๋๊ธฐ ํ๋ก ๋ค์ด๊ฐ sleepํ๊ธฐ ๋๋ฌธ์ ํจ์จ์
์ธ๋งํฌ์ด(Semaphore)
- ๊ณต์ ์์์ ์ ๊ทผํ ์ ์๋ ์ต๋ ํ์ฉ์น ๋งํผ ํ๋ก์ธ์ค/์ค๋ ๋(์ดํ ์ค๋ ๋)์ ๋์ ์ ๊ทผ์ ํ์ฉํ๋ ์๊ณ ๋ฆฌ์ฆ
- 0์ด์์ ์ ์๋ฅผ ๋ด๊ณ ์๋ ์ธ๋งํฌ์ด ๋ณ์๋ฅผ ํตํด wait๊ณผ signal ๊ด๋ฆฌ
- ์ ๊ทผ ๊ฐ๋ฅํ ๊ณต์ ์์์ ์๊ฐ 1๊ฐ์ผ ๋๋ ์ด์ง ์ธ๋งํฌ์ด๋ก ๋ฎคํ ์ค์ฒ๋ผ ์ฌ์ฉํ ์ ์์
- Lock์ ๊ฑธ์ง ์์ ์ค๋ ๋๋ Signal์ ๋ณด๋ด Lock์ ํด์ ํ ์ ์์
- ์ค๋ ๋๊ฐ ๊ณต์ ์์์ ์ด์ฉํ ๋ ํ์ฉ ์ ๊ทผ ์(์ธ๋งํฌ์ด ๋ณ์)๋ 1 ๊ฐ์ํ๊ณ , ๊ณต์ ์์์ ๋น ์ ธ๋์ฌ ๋๋ 1 ์ฆ๊ฐ
๊ณผ์ ์์
- ๊ณต์ ์์์ ๋ํ ์ต๋ ํ์ฉ์น๋ฅผ ์ ์ -> ํ์ฉ์น: 3
- 1๋ฒ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ์์์ ์ ๊ทผ -> ํ์ฉ์น 2๋ก ๊ฐ์
- 2๋ฒ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ์์์ ์ ๊ทผ -> ํ์ฉ์น 1๋ก ๊ฐ์
- 3๋ฒ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ์์์ ์ ๊ทผ -> ํ์ฉ์น 0๋ก ๊ฐ์
- 4๋ฒ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ์์์ ์ ๊ทผ -> ํ์ฉ์น๊ฐ 0์ด๋ฏ๋ก ๋๊ธฐ
- 2๋ฒ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ์์์ ๋ชจ๋ ์ฌ์ฉ -> ํ์ฉ์น 1๋ก ์ฆ๊ฐ
- ๋๊ธฐํ๋ 4๋ฒ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ์์์ ์ ๊ทผ -> ํ์ฉ์น 0๋ก ๊ฐ์
๋ฎคํ ์ค์ ์ธ๋งํฌ์ด์ ์ฐจ์ด
- ๋๊ธฐํ ๋์์ ๊ฐ์
- ๋ฎคํ ์ค๋ ๋๊ธฐํ ๋์์ด ์ค์ง 1๊ฐ์ผ ๋ ์ฌ์ฉ
- ์ธ๋งํฌ์ด๋ ๋๊ธฐํ ๋์์ด 1๊ฐ ์ด์์ผ ๋ ์ฌ์ฉ
- ์ธ๋งํฌ์ด๋ ๋ฎคํ
์ค๊ฐ ๋ ์ ์์ง๋ง ๋ฎคํ
์ค๋ ์ธ๋งํฌ์ด๊ฐ ๋ ์ ์์
- ์ด์ง ์ธ๋งํฌ์ด(Binary Semaphore)๋ ๋ฎคํ ์ค์ฒ๋ผ ๋์
- ์์ ์์ ๊ฐ๋ฅ ์ฌ๋ถ
- ๋ฎคํ ์ค๋ Lock์ ํตํด ์์์ ๋ํ ์์ ๊ถ๊ณผ ๊ทธ ์ฑ ์์ ๊ฐ์ง
- ์ธ๋งํฌ์ด๋ ์์์ ์์ ํ ์ ์์
- ์ ๊ธ ํด์ ์ฃผ์ฒด
- ๋ฎคํ ์ค๋ Lock์ ํ(์์ ๊ถ์ ๊ฐ์ง) ์ค๋ ๋๋ง์ด ๋ฎคํ ์ค๋ฅผ ํด์ ํ ์ ์์
- ์ธ๋งํฌ์ด๋ Lock์ ํ์ง ์์ ์ค๋ ๋๋ Signal์ ํตํด ๋ฎคํ ์ค๋ฅผ ํด์ ํ ์ ์์
- Clean Up
- ๋ฎคํ ์ค๋ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๋ ์๋์ผ๋ก Clean Up
- ์ธ๋งํฌ์ด๋ ์์คํ ์์ ํ์ผ๋ก ์กด์ฌ
โญ๏ธ ์ฐธ๊ณ
728x90