๐ ๊ณต์ ์์์ ๋ํ ์ ๊ทผ
๊ณต์ ์์์ด๋?
๊ณต์ ์์์ด๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ํจ๊ป ์ฌ์ฉํ๋ ์์์ ๋งํ๋ค. ์๋ฅผ ๋ค์ด ๋ณ์, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ, ํ์ผ ๋ฑ์ด ์๋ค. ์ด๋ฌํ ์์์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๊ณต๋์ผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ๋๊ฐ ๋จผ์ ์ ๊ทผํ๋๋์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์๋ค.
๋ฌธ์ ์ํฉ: ๊ณต์ ๋ณ์
์๋ฅผ ๋ค์ด, ์ํ ๊ณ์ข์ 10๋ง ์์ด ๋ค์ด ์๋ ์ํ๋ผ๊ณ ๊ฐ์ ํ๋ค. ์ฌ๊ธฐ์ ๋ ๊ฐ์ ํ๋ก์ธ์ค(P1๊ณผ P2)๊ฐ ๋์์ ์ ๊ธ์ ์๋ํ๋ค๊ณ ํ์.
| ๋จ๊ณ | P1 ํ๋ | P2 ํ๋ |
| 1 | ์๊ธ ํ์ธ → 10๋ง ์ | ์๊ธ ํ์ธ → 10๋ง ์ |
| 2 | ์๊ธ์ 10๋ง ์ ์ถ๊ฐ → 20๋ง ์ | ์๊ธ์ 5๋ง ์ ์ถ๊ฐ → 15๋ง ์ |
| 3 | ์๊ธ ์ ์ฅ → 20๋ง ์ ์ ์ฅ | ์๊ธ ์ ์ฅ → 15๋ง ์ ์ ์ฅ |
์ด ๊ฒฝ์ฐ, ๋ง์ง๋ง์ ์คํ๋ P2๊ฐ ๋ฎ์ด์ฐ๋ฉด์ ์๊ธ์ 15๋ง ์์ผ๋ก ๋จ๊ฒ ๋๋ค. ์ค์ ๋ก๋ 25๋ง ์์ด ๋์ด์ผ ์ ์์ธ๋ฐ, ํ๋์ ์ ๊ธ์ด ๋ฌด์๋ ๊ฒฐ๊ณผ๊ฐ ๋์จ ๊ฒ์ด๋ค.
๊ฒฝ์ ์กฐ๊ฑด (Race Condition)
๊ฒฝ์ ์กฐ๊ฑด์ด๋, ๋ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๋์์ ๊ณต์ ์์์ ์ ๊ทผํ๋ฉด์, ๊ทธ ์ ๊ทผ ์์์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋ ์ํฉ์ ๋งํ๋ค. ์ด๋ ์ด๋ค ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์คํ๋๋๋์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๋ฏ๋ก, ๊ฒฐ๊ณผ๋ฅผ ์์ธกํ ์ ์๊ฒ ๋๋ค.
โฐ ์๊ณ๊ตฌ์ญ (Critical Section)
์ ์
์๊ณ๊ตฌ์ญ์ด๋ ๊ณต์ ์์์ ์ ๊ทผํ๋ ์ฝ๋ ์์ญ์ ๋งํ๋ค. ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์ด ์์ญ์ ๋์์ ์คํํ๋ฉด ๊ฒฐ๊ณผ๊ฐ ์๋ชป ๋์ฌ ์ ์๊ธฐ ๋๋ฌธ์, ํน๋ณํ ๊ด๋ฆฌ๊ฐ ํ์ํ๋ค.
์์
์๊ธ ์ ๊ธ ์ฝ๋ ์ค์์:
์๊ธ ํ์ธ → ์
๊ธ → ์ ์ฅ
์ด ๋ถ๋ถ์ด ๋ฐ๋ก ์๊ณ๊ตฌ์ญ์ด๋ค. ์ด ์ฝ๋๋ ๋์์ ์คํ๋๋ฉด ์ ๋๋ ์ค์ํ ๊ตฌ๊ฐ์ด๋ค.
๋น์ ๋ก ์ดํดํ๊ธฐ: ์ฃผ๋ฐฉ์ ๋ฏน์
- ๊ฐ์ค๋ ์ธ์ง๋ ์ฌ๋ฌ ๋ช ์ด ๋์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฏ๋ก ๊ณต์ ํด๋ ๋ฌธ์ ๊ฐ ์๋ค.
- ๋ฐ๋ฉด, ๋ฏน์๊ธฐ๋ ํ๋๋ฟ์ด๋ฏ๋ก ํ ๋ช ์ฉ๋ง ์จ์ผ ํ๋ค.
๋ง์ฝ ๋ ์ฌ๋์ด ๋์์ ๋ฏน์๋ฅผ ์ฐ๋ฉด, ์ํ ์ฌ๋ฃ์ ์ฃผ์ค ์ฌ๋ฃ๊ฐ ์์ฌ๋ฒ๋ฆด ์ ์๋ค. ๊ทธ๋์ ๋ฏน์๊ธฐ๋ฅผ ํ ๋ช ์ฉ ์์๋๋ก ์ฌ์ฉํด์ผ ํ๋ ๊ฒ์ฒ๋ผ, ์๊ณ๊ตฌ์ญ๋ ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ๋ค์ด๊ฐ์ผ ํ๋ค.
์๊ณ๊ตฌ์ญ์ ํน์ง
- ๋์์ ํ๋์ ํ๋ก์ธ์ค๋ง ์ ๊ทผํ ์ ์์ด์ผ ํ๋ค.
- ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์๊ณ๊ตฌ์ญ ๋ฐ์์ ๊ธฐ๋ค๋ ค์ผ ํ๋ค.
- ์ด ์์ญ์ ๋ฐฐํ์ ์ผ๋ก ์คํ๋์ด์ผ ํ๋ฉฐ, ์ ์ ์ด ๋ถ๊ฐ๋ฅํ๋ค.
์ค์์ฑ
์๊ณ๊ตฌ์ญ์ ์ ๋๋ก ๊ด๋ฆฌํ์ง ์์ผ๋ฉด, ๊ฒฝ์ ์กฐ๊ฑด์ด ๋ฐ์ํ์ฌ ์๋ชป๋ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค. ์๊ธ ์์์ฒ๋ผ, ์ค์ ์ ๊ธ ๊ธ์ก์ด ๋ฐ์๋์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
๐ง ์์ฐ์-์๋น์ ๋ฌธ์
๊ฐ๋
์์ฐ์-์๋น์ ๋ฌธ์ ๋ ๋ ๊ฐ์ ๋ ๋ฆฝ๋ ํ๋ก์ธ์ค ๊ฐ์ ์ํธ์์ฉ์ ์ค๋ช ํ๋ค.
- ์์ฐ์(Producer)๋ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด ๋ฒํผ์ ์ ์ฅํ๋ค.
- ์๋น์(Consumer)๋ ๋ฒํผ์์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด ์ฌ์ฉํ๋ค.
์ด๋ ๋ฒํผ๋ ๊ณต์ ์์์ด๊ธฐ ๋๋ฌธ์, ๋์์ ์ ๊ทผํ๋ฉด ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค.
๊ตฌ์กฐ
- ๊ณต์ ์์: ์ํ ๋ฒํผ (Circular Buffer)
- ๊ณต์ ๋ณ์: sum → ํ์ฌ ๋ฒํผ์ ์๋ ํญ๋ชฉ ์๋ฅผ ์ ์ฅํ๋ ๋ณ์
์์ ์ฝ๋
์์ฐ์:
input(buf);
sum = sum + 1;
์๋น์:
output(buf);
sum = sum - 1;
๋ฌธ์ ๋ฐ์ ์๋๋ฆฌ์ค
- ์์ฐ์์ ์๋น์๊ฐ ๋์์ sum ๊ฐ์ ์ฝ๋๋ค (๋ ๋ค 3์ด๋ผ๊ณ ์ฝ์)
- ์์ฐ์: sum = 3 + 1 → 4
- ์๋น์: sum = 3 - 1 → 2
- ๋ ์ค ํ๋๊ฐ ๋ง์ง๋ง์ ๋ฎ์ด์ด๋ค → ๊ฒฐ๊ณผ๋ 2 ๋๋ 4
๊ทธ๋ฌ๋ ์ค์ ๋ก๋ ์์ฐ๋ 1๋ฒ, ์๋น๋ 1๋ฒ ์ผ์ด๋ฌ๊ธฐ ๋๋ฌธ์ ์ ์์ ์ธ sum ๊ฐ์ 3์ด์ด์ผ ํ๋ค. ์๋ชป๋ ๊ฐ์ด ์ ์ฅ๋๋ ์ด ์ํฉ๋ ๊ฒฝ์ ์กฐ๊ฑด์ด๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด, sum์ ๋ํ ์ ๊ทผ์ ์๊ณ๊ตฌ์ญ์ผ๋ก ๋ง๋ค์ด์ผ ํ๋ค. ์์ฐ์์ ์๋น์๊ฐ ๋์์ sum์ ์์ ํ์ง ๋ชปํ๋๋ก ๋ง์์ผ ํ๋ค.
ํ๋์จ์ด ์์ ์์
ํ๋ฆฐํฐ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ํ๋์ ๊ณต์ ์์์ด๋ค. A ์ฌ์ฉ์๊ฐ ์ฌ์ฑ ์ฌ์ง์ ์ถ๋ ฅํ๊ณ , B ์ฌ์ฉ์๊ฐ ๋ฌผ๊ณ ๊ธฐ ์ฌ์ง์ ์ถ๋ ฅํ๋ ค๋ ์ํฉ์ ์๊ฐํด๋ณด์.
๋ง์ฝ ๋์์ ์์ ํ๋ฉด ๋ฐ์ธ๋ฐ์ด ์ฌ์ง์ด ๋์ฌ ์๋ ์๋ค. ๊ทธ๋์ ํ๋ฆฐํฐ๋ ์๊ณ๊ตฌ์ญ์ผ๋ก ๊ด๋ฆฌํด์ผ ํ๋ฉฐ, ํ ๋ฒ์ ํ ์ฌ๋๋ง ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค.
๐ช ์๊ณ๊ตฌ์ญ ๋ฌธ์ ํด๊ฒฐ ์กฐ๊ฑด
1. ์ํธ ๋ฐฐ์ (Mutual Exclusion)
- ์๊ณ๊ตฌ์ญ์๋ ๋์์ ํ๋์ ํ๋ก์ธ์ค๋ง ๋ค์ด๊ฐ ์ ์์ด์ผ ํ๋ค.
- ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ ๊ทผํ๋ฉด ๋ฐ์ดํฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
- ๋น์ : ๋ฏน์๊ธฐ๋ฅผ ๋ ์ฌ๋์ด ๋์์ ์ฌ์ฉํ๋ฉด ์ ๋๋ค.
2. ํ์ ๋๊ธฐ (Bounded Waiting)
- ์ด๋ค ํ๋ก์ธ์ค๋ ๋ฌดํ์ ๊ธฐ๋ค๋ ค์๋ ์ ๋๋ค.
- ์์ฒญํ ํ๋ก์ธ์ค๋ ์ธ์ ๊ฐ๋ ๋ฐ๋์ ์๊ณ๊ตฌ์ญ์ ๋ค์ด๊ฐ ์ ์์ด์ผ ํ๋ค.
- ๋น์ : ์๋ฆฌ์ฌ A๊ฐ ๊ณ์ ๋ฏน์๋ฅผ ๋ ์ ํด ์๋ฆฌ์ฌ B๊ฐ ๊ณ์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฑด ์ ๋๋ค.
3. ์งํ์ ์ตํต์ฑ (Progress / Flexibility)
- ์๊ณ๊ตฌ์ญ์ ์ง์ ํ ์์ฌ๊ฐ ์๋ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ง์ ์ ๋ฐฉํดํด์๋ ์ ๋๋ค.
- ๊ณต์ ์์์ด ๋น์ด ์๋ค๋ฉด, ํ์ํ ํ๋ก์ธ์ค๋ ์ฆ์ ์ง์ ํ ์ ์์ด์ผ ํ๋ค.
- ๋น์ : ์๋ฆฌ์ฌ A๊ฐ ์ฌ๊ณ ์์ ๋, ์๋ฆฌ์ฌ B๋ ๋ฐ๋ก ๋ฏน์๋ฅผ ์จ์ผ ํ๋ค. ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์๋ค.
| ์กฐ๊ฑด | ์ค๋ช | ๋น์ |
| ์ํธ ๋ฐฐ์ | ํ ๋ฒ์ ํ๋๋ง ์ ๊ทผ | ๋ฏน์๋ ํ ๋ช ์ฉ๋ง ์ฌ์ฉ |
| ํ์ ๋๊ธฐ | ๋ฌดํ ๋๊ธฐ ๋ฐฉ์ง, ๊ณต์ ์ฑ | ๋ชจ๋ ์ธ์ ๊ฐ๋ ๋ฏน์ ์ฌ์ฉ ๊ฐ๋ฅ |
| ์งํ์ ์ตํต์ฑ | ๋ฐฉํด ์์ด ์์ ๋กญ๊ฒ ์ง์ | ๋น์ด ์์ผ๋ฉด ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ |
'CS > Operating System' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [OS] RPC๋? (0) | 2025.04.24 |
|---|