๋์๋ค๋ฐ์ ์ผ๋ก ์คํ๋๋ ํ๋ก์ธ์ค ๋๋ ์ค๋ ๋๋ค์ ์๋ก ํ๋ ฅํ๋ฉฐ ์ํฅ์ ์ฃผ๊ณ ๋ฐ๋๋ค.
์ด ๊ณผ์ ์์ ์์์ ์ผ๊ด์ฑ์ ๋ณด์ฅํด์ผ ํ๋ค.
์๋์์๋ ํ๋ก์ธ์ค ๋จ์ด๋ง ์ธ๊ธํ์ง๋ง, ์ค์ ๋ก๋ ์ค๋ ๋์๋ ์ ์ฉ๋๋ ๋ด์ฉ์ด๋ค.
๋๊ธฐํ์ ์๋ฏธ
๊ณต๋์ ๋ชฉ์ ์ ์ด๋ฃจ๊ธฐ ์ํด์ ๋์์ ํ๋ ฅํ๋ฉฐ ์ํ๋๋ ํ๋ก์ธ์ค๋ค์ด ์๋ค. ๊ฐ๋ น ์๋ ํ๋ก์ธ์ ํ๋ก๊ทธ๋จ์ด ์๋ค๋ฉด ๋ง์ถค๋ฒ์ ๊ฒ์ฌํด์ฃผ๋ ํ๋ก์ธ์ค, ํ๋ฉด์ ์ถ๋ ฅํด์ฃผ๋ ํ๋ก์ธ์ค ๋ฑ์ด ํฌํจ๋ ์ ์๋ค. ํ์ง๋ง ์ด๋ฌํ ํ๋ก์ธ์ค๋ค์ด ๋ง๊ตฌ์ก์ด ์ํ๋์ด๋ ๊ด์ฐฎ์๊น?
์๋๋ค. ์ฌ๋ฐ๋ฅธ ์ํ์ ์ํด์๋ ํ๋ก์ธ์ค๋ค์ด ๋๊ธฐํ ๋์ด์ผ ํ๋ค. ์๋๋ฉด, ์์์ ์ผ๊ด์ฑ์ ๋ณด์ฅํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋๊ธฐํ๋ ํ๋ก์ธ์ค๋ค์ ์ํ ์๊ธฐ๋ฅผ ๋ง์ถ๋ ๊ฒ์ด๋ค. ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋๋ค.
1. ์คํ ์์ ์ ์ด : ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฐ๋ฅธ ์์๋๋ก ์คํํ๊ธฐ
2. ์ํธ ๋ฐฐ์ : ๋์์ ์ ๊ทผํ๋ฉด ์๋๋ ์์์ ํ๋์ ํ๋ก์ธ์ค๋ง ์ ๊ทผํ๋๋ก ํ๊ธฐ
1. ์คํ ์์ ์ ์ด ๋๊ธฐํ
reader writer problem
writer: Book.txt ํ์ผ์ ๊ฐ์ ์ ์ฅํ๋ ํ๋ก์ธ์ค
reader: Book.txt ํ์ผ์ ์ ์ฅ๋ ๊ฐ์ ์ฝ์ด๋ค์ด๋ ํ๋ก์ธ์ค
์ด ๋ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋์์ ์คํ๋๋ค๊ณ ๊ฐ์ ํด๋ณด์. ๋ฌด์์ ๋์์ ์คํํด๋ ๊ด์ฐฎ์๊น? No
์คํ์ ์์๊ฐ ์๋ค. reader ํ๋ก์ธ์ค๋ Book.txt ์์ ๊ฐ์ด ์กด์ฌํ๋ค๋ ํน์ ์กฐ๊ฑด์ด ๋ง์กฑํด์ผ๋ง ์คํํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ, writer์ ์คํ์ด ์ ํ๋์ด์ผ ํ๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด ์คํ ์์ ์ ์ด ๋๊ธฐํ์ด๋ค.
2. ์ํธ ๋ฐฐ์ ๋๊ธฐํ
ํด๋น ๋๊ธฐํ๋ ๊ณต์ ๊ฐ ๋ถ๊ฐ๋ฅํ ์์์ ๋์ ์ฌ์ฉ์ ํผํ๊ธฐ ์ํ ๋๊ธฐํ์ด๋ค. ํ๋ฆฐํฐ์ ๊ฐ์ด ๋ฐ๋์ ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์ด์ฉ ๊ฐ๋ฅํ ์์์ด ์๋ค๋ฉด ์ด๋ฅผ ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์ด์ฉ ๊ฐ๋ฅํ๋๋ก ํ๋ ๊ฒ์ด ์ํธ ๋ฐฐ์ ๋ฅผ ์ํ ๋๊ธฐํ์ด๋ค.
Bank account problem
ํ์ฌ ๊ณ์ข์ ์์ก: 10๋ง์
ํ๋ก์ธ์ค A๋ ํ์ฌ ์์ก์ ์ฝ์ด 2๋ง์์ ์ถ๊ฐํ๋ ํ๋ก์ธ์ค
ํ๋ก์ธ์ค B๋ ํ์ฌ ์์ก์ ์ฝ์ด 5๋ง์์ ์ถ๊ฐํ๋ ํ๋ก์ธ์ค
๋ ํ๋ก์ธ์ค๋ฅผ ๋ฌด์์ ๋์์ ์คํํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ๊ทธ๋ผ ์์๋๋ก 17๋ง์์ด ๋จ์์์๊น? No
๋๊ธฐํ๊ฐ ์ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์์ ๊ฒฝ์ฐ ๋ค๋ฅธ ๊ฐ์ด ์ ์ฅ๋ ์ ์๋ค. ์๋ฅผ ๋ค์ด ํ๋ก์ธ์ค A๊ฐ ์คํ๋๋ฉด์ ์์ก์ ์ฝ๊ณ , ํด๋น ์์ก 10๋ง์์ 2๋ง์์ ๋ํ๊ณ ๊ฐ์ ๊ณ์ข์ ์ ์ฅํ๊ธฐ ์ ๋ฌธ๋งฅ ๊ตํ์ด ์ผ์ด๋ ํ๋ก์ธ์ค B๊ฐ ์คํ๋๋ค๋ฉด, B์์ ์ฝ์ด๋ค์ธ ์์ก์ 10๋ง์์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ ์ฅ ์ 17๋ง์์ด ์๋ 15๋ง์ ํน์ 12๋ง์์ด ์ ์ฅ๋ ์ ์๋ค.
์ด๋ฌํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ด์ ๋ ๊ณต์ ๋๋ ์์์ ๋ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ ๊ทผํ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด, ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์ด๋ค ํ๋ก์ธ์ค๊ฐ ์์์ ์ฝ๊ณ ์๋ ์ํ์๋ค๋ฉด ๋ฌธ๋งฅ ๊ตํ์ด ๋๋๋ผ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์์์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ํ๋ฉด ๋๋ค. ์ด๋ฅผ ์ํธ ๋ฐฐ์ ๋๊ธฐํ๋ผ๊ณ ํ๋ค.
Producer & Cunsumer problem
์์ฐ์, ๋ฌผ๊ฑด์ ๊ณ์ํด์ ์์ฐํ๋ ํ๋ก์ธ์ค
์๋น์, ๋ฌผ๊ฑด์ ๊ณ์ํด์ ์๋นํ๋ ํ๋ก์ธ์ค
'์ดํฉ' ๋ณ์๋ฅผ ๊ณต์ ํ๋ค.
์์ฐ์
์์ฐ์ () {
๋ฒํผ์ ๋ฐ์ดํฐ ์ฝ์
'์ดํฉ' ๋ณ์ 1 ์ฆ๊ฐ
}
์๋น์
์๋น์ () {
๋ฒํผ์์ ๋ฐ์ดํฐ ๋นผ๋ด๊ธฐ
'์ดํฉ' ๋ณ์ 1 ๊ฐ์
}
์ดํฉ์ด๋ผ๋ ๋ณ์๋ ์์ฐ์์ ์๋น์ ๋ชจ๋ ๊ณต์ ํ๋ ๋ณ์์ด๊ณ ์ด๊ธฐ๊ฐ์ 10์ด๋ผ๊ณ ํด๋ณด์.
์ด๋ฌํ ์ํ์์ ์์ฐ์๋ฅผ 10๋ง๋ฒ, ์๋น์๋ฅผ 10๋ง๋ฒ ์คํํ๋ฉด ์ดํฉ์ด 10์ด ๋ ๊น? No
์ค์ ๋ก ์ฝ๋๋ฅผ ์์ฑํด ์คํํด๋ณด๋ฉด ์ดํฉ์ ๊ฐ์ด ๊ณ์ ๋ค๋ฅด๊ฒ ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ด๋ ์ํธ ๋ฐฐ์ ๋๊ธฐํ๊ฐ ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ๋ฌธ์ ์ด๋ค.
๊ทธ๋ผ, ๋์์ ์ ๊ทผํ๋ฉด ์๋๋ ์์์ ๋ญ๊น?
๊ณต์ ์์: ์ฌ๋ฌ ํ๋ก์ธ์ค ํน์ ์ค๋ ๋๊ฐ ๊ณต์ ํ๋ ์์ (ex. ์ ์ญ ๋ณ์, ํ์ผ, ์ ์ถ๋ ฅ ์ฅ์น, ๋ณด์กฐ๊ธฐ์ต์ฅ์น, ...)
์๊ณ ๊ตฌ์ญ: ๋์์ ์คํํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ์์์ ์ ๊ทผํ๋ ์ฝ๋ ์์ญ
์๊ณ ๊ตฌ์ญ์ ์ง์ ํ๊ณ ์ ํ๋ฉด ์ง์ ํ ํ๋ก์ธ์ค ์ด์ธ์๋ ๋๊ธฐํด์ผ ํ๋ค. ์๊ณ ๊ตฌ์ญ์ ๋์์ ์ ๊ทผํ๋ฉด ์์์ ์ผ๊ด์ฑ์ด ๊นจ์ง ์ ์๋๋ฐ ์ด๋ฅผ '๋ ์ด์ค ์ปจ๋์ (race condition)'์ด๋ผ๊ณ ํ๋ค. ์ด๋ฌํ ๋ ์ด์ค ์ปจ๋์ ์ด ๋ฐ์ํ๋ ์ด์ ๊ฐ ๋ฌด์์ธ๊ฐ ์ข ๋ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์ดํฉ์ ๋ํ๋ ์ฝ๋๋ ์ค์ ๋ก ํ ์ค๋ก ์์ฑ์ด ๋์ง๋ง, ์ด๊ฒ์ ์ปดํ์ผํ๊ณ ์ ๊ธ์ธ์ด๋ก ๋ณํ๋๋ฉด ์ฌ์ค ํ ์ค์ด ์๋๋ค.
r1 = ์ดํฉ;
r1 = r1 + 1;
์ดํฉ = r1;
์ด์ฒ๋ผ ๋ ์ง์คํฐ์ ๊ฐ์ ์ ์ฅํ๊ณ ์ฆ๊ฐ์ํจ ํ์ ์ดํฉ์ ๊ฐฑ์ ํ๋ค. ๊ทธ๋์ CPU๊ฐ ์ดํฉ์ ๋ ์ง์คํฐ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ ์ ๋ฌธ๋งฅ๊ตํ์ด ์ผ์ด๋ ์ด๋ฌํ ๋ ์ด์ค ์ปจ๋์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด๋ค.
์ด์์ฒด์ ๊ฐ ์๊ณ ๊ตฌ์ญ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ธ ๊ฐ์ง ์์น(=์ํธ ๋ฐฐ์ ๋๊ธฐํ๋ฅผ ์ํ ์ธ ๊ฐ์ง ์์น)
1. ์ํธ ๋ฐฐ์ (mutual exclusion) : ํ ํ๋ก์ธ์ค๊ฐ ์๊ณ ๊ตฌ์ญ์ ์ง์ ํ๋ค๋ฉด ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ๋ค์ด์ฌ ์ ์๋ค.
2. ์งํ (progress) : ์๊ณ ๊ตฌ์ญ์ ์๋ฌด๋ ์๋ค๋ฉด, ์ง์ ํ๊ณ ์ ํ๋ ํ๋ก์ธ์ค๋ ๋ค์ด๊ฐ ์ ์์ด์ผ ํ๋ค.
3. ์ ํ ๋๊ธฐ (bounded waiting) : ํ ํ๋ก์ธ์ค๊ฐ ์๊ณ ๊ตฌ์ญ์ ์ง์ ํ๊ณ ์ถ๋ค๋ฉด ์ธ์ ๊ฐ๋ ์๊ณ ๊ตฌ์ญ์ ๋ค์ด๊ฐ ์ ์์ด์ผ ํ๋ค. (๋ฌดํ์ ๋๊ธฐํด์๋ ์๋๋ค.)
'๊ฐ๋ฐ > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
02-1. ์์คํ ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋จ ์คํ (0) | 2024.08.16 |
---|---|
01. ์ด์์ฒด์ ๊ฐ์ (0) | 2024.08.16 |
[์คํฐ๋] 4-2. CPU ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ (1) | 2024.08.15 |
[์คํฐ๋] 4-1. CPU ์ค์ผ์ค๋ง (0) | 2024.08.15 |
[์คํฐ๋] 3-3. ์ค๋ ๋ (1) | 2024.08.15 |