Race Condition
Last updated
Last updated
๋ ๊ฐ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๊ณตํต ์์์ ๋์์ ์ฝ๊ฑฐ๋ ์ฐ๋ ๋์์ ํ ๋, ๊ณต์ฉ ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ ์์์ ๋ฐ๋ผ ์คํ ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ง ์๊ณ ๋ฌ๋ผ์ง๋ ์ํฉ์ ๋ปํ๋ค.
Race์ ๋ป ๊ทธ๋๋ก, ๋๊ฐ์ ์ค๋ ๋๊ฐ ํ๋์ ์์์ ๋๊ณ ์๋ก ์ฌ์ฉํ๋ ค๊ณ ๊ฒฝ์ํ๋ ์ํฉ์ ๋งํ๋ค.
์์ฐ์ - ์๋น์ ๋ชจ๋ธ
์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด A์ B ํ๋ก์ธ์ค๊ฐ ๊ฐ์ ๋ฒํผ๋ฅผ ๊ณต์ ํ๊ณ ์๋ ์ํ์ด๊ณ , A๋ ๊ณต์ ํ๊ณ ์๋ ๋ฒํผ์ ๋ฐ์ดํฐ๋ฅผ ์ฑ์ ๋ฃ๊ณ , B๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ๊ฐ๋ค. ( ๋ฒํผ๊ฐ ๊ฐ๋ ์ฐจ์์ผ๋ฉด A๋ ๋น ๊ณต๊ฐ์ด ์๊ธธ ๋๊น์ง ๋๊ธฐํ๊ณ , ๋ฒํผ๊ฐ ํ ๋น์ด์์ผ๋ฉด B๋ A๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ค ๋๊น์ง ๋๊ธฐํ๋ค. )
์ด์ฒ๋ผ ๊ณต์ฉ ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ ์์์ ๋ฐ๋ผ ์คํ ๊ฒฐ๊ณผ๊ฐ ๋์ผํ์ง ์๋ ์ํฉ์ด Race Condition์ด๋ค.
๋ฉํฐ ํ๋ก์ธ์ค ํ๊ฒฝ์์ 2๊ฐ์ PCU๊ฐ ๋์์ ์ปค๋ ๋ด๋ถ์ ๊ณต์ ๋ฐ์ดํฐ์ ์ ๊ทผํ์ฌ ์กฐ์ํ๋ ๊ฒฝ์ฐ
๋ฉํฐ ์ค๋ ๋ ํ๊ฒฝ์์ ๊ณตํต ์์์ ๋ณํํ์ฌ ์์ ํ ๋
โ ํด๊ฒฐ๋ฒ : ์ปค๋ ๋ด๋ถ์ ์๋ ๊ฐ ๊ณต์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ๋๋ง๋ค, ๊ทธ ๋ฐ์ดํฐ์ ๋ํ lock/unlock์ ํ๋ค.
์ปค๋ ๋ชจ๋์์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ์ฌ ์์ ์ ์ํํ๋ค๊ฐ ์ธํฐ๋ฝํธ๊ฐ ๋ฐ์ํ์ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๊ฒฝ์ฐ
โ ํด๊ฒฐ๋ฒ : ์ปค๋๋ชจ๋์์ ์์ ์ ์ํํ๋ ๋์, ์ธํฐ๋ฝํธ๋ฅผ disable ์์ผ CPU ์ ์ด๊ถ์ ๊ฐ์ ธ๊ฐ์ง ๋ชปํ๋๋ก ํ๋ค.
ํ๋ก์ธ์ค๊ฐ ์์คํ ์ฝ์ ํ์ฌ ์ปค๋๋ชจ๋๋ก ์ง์ ํ์ฌ ์์ ์ ์ํํ๋ ๋์ค ๋ฌธ๋งฅ ๊ตํ์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ
ํ๋ก์ธ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ์ค, ์๊ฐ์ด ์ด๊ณผ๋์ด CPU ์ ์ด๊ถ์ด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ก ๋์ด๊ฐ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ๊ฒฝ์ฐ
โ ํด๊ฒฐ๋ฒ : ํ๋ก์ธ์ค๊ฐ ์ปค๋๋ชจ๋์์ ์์ ์ ํ๋ ๊ฒฝ์ฐ ์๊ฐ์ด ์ด๊ณผ๋์ด๋ CPU ์ ์ด๊ถ์ ๋ค๋ฅธ ํ๋ก์ธ์ค์๊ฒ ๋๊ฒจ์ฃผ์ง ๋ชปํ๋๋ก ํ๋ค.