Race Condition
Race Condition ์ด๋, ์ฌ๋ฌ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๊ณตํต ์์์ ๋์ ์ ๊ทผํ์ฌ ์ฝ๊ฑฐ๋, ์ฐ๋ ๊ฒฝ์ฐ, ์ด๋ค ์์๋ก ์ ๊ทผํ๋์ง์ ๋ฐ๋ผ์ ์คํ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋ ์ํฉ์ด๋ค.
์ฆ, ๊ณตํต ์์์ ๋๊ณ ๊ฒฝ์ํ๋ ์ํ์ด๋ค.
โ Race(๊ฒฝ์)์ ์๋ฏธ๊ฐ ๊ทธ๋๋ก ํจ์ถ๋์ด ์๋ค.
ย Critical Section Problem
โข
์ฌ๋ฌ ํ๋ก์ธ์ค๋ค์ด ๊ณต์ ์์์ ๋์์ ์ ๊ทผํ ๋ ์๊ธฐ๋ ๋ฌธ์ ์ด๋ค.
โข
Critical Section ์ด๋, ๊ฐ ํ๋ก์ธ์ค์ ์กด์ฌํ๋ ๊ณต์ ์์์ ์ ๊ทผํ๋ ์ฝ๋ ์์ญ์ด๊ณ , Race Condition ์ด ๋ฐ์ํ ์ ์๋ค.
โข
๋ง์ฝ ํ๋์ ํ๋ก์ธ์ค๊ฐ Critical Section ์ ์๋ค๋ฉด, ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ๊ทธ ์ฝ๋ ์์ญ์ ๋ค์ด๊ฐ ์ ์์ด์ผ ํ๋ค.
โข
Critical Section Problem ์ ํด๊ฒฐํ๊ธฐ ์ํด์ 3๊ฐ์ง ์กฐ๊ฑด์ด ์ถฉ์กฑ๋์ด์ผ ํ๋ค.
โฆ
Mutual Exclusion(์ํธ ๋ฐฐ์ ) : ํ ํ๋ก์ธ์ค๊ฐ Critical Section ์ ์ํ ์ค์ด๋ฉด, ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ ๊ทธ ์์ญ์ ์ ๊ทผํ ์ ์๋ค.
โฆ
Progress : ํ์ฌ Critical Section ์ ์ ๊ทผํ ํ๋ก์ธ์ค๊ฐ ์๋ ์ํ์์ ์ ๊ทผํ๋ ค๊ณ ํ๋ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด, Critical Section ์ ๋ค์ด๊ฐ๊ฒ ํด์ฃผ์ด์ผ ํ๋ค.
โฆ
Bounded Waiting(์ ํ ๋๊ธฐ) : ํ๋ก์ธ์ค๊ฐ Critical Section ์ ๋ค์ด๊ฐ๋ ค๊ณ ์์ฒญํ ํ๋ถํฐ ์์ฒญ์ด ํ์ฉ๋ ๋๊น์ง ๋ค๋ฅธ ํ๋ก์ธ์ค๋ค์ด Critical Section ์ ๋ค์ด๊ฐ๋ ํ์์ ํ๊ณ๊ฐ ์์ด์ผ ํ๋ค. ์ฆ, ํ๋ก์ธ์ค์ ๋ฌดํ์ ๋๊ธฐ๋ฅผ ๋ง๋ ๊ฒ์ด๋ค.
ย ํด๊ฒฐ ๋ฐฉ๋ฒ
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ํ๋ก์ธ์ค๋ค ๋ผ๋ฆฌ์ ์คํ ์์๋ฅผ ์ ํด์ฃผ๋ Synchronization(๋๊ธฐํ) ๊ณผ์ ์ด ํ์ํ๋ค.
โข
Semaphore (์ธ๋งํฌ์ด) : ์ธ๋งํฌ์ด ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ Critical Section ์ ์ง์
ํ ์ ์๋ค.
โฆ
Busy Waiting ์ฌ์ฉ X
โข
Mutex (๋ฎคํ
์ค) : ํ๋์ ํ๋ก์ธ์ค๊ฐ Critical Section ์์ ์ํ ์ค์ด๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ Critical Section ์ ์ ๊ทผํ ์ ์๋ค.
โข
Monitor : ๊ณต์ ์์์ ๊ตฌ์กฐ, ๊ณต์ ์์์ ์ฐ์ฐ์ ์ ๊ณตํ๋ Procedure , ํ์ฌ ํธ์ถ๋ ํ๋ก์์ ๊ฐ์ ๋๊ธฐํ๋ฅผ ์บก์ํํ ๋ชจ๋์ด๋ค. ๊ณต์ ์์์ ์ ๊ทผ์ ํ๋ก์์ ๋ฅผ ํตํด์๋ง ๊ฐ๋ฅํ๋ค.
โ Busy Waiting : Critical Section ์ง์
์ ๊ธฐ๋ค๋ฆฌ๋ฉด์ ๊ณ์ CPU์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉ