mutex lock
- lock์ ์ก๊ธฐ ์ํด ์ค๋ ์๊ฐ์ ๊ธฐ๋ค๋ ค์ผ ํ ๊ฒ ๊ฐ์ผ๋ฉด ๋ค๋ฅธ ์์ ์ ๋์์ ์งํํ ์ ์๋ค.
- busy waiting ํ์ง ๋ง๊ณ , blocking ๋์ด ๊ธฐ๋ค๋ฆฌ์.
- ์์์ ๋จ์๊ฐ์ ์ป์ ์ ์๊ฒ ๋๋ ๊ฒฝ์ฐ ์ฐจ๋ผ๋ฆฌ spin lock์ด ํจ๊ณผ์ ์ด๋ค. context switching์ ๋ ํฐ ์์์ ๋ญ๋นํ๊ฒ ๋ ์ ์๋ ๋ฌธ์ ๋ฅผ ์ด๋ํ๋ค.
spin lock
- ๋ฌธ๋งฅ ๊ตํ(context switching)์ด ์ผ์ด๋์ง ์๋๋ค.
- ๋ค๋ฅธ ์์ ์ ๋์์ ์งํํ์ง ๋ชปํ๊ณ ์ง์ ๊ฐ๋ฅํ ๋ ๊น์ง ๊ณ์ ๊ธฐ๋ค๋ฆฌ๋ busy waiting ๋ฐฉ์์ด๋ค.
- lock์ ์ก์ ๋ ๊น์ง ๋์์๋ ๋ฌดํ ๋ฃจํ๋ฅผ ํตํด critical section์ ์ง์ ์ ์ฌ์๋ํ๊ธฐ ๋๋ฌธ์, ํ๋์ ์ค๋ ๋๊ฐ ๊ณ์ CPU๋ฅผ ์ ์ ํ๊ณ ์๋ ์ํ์ด๋ฏ๋ก, ์์์ ๋จ๊ธฐ๊ฐ์ ์ป์ง ๋ชปํ๊ฒ ๋๋ ๊ฒฝ์ฐ CPU์ ๋ญ๋น๋ฅผ ์ด๋ํ๋ค.
- ๋ํ, lock์ ์ก๊ณ ์๋ ์ ๊ฐ preemtive ๋๋ฉด ์ด lock์ ์ก๊ธฐ ์ํด spin lock์ ์ํ ์ค์ด๋ ํ๋ก์ธ์ค๋ ํํ์ ๋ด๋ด CPU์ ๋ญ๋น๋ฅผ ์ด๋ํ๋ค.
- ์์์ ๋จ์๊ฐ์ ์ป์ ์ ์๊ฒ ๋๋ ๊ฒฝ์ฐ context switching ๋น์ฉ์ด ๋ค์ง ์์ ํจ์จ์ ๋์ผ ์ ์๋ค.
Mutex๋?
๋ฃจํ๋ฅผ ํตํด ์ง์ ์ ๊ณ์ํด์ ์ฌ์๋ํ๋ spin lock๋ณด๋ค ์กฐ๊ธ ๋ ํ์ฅ๋ ํํ
spin lock์ฒ๋ผ busy waitingํ์ง ์๊ณ blocking๋์ด ๊ธฐ๋ค๋ฆฌ๋ ๋ฐฉ์.
- mutual exclusive๋ฅผ ๋ณด์ฅํ๋ lock. ์ํธ ๋ฐฐ์ ๋ฐฉ์.
- critical section์ ํ๋์ ํ๋ก์ธ์ค๊ฐ ์ ๊ทผํ๋ ๊ฒ์ ๋ฐฉ์ง (๋๊ธฐํ ๋์์ด ์ค์ง ํ๋์ด๋ค. semaphore๊ณผ ์ฐจ์ด์ )
- ๋ฎคํ ์ค๊ฐ ์ฌ์ฉ๋๋ critical section์ ๊ณต์ ๋ถ๊ฐ๋ฅ
- ํ๋ฒ์ ๋จ ํ๋์ ํ๋ก์ธ์ค/์ค๋ ๋๋ง ์ ๊ทผ ๊ฐ๋ฅ. ์ค์ง ์ง์ ํ ํ๋ก์ธ์ค/์ค๋ ๋๋ง์ด mutex ํด์ .
- ์ฌ์ฉ์ค์ธ ํ๋ก์ธ์ค/์ค๋ ๋๊ฐ ๋ฝ(Lock)์ ๊ฑธ์ด๋ฒ๋ ค ๋ค๋ฅธ ํ๋ก์ธ์ค/์ค๋ ๋์ ์ ๊ทผ ๋ฐฉ์ง
mutex๋ ํ์ฅ์ค์ ํ์นธ ๋ฐ์ ์๋ ๊ฒ๊ณผ ๊ฐ์.
Semaphore๋?
- critical section์ ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์ ๊ทผํ๋ ๊ฒ์ ๋ฐฉ์ง (๋๊ธฐํ ๋์์ด ํ๋ ์ด์์ด๋ค. mutex์ ์ฐจ์ด์ )
- ๋ฆฌ์์ค์ ์ํ, ๊ฐฏ์๋ฅผ ๋ํ๋ด๋ ๊ฐ๋จํ ์นด์ดํฐ
- ๋ฝ์ ๊ฑธ์ง ์์ ํ๋ก์ธ์ค๊ฐ signal์ ๋ณด๋ด ๋ฝ์ ํด์ ํ ์ ์๋ค.
semaphore์ ํ์ฅ์ค์ ์ฌ๋ฌ ์นธ์ด ์กด์ฌํ๋ ๊ฒ๊ณผ ๊ฐ์.
๊ฐ ์ฌ์ฉ์๋ ์ฌ์ฉํ ์ ์๋(์ฆ, ๋น์ด์๋) ํ์ฅ์ค ์นธ ๊ฐฏ์๋ฅผ ์ ์ ์์.
- Binary semaphore: Semaphore์ value ๊ฐ์ด 1์ธ ๊ฒฝ์ฐ ์ด๋ฅผ mutex์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
Mutex์ Semaphore์ ์ฐจ์ด์
- ๊ด๋ฆฌํ๋ ๋๊ธฐํ์ ๊ฐฏ์
- mutex๋ ๋ฝ์ ๊ฑธ์ ์ค๋ ๋๋ง์ด ๋ฝ ํด์ ๊ฐ๋ฅ
- semaphore์ ๋ฝ์ ๊ฑธ์ง ์์ ์ค๋ ๋๋ signal์ ๋ณด๋ด ๋ฝ ํด์ ๊ฐ๋ฅ
'๐ป > CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] Synchronization - 2 (0) | 2022.12.16 |
---|---|
[์ด์์ฒด์ ] Synchronization - 1 (0) | 2022.12.16 |
[์ด์์ฒด์ ] Real-time System์ด๋? (1) | 2022.12.16 |
CS ์ฐธ๊ณ (0) | 2022.06.12 |
CS50_๋ฐฐ์ด (0) | 2022.06.12 |