๋ชจ๋ํฐ๋?
๋ชจ๋ํฐ๋ ์ค๋ ๋๊ฐ mutex๋ฅผ ๋ณด์ฅํ ์ ์๋๋ก ํ๋ ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ด๋ค.
์กฐ๊ฑด์ ๋ฐ๋ผ์ ์ค๋ ๋๋ฅผ waiting ์ํ๋ก ์ ํ์ํค๋๋ฐ ์ด๋ฅผ cooperation์ด๋ผ๊ณ ํ๋ค.
mutex - ๋ฝ์ ๊ฐ์ง๊ณ ์๋ ์ค๋ ๋๋ง์ด ์๊ณ ์์ญ์ ๋ค์ด๊ฐ ์ ์๊ณ ๋ฉ์๋๋ฅผ ์คํํ ์ ์๋ค.
๋ชจ๋ํฐ์ ์๋ ๋ฐฉ์
๋ชจ๋ํฐ๋ ํฌ๊ฒ ๋๊ฐ์ง์ ๊ตฌ์ฑ ์์๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
๋ฎคํ ์ค
mutual exclusion์ ๋ณด์ฅํ๋ ์ฅ์น์ด๋ค. ๋ฝ์ ๊ฐ์ง์ง ๋ชปํ ์ค๋ ๋๋ ๋ฎคํ ์ค์์ ๊ด๋ฆฌํ๋ ์ํธ๋ฆฌ ํ์ ๋ค์ด๊ฐ๋ค.
condition variable
wating queue๋ฅผ ์ด์ฉํด ์กฐ๊ฑด์ด ์ถฉ์กฑ๋์ง ์์ ์ค๋ ๋๋ค์ด ๋๊ธฐ ์ํ๋ก ๋จธ๋ฌผ ์ ์๋๋กํ๋ค.
๋ง์ฝ ์ค๋ ๋์ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋์์ ๊ฒฝ์ฐ ์ค๋ ๋๋ฅผ ๊นจ์ฐ๋ ์์ ์ด ํ์ํ๋ฐ ์ด๋ฌํ ๋ฉ์ปค๋์ฆ์ผ๋ก ์ธํด 3๊ฐ์ ๋์(์ํ)๋ฅผ ๊ฐ์ง๋ค.
1. wait - ์ค๋ ๋๊ฐ ์์ ์ cv(condition variable)์ waiting ํ์ ๋ฃ๊ณ ๋๊ธฐ(wait) ์ํ๋ก ์ ํํ๋ค.
2. signal - wating ํ์์ ๋๊ธฐ ์ค์ธ ์ค๋ ๋ ์ค ํ๋๋ฅผ ๊นจ์ด๋ค.
3. broadcast - wating ํ์์ ๋๊ธฐ ์ค์ธ ๋ชจ๋ ์ค๋ ๋๋ฅผ ๊นจ์ด๋ค.
๋ชจ๋ํฐ์๋ ๋ ๊ฐ์ ํ๊ฐ ์กด์ฌํ๋ค.
์ํธ๋ฆฌ ํ - ์๊ณ์์ญ (critical section)์ ์ง์ ์ ๊ธฐ๋ค๋ฆฌ๋ ํ -> ๋ฎคํ ์ค๊ฐ ๊ด๋ฆฌํ๋ค.
waiting ํ - ์กฐ๊ฑด์ด ์ถฉ์กฑ๋๊ธธ ๊ธฐ๋ค๋ฆฌ๋ ํ -> cv๊ฐ ๊ด๋ฆฌํ๋ค.
signal and continue
์๊ทธ๋์ ์ฃผ๊ณ ๊ธฐ์กด ์ค๋ ๋๊ฐ ์ค๋จ๋์ง ์๋๋ค.
signal and wait
์๊ทธ๋์ ์ฃผ๊ณ ๊ธฐ์กด ์ค๋ ๋๋ ๋๊ธฐ ์ํ์ ๋ค์ด๊ฐ๋ฉฐ ๋ค์ ๋ฝ์ ์ป์ผ๋ฉด ๊นจ์ด๋๋ค.
์๋ฐ์์์ ๋ชจ๋ํฐ
๋ชจ๋ ์๋ฐ ๊ฐ์ฒด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด๋ถ์ ๋ชจ๋ํฐ๋ฅผ ํ๋์ฉ ๊ฐ์ง๊ณ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ synchronized ํค์๋๋ฅผ ํตํด์ ์ฌ์ฉํ ์ ์๋ค.
*์๋ฐ์ ๋ชจ๋ํฐ๋ cv๋ฅผ ํ๋๋ง ๊ฐ์ง๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ฐ์ ๋ชจ๋ํฐ๋ ์ธ๊ฐ์ง ์ํ๊ฐ ์๋๋ฐ, ์ฉ์ด๋ง ์ด์ง ๋ค๋ฅผ ๋ฟ ๊ธฐ๋ฅ์ ๊ฐ๋ค.
๋ชจ๋ํฐ | ์๋ฐ ๋ชจ๋ํฐ |
wait | wait |
signal | notify |
broadcast | notifyAll |
'Computer Science > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น๊ณผ ํ์ด์ง ๋ฐฉ์ (1) | 2024.01.03 |
---|---|
๋ฐ๋๋ฝ์ด ๋ฐ์ํ๋ ์ด์ ์ ํด๊ฒฐ ์ ๋ต (2) | 2024.01.03 |
์ค์ผ์ค๋ง ๊ฐ๋ ์ ๋ฆฌ (1) | 2023.12.28 |
์ด์์ฒด์ ์คํฐ๋ ์ง๋ฌธ ์ ๋ฆฌ (0) | 2023.12.16 |
ํธ๋์ญ์ ๊ณผ ๊ฒฉ๋ฆฌ ๋ ๋ฒจ (0) | 2023.07.29 |