Race Condition๊ณผ Mutex ยท Semaphore
Table of contents
Race Condition ์ธ์ด ํต์ฌ
Race Condition(๊ฒฝ์ ์ํ)๋ ๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ์์์ ๋์ ์ ๊ทผํ ๋, ์ ๊ทผ ์์์ ๋ฐ๋ผ ์คํ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋ ํ์์ ๋งํ๋ค.
๋ฐ๋ผ์, ๊ณต์ ์์์ ์ ๊ทผํ ์ ์๋ ์ค๋ ๋์ ์ ํ์ ๊ฑธ์ด ๋๋ ๊ฒ์ด ์ค์ํ๋ฐ, ์ด๋ฅผ ์ํธ๋ฐฐ์ ๋ผ๊ณ ํ๋ค.
๋ํ์ ์ธ ๋ฐฉ์์ผ๋ก๋, Mutex์ Semaphore๊ฐ ์๋ค.
๋ ๋ฐฉ์์ ๊ณตํต์ ์ ์ ๊ทผ ๊ถํ์ด ์์ผ๋ฉด ์ฐ๋ ๋๋ ์ ๊ทผ ๊ถํ์ ์ป์๋๊น์ง ๋๊ธฐํด์ผํ๋ค๋ ์ ์ด๊ณ
์ฐจ์ด์ ์ Mutex๋ ์๊ณ ๊ตฌ์ญ์ ์ง์ ํ์ฌ ๊ถํ(key)๋ฅผ ํ๋ํ ์ฐ๋ ๋ ๋ง์ด ๋ฝ์ ํด์ ํ ์ ์์ง๋ง,
์ธ๋งํฌ์ด๋ ์๊ณ๊ตฌ์ญ์ ์ง์ ํ์ง ์์ ์ฐ๋ ๋๋ signal ํจ์๋ฅผ ํตํด ๋ฝ์ ํด์ ํ ์ ์๋ค.
Race Condition์ด๋
Race Condition(๊ฒฝ์ ์ํ) ๋ ๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ์์์ ๋์ ์ ๊ทผํ ๋, ์คํ ์์์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ์ด ๋ฌ๋ผ์ง ์ ์๋ ํ์์ ๋งํ๋ค.
๋ฐ๋ผ์, ๊ณต์ฉ ์์์ ํ๋์ ์ฐ๋ ๋๋ง ์ฌ์ฉํ ์ ์๋๋ก ์๊ณ๊ตฌ์ญ์ผ๋ก ์ค์ ํด๋๊ณ , ํ ์ฐ๋ ๋๊ฐ ์ฌ์ฉ์ค์ด๋ผ๋ฉด ๋ค๋ฅธ ์ฐ๋ ๋๋ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ์ํธ๋ฐฐ์ ์ํค๋ ๋ฐฉ๋ฒ์ผ๋ก ํด๊ฒฐํ ์ ์๋ค.
ํด๊ฒฐ์ฑ
Mutex(๋ฎคํ ์ค)
Mutex๋ Mutual Exclusion(์ํธ๋ฐฐ์ )์ ์ฝ์์ด๋ค.
๋ฎคํ ์ค๋ Locking ๋งค์ปค๋์ฆ์ผ๋ก, ํ๋์ ์ฐ๋ ๋ ๋ง์ด ๋ฎคํ ์ค๋ฅผ ์ป์ด ์๊ณ ๊ตฌ์ญ์ ๋ค์ด์ฌ ์ ์๊ณ ,
๋ฎคํ ์ค๋ฅผ ํ๋ํ๋ ์ฐ๋ ๋๋ง์ด ๋ฎคํ ์ค๋ฅผ ํด์ ํ ์ ์๋ค.
๋ฐ๋ผ์, ๋ค๋ฅธ ์ฐ๋ ๋๋ ๋ฎคํ ์ค๋ฅผ ํด์ ํ ๋๊น์ง ์๊ณ๊ตฌ์ญ์ ์ ๊ทผํ์ง ๋ชปํ๋ค.
Semaphore(์ธ๋งํฌ์ด)
์นด์ดํ ์ธ๋งํฌ์ด์ ๊ฒฝ์ฐ, ์ค์ ํ ๊ฐ๋งํผ ์ฐ๋ ๋๋ฅผ ํ์ฉํ๊ณ ๊ทธ ์ด์์ ์ฐ๋ ๋๊ฐ ์์์ ์ ๊ทผํ๋ฉด ๋ฝ์ด ์คํ๋๋ค.
์ฆ, ๊ณตํต์ผ๋ก ๊ด๋ฆฌํ๋ ํ๋์ ๊ฐ์ผ๋ก ์ํธ๋ฐฐ์ ๋ฅผ ๋ฌ์ฑํ๋ค.
์ฐธ๊ณ ๋ก, ํ์ฉํ๋ ์ฐ๋ ๋๊ฐ 1๊ฐ์ธ ์ธ๋งํฌ์ด๋ฅผ ๋ฐ์ด๋๋ฆฌ ์ธ๋งํฌ์ด๋ผ ํ๊ณ ์ด๋ ๋ฎคํ ์ค์ ๋์ผํ๊ฒ ๋์ํ๋ค.
์ธ๋งํฌ์ด๋ ๊ณต์ ์์์ ์ ๊ทผํ๊ธฐ ์ํด ์นด์ดํ ๋ณ์๋ฅผ ๊ฐ์์ํค๊ณ ๋๊ธฐํ๋ wait ํจ์์
์๊ณ ๊ตฌ์ญ์ ๋น ์ ธ๋์ค๋ฉด์ ๋ณ์๋ฅผ ์ฆ๊ฐ์ํค๋ signal ํจ์๋ฅผ ์ด์ฉํด ๊ด๋ฆฌํ๋ค.
์ธ๋งํฌ์ด๋ signal ํจ์๋ก ๋ฝ์ ๊ฑธ์ง ์์ ์ฐ๋ ๋๋ ๋ฝ์ ํด์ ํ ์ ์๋ค๋ ์ ์์ ๋ฎคํ ์ค์๋ ์ฐจ์ด์ ์ด ์กด์ฌํ๋ค.
์ฐธ๊ณ ํ ๋ธ๋ก๊ทธ