๊ต์ฐฉ ์ํ๋ ์ด๋ ํ ์์์ ๊ฐ๊ณ ์๋ ์ํฉ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ์๋์ฐจ ๊ต์ฐจ๋ก๋ฅผ ์๊ฐํด๋ณด์. A์๋์ฐจ๋ ์ ํธ๋ฅผ ๋ฐ์๊ณ , B ์๋์ฐจ๋ ์ ํธ๋ฅผ ๋ฐ์๋ค. ๊ทธ๋์ ๋ ์๋์ฐจ๊ฐ ์์ง์ด๋ ๊ฒ์ ๋ ผ๋ฆฌ์ ์ค๋ฅ๊ฐ ์์ง๋ง, ๋ ์๋์ฐจ๊ฐ ๊ฐ ์ ์๋ ์ํฉ์ด ๋ฐ์ํ๋ค. ๋ฐ๋ก ์ถ๊ทผ ์๊ฐ ๊ธธ ๋งํ์ด๋ค. ๊ธธ์ด ๋งํ ์๋ฌด๋ฐ ๋์๋ ์ํํ ์ ์๋ค. ์ด๋ฐ ์ํฉ์ ๊ต์ฐฉ์ํ๋ผ ํ๋ค.
ํ๋ก์ธ์ค๋ ์คํ์ ์ํด CPU, ๋ฉ๋ชจ๋ฆฌ, ํ์ผ ๋ฑ ์ฌ๋ฌ ํ๋์จ์ด ์์์ด ํ์ํ๋ค. ์ด๋ฅผ ์ด์์ฒด์ ์์ ํ๋ก์ธ์ค๊ฐ ์๊ตฌํ๋ ์์์ ์ ์ ํ ๋ถ๋ฐฐํด์ค๋ค. ์๋ฅผ ๋ค์ด, ํ ํ๋ก์ธ์ค๊ฐ A ์์์ ๊ฐ์ง๊ณ ์๋ ์ํ์์ B ์์์ ์๊ตฌํ๊ณ ์๋ค. ํ์ง๋ง B ์์์ ๋ค๋ฅธ ํ๋ก์ธ์ค ์ญ์ ์๊ตฌํ๊ณ ์๋ ์์์ธ๋ฐ, ์ด๋ฌํ ์ํฉ์์ ์์์ ๋ถ๋ฐฐํ๋ ์์๊ฐ ์๋ชป๋๋ฉด ๊ต์ฐฉ์ํ์ ๋น ์ง๊ฒ ๋๋ค.
1. ๊ต์ฐฉ์ํ ํ์ ์กฐ๊ฑด(Necessary Conditions)
๊ต์ฐฉ์ํ๊ฐ ์ผ์ด๋๊ธฐ ์ํ ํ์ ์กฐ๊ฑด์ด ๋ค ๊ฐ์ง๊ฐ ์กด์ฌํ๋ค. ์ด๋ ํ์ ์กฐ๊ฑด์ด๋ฏ๋ก, ๋ค ๊ฐ์ง๊ฐ ๋ชจ๋ ํด๋น๋๋ค๊ณ ํด์ ๋ฐ๋์ ๊ต์ฐฉ์ํ๊ฐ ์ผ์ด๋๋ ๊ฒ์ ์๋๋ค. ๋จ์ง ์ผ์ด๋ ๊ฐ๋ฅ์ฑ์ด ๋ฐ์ํ๋ค.
ํ์ง๋ง ๋ค๊ฐ์ง ์กฐ๊ฑด ์ค ํ๋๋ผ๋ ํด๋น๋์ง ์์ผ๋ฉด ๊ต์ฐฉ ์ํ๋ ์ผ์ด๋์ง ์๋๋ค. ์ฆ, 4๊ฐ์ง ์กฐ๊ฑด์ ๋ชจ๋ ํด๋น๋๋ฉด Deadlock์ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋, ๊ทธ๋ ์ง ์๋ค๋ฉด Deadlock์ ์ผ์ด๋์ง ์๋๋ค.
- Mutual exclusion (์ํธ๋ฐฐํ)
- ํ ํ๋ก์ธ์ค๊ฐ ์์์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด, ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์ด ์์์ ์ฌ์ฉํ ์ ์๋ค.
- ์ ๊ฐ๋ฝ์ ํ ์ฒ ํ์๊ฐ ์ฌ์ฉํ๊ณ ์์ผ๋ฉด ์ด ์ ๊ฐ๋ฝ์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์ํธ๋ฐฐํ์ ์ด๋ค.
- ํ ํ๋ก์ธ์ค๊ฐ ์์์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด, ๋ค๋ฅธ ํ๋ก์ธ์ค๋ ์ด ์์์ ์ฌ์ฉํ ์ ์๋ค.
- No Preemption (๋น์ ์ )
- ํ ํ๋ก์ธ์ค๊ฐ ์์์ ์ํํ๋ ์ค์๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ค๊ฐ์ ๋ผ์ด๋ค ์ ์๋ค.
- ํ ์ฒ ํ์๊ฐ ์ ๊ฐ๋ฝ์ ์ง์ ์ํ์์ ๋ค๋ฅธ ์ฒ ํ์๊ฐ ์ด ์ ๊ฐ๋ฝ์ ๋บ์ ์ ์๋ค.
- ํ ํ๋ก์ธ์ค๊ฐ ์์์ ์ํํ๋ ์ค์๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ค๊ฐ์ ๋ผ์ด๋ค ์ ์๋ค.
- Hold and wait (๋ณด์ ๋ฐ ๋๊ธฐ)
- ํ ํ๋ก์ธ์ค๊ฐ ์์์ ๊ฐ์ง๊ณ ์๋ ์ํ์์ ๋๊ธฐํ๋ค.
- ์ฒ ํ์๋ ์ผ์ชฝ ์ ๊ฐ๋ฝ์ ๊ฐ์ง๊ณ ์๋ ์ํ์์ ์ค๋ฅธ์ชฝ ์ ๊ฐ๋ฝ์ ์ง๊ธฐ ์ํด ๋๊ธฐํ๋ค.
- ํ ํ๋ก์ธ์ค๊ฐ ์์์ ๊ฐ์ง๊ณ ์๋ ์ํ์์ ๋๊ธฐํ๋ค.
- Circular wait (ํํ๋๊ธฐ)
- ํ๋ก์ธ์ค๊ฐ ์๊ตฌํ๋ ์์์ ๋ฐฉํฅ์ด ์ํ์ ์ด๋ฃฌ๋ค.
- ๋ชจ๋ ์ฒ ํ์๋ ์ผ์ชฝ ์ ๊ฐ๋ฝ๋ถํฐ ์ง์ ์ ์๋ค.
- ํ๋ก์ธ์ค๊ฐ ์๊ตฌํ๋ ์์์ ๋ฐฉํฅ์ด ์ํ์ ์ด๋ฃฌ๋ค.
๊ต์ฐฉ์ํ๋ ์ ๋ค ๊ฐ์ง ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๋๋ผ๋ ๋งค์ฐ ๋๋ฌผ๊ฒ ์ผ์ด๋๋ ํ์์ด์ง๋ง, ํ ๋ฒ ๊ต์ฐฉ์ํ์ ๋น ์ง๋ฉด ํ๋ก์ธ์ค๊ฐ ๋ฌดํ ๋ฃจํ์ ๋น ์ ธ ์ํํ์ง ๋ชปํ๊ณ ํด๋น ํ๋ก์ธ์ค๊ฐ ๊ฐ์ง๊ณ ์๋ ์์์ ์๋ฌด๋ ์ฌ์ฉํ์ง ๋ชปํ๋ค. ์ด๋ ์ ์ฒด ์ปดํจํฐ ํ๊ฒฝ์ ๋งค์ฐ ์น๋ช ์ ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๊ต์ฐฉ์ํ์ ์ํ ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๊ธฐ๋ ๋งค์ฐ ํ๋ค๋ค.
2. ์์(Resources)
๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ๋ ๊ฐ์ฅ ํฐ ์์ธ์ ๊ฒฐ๊ตญ ์์์ ๋ฌธ์ ์ด๋ค. ๋ฐ๋ผ์ ์ด ์์์ ์ด๋ป๊ฒ ์ด์ฉํ๊ณ ์๋ ์ง ํ์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค.
ํ๋์จ์ด ์์์ ์ฌ๋ฌ ๊ฐ๊ฐ ์กด์ฌํ๊ณ ๋์ผํ **ํ์(type)**์ ์์์ด ์กด์ฌํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ์ CPU๊ฐ 2๊ฐ์๋ ํ๊ฒฝ์ด ์๋ค. ์ด๋ฌํ ์์ ํ๋ํ๋๋ฅผ instance๋ผ๊ณ ํ๋ค.
์์์ ํ๋ก์ธ์ค๊ฐ ์ง์ ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ณ , ์ด์์ฒด์ ์ **์์ฒญ(request)**ํ๋ฉด ์ด์์ฒด์ ๊ฐ ์ ๊ณตํด์ค๋ค. ๊ทธ ํ ํ๋ก์ธ์ค๋ ์ด ์์์ **์ฌ์ฉ(use)**ํ๊ณ ๋ชจ๋ ์ฌ์ฉ์ด ๋๋๋ฉด ์ด๋ฅผ **๋ฐ๋ฉ(release)**ํ๋ค.
์์ฒญ(request) -> ์ฌ์ฉ(use) -> ๋ฐ๋ฉ(release)
2.1 ์์ ํ ๋น๋(Resource Allocation Graph)
์์ ํ ๋น๋๋ ์ด๋ค ์์์ด ์ด๋ค ํ๋ก์ธ์ค์ ํ ๋น๋์๋์ง ๋๋ ์ด๋ ํ๋ก์ธ์ค๊ฐ ์ด๋ ์์์ ํ ๋น ๋ฐ์ผ๋ ค๊ณ ๊ธฐ๋ค๋ฆฌ๋์ง๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ธ ๊ฒ์ด๋ค.
|์ฉ์ด|๋ชจ์| |::----|::----| |Resource(์์)|์ฌ๊ฐํ| |Instance(์ธ์คํด์ค)|์ | |Process(ํ๋ก์ธ์ค)|์| |ํ ๋น|ํ์ดํ|
R1์ P1์ ํ ๋น๋์ด ์๋ ์ํ์ด๊ณ , P2๋ R1์ ์์ฒญํ๊ณ ์๋ ์ํ์ด๋ค.
์์ ํ ๋น๋๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๊ต์ฐฉ์ํ์ ํ์์กฐ๊ฑด์ ํ ๋์ ๋ณผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์์ ํ ๋น๋๋ฅผ ๋ถ์ํ ๋ mutual exclusion(ํ๋ฒ์ ํ๋)๊ณผ no-preemption(๊ฐ์ ๋ก ๋ชป ๋บ๋๋ค.)์ ๊ธฐ๋ณธ์ผ๋ก ์ ์ฉ๋๋ค.
Hold and wait๋ ํ์ดํ๋ฅผ ํตํด ํ ํ๋ก์ธ์ค๊ฐ ์ธ์คํด์ค๋ฅผ ํ ๋น๋ฐ์๊ณ ๋ค๋ฅธ ์์์ ๊ฐ๋ฆฌํค๊ณ ์๋ค๋ฉด, ์ด ์ํฉ์ Hold and wait์ธ ์ํ์ด๋ค.
Circular wait ์ญ์ ํ์ดํ ๋ฐฉํฅ์ด ์ํ์ ์ด๋ฃจ๊ณ ์๋ค๋ฉด ์ด๋ ํํ๋๊ธฐ์ธ ์ํ์ด๋ค.
์ด๋ฐ ๊ทธ๋ฆผ์ ๋ณด๋ฉด Circular wait ์กฐ๊ฑด์ ๊ฐ์ง๊ณ ์์ด ๊ต์ฐฉ ์ํ์ ๊ฐ๋ฅ์ฑ์ ๊ฐ์ง๊ณ ์๋ค.
์ ๊ทธ๋ฆผ์ ์์ฌํ๋ ์ฒ ํ์ ๋ฌธ์ ๋ฅผ ์์ ํ ๋น๋๋ก ํํํ ๊ฒ์ด๋ค. ๊ทธ๋ฆผ์ ๋ณด๋ฉด ํ ๋์ Circular wait ์กฐ๊ฑด์ ๋ง์กฑํ ๊ฒ์ ์ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์ฒ ํ์(ํ๋ก์ธ์ค)๋ ํ ์ ๊ฐ๋ฝ(์์)์ ํ ๋น(ํ๋์ ํ์ดํ)๋ฐ๊ณ , ๋ค๋ฅธ ์ ๊ฐ๋ฝ์ ์์ฒญ(๊ฒ์์ ํ์ดํ)ํ๊ณ ์์ผ๋ฏ๋ก Hold and wait ์กฐ๊ฑด ์ญ์ ๋ง์กฑํ๋ค.
4. ๊ต์ฐฉ์ํ ์ฒ๋ฆฌ
4.1 ๊ต์ฐฉ์ํ ๋ฐฉ์ง (Deadlock Prevention)
๊ต์ฐฉ์ํ ๋ฐฉ์ง๋ ๊ต์ฐฉ์ํ ํ์์กฐ๊ฑด ๋ค ๊ฐ์ง ์ค ์ต์ ํ ๊ฐ์ง๋ฅผ ๋ง์กฑ์ํค์ง ์๋๋ก ๋ง๋๋ ๊ฒ์ด๋ค.
- ์ํธ๋ฐฐํ(Mutual exclusion)
- ์ํธ๋ฐฐํ๋ฅผ ์์ ๊ธฐ ์ํด์๋ ์์์ ๊ณต์ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ผ ํ๋ค. ํ์ง๋ง ํ์ค์ ์ผ๋ก ์ด๋ฌํ ๋ฐฉ๋ฒ์ด ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
- ๋น์ ์ (No preemption)
- ๋น์ ์ ์ ์์ ๋ฌ๋ฉด ๋ฐ๋๋ก ์ ์ ์ด ๊ฐ๋ฅํ๋๋ก ๋ง๋ค์ด์ผ ํ๋ค. ์ด ์ญ์ ๋๋ถ๋ถ์ ์์์๊ฒ๋ ๋ถ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ด๋ค. CPU๋ ๊ฐ์ ๋ก ์ค์์นญํ๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊ฒฝ์ฐ๊ฐ ์์ง๋ง, ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์๋ ๋ถ๊ฐ๋ฅํ๋ค. ๊ฐ๋ น ํ๋ฆฐํฐ๋ฅผ ์ํํ๋ ์ค๊ฐ์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ด๋ฅผ ์ ์ ํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค๊ณ ๋ณผ ์ ์๋ค.
- ๋ณด์ ๋ฐ ๋๊ธฐ(Hold & Wait)
- ์ด ์กฐ๊ฑด์ ์์ ๋ ค๋ฉด ์์์ ๊ฐ์ง๊ณ ์๋ ์ํ์์ ๋ค๋ฅธ ์์์ ๊ธฐ๋ค๋ฆฌ์ง ์๋๋ก ๋ง๋ ๋ค. ๋ง์ฝ ์ฌ๋ฌ ๊ฐ์ ์์์ด ํ์ํ๋ค๋ฉด ํ์ํ ๋ชจ๋ ์์์ ์ป์ ์ ์๋ ๊ฒฝ์ฐ์๋ง ํด๋น ์์์ ์์ฒญํ๋ค. ๋๋ ํ์ํ ์์ ์ค ์ผ๋ถ๋ง ๊ฐ์ง๋ ๊ฒฝ์ฐ ํ ๋น๋ฐ์ ์์์ ๋ชจ๋ ์ด์์ฒด์ ์ ๋ฐ๋ฉํ๋ค. ํ์ง๋ง ์ด์ ๊ฐ์ ๋ฐฉ๋ฒ์ ์์์ ํ์ฉ๋ฅ ์ ์ ํ์ํค๊ณ , starvation ํ์์ด ๋ฐ์ํ๋ ๋จ์ ์ด ์๋ค.
- ์ผ์ชฝ ์ ๊ฐ๋ฝ์ ๊ฐ์ง ์ํ์์ ์ค๋ฅธ์ชฝ ์ ๊ฐ๋ฝ์ ์์ฒญํ๋๋ฐ, ์ด๋ฏธ ํ ๋น๋์ด ์๋ค๋ฉด, ์ผ์ชฝ ์ ๊ฐ๋ฝ๋ ํ ๋นํด์ ํ๋ค.
- ํํ๋๊ธฐ(Circular wait)
- ์ด ์กฐ๊ฑด์ ์์ ๋ ๊ฒ์ ์ ์ธ ๊ฐ์ง ์กฐ๊ฑด๋ณด๋ค๋ ํ ์ ์๋ ํ๋ฅ ์ด ๋๋ค. ๋ํ์ ์ธ ์๋ ๋ชจ๋ ์์์ ๋ฒํธ๋ฅผ ๋ถ์ฌํ์ฌ ์ด ๋ฒํธ์ ๋ํ ์ค๋ฆ์ฐจ์์ผ๋ก ์์์ ์์ฒญํ๋ ๊ฒ์ด๋ค. ์ด ์ญ์ ์์์ ํ์ฉ๋ฅ ์ ์ ํ์ํค๋ ๋จ์ ์ด ์๋ค.
๋ค ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ดํด๋ณธ ๊ฒฐ๊ณผ ๊ฐ์ฅ ํ์ค์ ์ธ ๋ฐฉ๋ฒ์ hold & wait๋ circular wait ์กฐ๊ฑด์ ์์ ๋ ๊ฒ์ด๋ค. ํ์ง๋ง ๋ ๋ค ์์์ ๋นํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ฒ ๋๋ ๋จ์ ์ ๊ฐ์ง๊ณ ์๋ค. ๊ทธ๋์ ์ด์ ๊ฐ์ด ๊ต์ฐฉ์ํ ๋ฐฉ์ง ๋ฐฉ๋ฒ์ ๊ตฐ์ฌ, ์ฐ์ฃผ, ์๋ฃ์ ๊ฐ์ ํฌ๋ฆฌํฐ์ปฌํ ๊ณณ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
์ฒ ํ์ ๋ฌธ์ ์ ์ ์ฉ
์ ๊ทธ๋ฆผ์ ์์ฌํ๋ ์ฒ ํ์ ๋ฌธ์ ๋ฅผ ์์ ํ ๋น๋๋ก ํํํ ๊ฒ์ด๋ค. ๊ทธ๋ฆผ์ ๋ณด๋ฉด ํ ๋์ Circular wait ์กฐ๊ฑด์ ๋ง์กฑํ ๊ฒ์ ์ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์ฒ ํ์(ํ๋ก์ธ์ค)๋ ํ ์ ๊ฐ๋ฝ(์์)์ ํ ๋น(ํ๋์ ํ์ดํ)๋ฐ๊ณ , ๋ค๋ฅธ ์ ๊ฐ๋ฝ์ ์์ฒญ(๊ฒ์์ ํ์ดํ)ํ๊ณ ์์ผ๋ฏ๋ก Hold and wait ์กฐ๊ฑด ์ญ์ ๋ง์กฑํ๋ค.
Circular wait ์กฐ๊ฑด์ ์์ ๊ธฐ ์ํด ์ง์ ๋ฒํธ ์ฒ ํ์๋ ์ผ์ชฝ ์ ๊ฐ๋ฝ, ์ค๋ฅธ์ชฝ ์ ๊ฐ๋ฝ ์์๋ก, ํ์ ๋ฒํธ ์ฒ ํ์๋ ๋ฐ๋ ์์์ธ ์ค๋ฅธ์ชฝ ์ ๊ฐ๋ฝ, ์ผ์ชฝ ์ ๊ฐ๋ฝ ์์๋ก ์ง๋๋ค๊ณ ํ์.
์ ๊ทธ๋ฆผ์ circular wait ์กฐ๊ฑด์ ์์ค ์์ฌํ๋ ์ฒ ํ์ ๋ฌธ์ ์ ์์ ํ ๋น๋์ด๋ค. ํ์ดํ๊ฐ ์ํ์ ๋ง๋ค์ง ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ด์ ๊ธ์์ ์๋ ์ฒ ํ์๊ฐ ์ ๊ฐ๋ฝ์ ์ง๋ ์ฝ๋๋ฅผ ์์ ํ๋ค. ์์ ๊ฐ์ด ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ค์ ๋ก ์ํํ๋ฉด ๋ฌดํ ๋ฐ๋ณต๋ฌธ์ด ๋๋์ง์๊ณ ์ ์์ ์ผ๋ก ๊ณ์๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
4.2 ๊ต์ฐฉ์ํ ํํผ (Deadlock Avoidance)
๊ต์ฐฉ์ํ ํํผ์ ๋ฐฉ์ง์ ์ฐจ์ด์ ์ ๊ต์ฐฉ์ํ๋ฅผ ๋ค๋ฅด๊ฒ ์ ๊ทผํ๋ ๊ฒ์ด๋ค. ๊ต์ฐฉ์ํ ํํผ์์๋ ๊ต์ฐฉ์ํ๋ฅผ ์์ ์์ฒญ์ ๋ํ ์๋ชป๋ ์น์ธ์ผ๋ก ํ๋จํ๋ค. OS๋จ์์ ์์ฒญ์ ๋ํด ์ ๊ด๋ฆฌ๋ฅผ ํด์ฃผ์๋ค๋ฉด ํด๊ฒฐํ ์ ์๋ค๊ณ ์๊ฐํ๋ ๊ฒ์ด๋ค.
์ด๋ฌํ ์ ๊ทผ์ ์ํ๊ณผ ๋น์ทํ๋ค. ์ํ์ด ํฌ์๋ฅผ ํ ๋, ์์ ํ ๊ณณ๊ณผ ์์ ํ์ง ์์ ๊ณณ์ ์ ๋ถ๋ฆฌํ์ฌ ํฌ์ํด์ผ, ์๊ธฐ ์ํฉ์์ ๋ถ๋๊ฐ ๋์ง ์์ ๊ฒ์ด๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, OS์์ deadlock์ด ๋์ง ์๋ ๋ฐฉ๋ฒ์ผ๋ก ํ ๋นํด์ฃผ๋ ๋ฐฉ๋ฒ์ด ๊ต์ฐฉ ์ํ ํํผ์ด๋ค.
๋ฐ๋ผ์, ๊ต์ฐฉ์ํ ํํผ์์๋ ์์ ํ ํ ๋น(Safe allocation)๊ณผ ๋ถ์์ ํ ํ ๋น(Unsafe allocation) ๋ ๊ฐ์ง๋ก ๋๋๋ค.
์์ ํ ํ ๋น
ํ์ฌ ์ด์์ฒด์ ์๋ magnetic tape ์์์ด ์ด 12๊ฐ๊ฐ ์๊ณ , ์ด๋ฅผ ์์ฒญํ๋ 3๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์๋ค.
process | Max needs | Current needs |
---|---|---|
P0 | 10 | 5 |
P1 | 4 | 2 |
P2 | 9 | 2 |
- Current needs
- ํ ํ๋ก์ธ์ค๊ฐ ํ ๋ฒ ์์ฒญ์ ํ ๋ ์๊ตฌํ๋ ๊ฐ์
- Max needs
- ํ๋ก์ธ์ค๋ฅผ ์ ์์ ์ผ๋ก ๋๋ด๊ธฐ ์ํด ํ์ํ ์ด ๊ฐ์
์ด์์ฒด์ ์ ์ฅ์์ 3๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋ชจ๋ ์ํ๋ ๋๊น์ง ์์์ ๋ถ๋ฐฐํด๋ณด์.
- order : ์์
- process : ํ๋ก์ธ์ค ์ด๋ฆ
- needs : ํ๋ก์ธ์ค๊ฐ ํ์๋ก ํ๋ tape์ ๊ฐ์
- possible : ํ ๋น์ด ๊ฐ๋ฅํ์ง ํ๋จํ๋ ๋ณ์
- state : ํด๋น ํ๋ก์ธ์ค์ ์งํ ์ํ
- dealloc : ํ ๋น ํด์ ๋์๋์ง ํ์ธํ๋ ๋ณ์
- tapeSize : ํ์ฌ๊น์ง ํ ๋น๋์ด ์ฌ์ฉํ ์ ์๋ tape์ ๊ฐ์
- wait : ํ ๋น ๋ฐ์ง ๋ชปํด ๋๊ธฐํ๋ ์ง ์ ๋ฌด
order | process | needs | possible | state | dealloc | tapeSize | wait |
---|---|---|---|---|---|---|---|
1 | P0 | 5 | O | 5/10 | X | 12โ7 | X |
2 | P1 | 2 | O | 2/4 | X | 7โ5 | X |
3 | P2 | 2 | O | 2/9 | X | 5โ3 | X |
4 | P0 | 5 | X | 5/10 | X | 3 | O |
5 | P1 | 2 | O | 4/4 | O | 3โ1โ5 | X |
6 | P0 | 5 | O | 10/10 | O | 5โ0โ10 | X |
7 | P2 | 2 | O | 4/9 | O | 10โ8โ12 | X |
8 | P2 | 2 | O | 6/9 | O | 12โ10โ12 | X |
9 | P2 | 2 | O | 8/9 | O | 12โ10โ12 | X |
10 | P2 | 2 | O | 9/9 | O | 12โ11โ12 | X |
- P0์๊ฒ 5๊ฐ๋ฅผ ํ ๋นํ๋ค.(5/10) โ ํ์ฌ magnetic tape ๊ฐ์: 7
- P1์๊ฒ 2๊ฐ๋ฅผ ํ ๋นํ๋ค.(2/4) โ ํ์ฌ magnetic tape ๊ฐ์: 5
- P2์๊ฒ 2๊ฐ๋ฅผ ํ ๋นํ๋ค.(2/9) โ ํ์ฌ magnetic tape ๊ฐ์: 3
- ๋ค์ P0๊ฐ 5๊ฐ๋ฅผ ์๊ตฌํ์ง๋ง ํ์ฌ magnetic tape ๊ฐ์๋ 3๊ฐ์ด๋ฏ๋ก ํ ๋นํด์ค ์ ์๋ค.
- P1์๊ฒ 2๊ฐ๋ฅผ ํ ๋นํ๋ค.(4/4) โ ํ์ฌ magnetic tape ๊ฐ์: 1
- P1์ ํ์ํ 4๊ฐ์ magnetic tape์ ๋ฐ์์ผ๋ฏ๋ก, ์ ์์ ์ผ๋ก ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ๊ณ ์ฌ์ฉํ ์์์ ๋ฐ๋ฉํ๋ค. โ ํ์ฌ magnetic tape ๊ฐ์: 5
- ๋๊ธฐํ๊ณ ์๋ P0์๊ฒ 5๊ฐ๋ฅผ ํ ๋นํ๋ค.(10/10) โ ํ์ฌ magnetic tape ๊ฐ์: 0
- P0 ์ญ์ ํ์ํ ์์์ ๋ชจ๋ ํ ๋น๋ฐ์์ผ๋ฏ๋ก, ์ข ๋ฃ ํ ์์์ ๋ฐ๋ฉํ๋ค. โ ํ์ฌ magnetic tape ๊ฐ์: 10
- P2๋ ํ์ฌ ํ์ํ magnetic tape ๊ฐ์๊ฐ 7๊ฐ์ด๊ณ , ํ์ฌ ๋จ์์๋ magnetic tape ๊ฐ์ 10๊ฐ์ด๋ฏ๋ก ์ ์์ ์ผ๋ก ์ํ๊ฐ๋ฅํ๋ค. (7~10)
์ด ์์ ์์๋ 3๊ฐ์ ํ๋ก์ธ์ค๊ฐ ๋ชจ๋ ์ ์์ ์ผ๋ก ์์์ ํ ๋น๋ฐ๊ณ ์ข ๋ฃํ ์ ์์๋ค. ์ด๋ฅผ ์์ ํ ํ ๋น์ด๋ผ ํ๋ค. ๋ค์ ์์ ๋ฅผ ๋ณด์.
๋ถ์์ ํ ํ ๋น
process | Max needs | Current needs |
---|---|---|
P0 | 10 | 5 |
P1 | 4 | 2 |
P2 | 9 | 3 |
์ด ์์ ์ญ์ ์ด์์ฒด์ ๊ฐ ๋ณด์ ํ๊ณ ์๋ ์ด magnetic tape ๊ฐ์๋ 12๊ฐ์ด๊ณ , 3๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์กด์ฌํ๋ค. ์์์ ๋ถ๋ฐฐํด๋ณด์.
order | process | needs | possible | state | dealloc | tapeSize | wait |
---|---|---|---|---|---|---|---|
1 | P0 | 5 | O | 5/10 | X | 12โ7 | X |
2 | P1 | 2 | O | 2/4 | X | 7โ5 | X |
3 | P2 | 3 | O | 3/9 | X | 5โ2 | X |
4 | P0 | 5 | X | 5/10 | X | 2 | O |
5 | P1 | 2 | O | 4/4 | O | 2โ0โ4 | X |
6 | P0 | 5 | X | 5/10 | X | 4 | O |
7 | P2 | 3 | O | 6/9 | X | 4โ1 | X |
8 | P0 | 5 | X | 5/10 | X | 1 | O |
9 | P2 | 3 | X | 6/9 | X | 1 | O |
10 | P0 | 5 | X | 5/10 | X | 1 | O |
11 | P2 | 3 | X | 6/9 | X | 1 | O |
- P0์๊ฒ 5๊ฐ๋ฅผ ํ ๋นํ๋ค.(5/10) โ ํ์ฌ magnetic tape ๊ฐ์: 7
- P1์๊ฒ 2๊ฐ๋ฅผ ํ ๋นํ๋ค.(2/4) โ ํ์ฌ magnetic tape ๊ฐ์: 5
- P2์๊ฒ 3๊ฐ๋ฅผ ํ ๋นํ๋ค.(3/9) โ ํ์ฌ magnetic tape ๊ฐ์: 2
- ๋ค์ P0๊ฐ 5๊ฐ๋ฅผ ์๊ตฌํ์ง๋ง ํ์ฌ magnetic tape ๊ฐ์๋ 2๊ฐ์ด๋ฏ๋ก ํ ๋นํด์ค ์ ์๋ค.
- P1์๊ฒ 2๊ฐ๋ฅผ ํ ๋นํ๋ค.(4/4) โ ํ์ฌ magnetic tape ๊ฐ์: 0
- P1์ ํ์ํ ์์์ ๋ชจ๋ ํ ๋น๋ฐ์์ผ๋ฏ๋ก, ์ ์์ ์ผ๋ก ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ๊ณ ์ฌ์ฉํ ์์์ ๋ฐ๋ฉํ๋ค. โ ํ์ฌ magnetic tape ๊ฐ์: 4
- ๋๊ธฐํ๊ณ ์๋ P0๋ ์์ง ํ ๋น๋ฐ์ผ๋ฅด ์ ์๋ค.
- P2์๊ฒ 3๊ฐ๋ฅผ ํ ๋นํ๋ค.(6/9) โ ํ์ฌ magnetic tape ๊ฐ์: 1
- ํ์ฌ ๋จ์์๋ magnetic tape ๊ฐ์๋ 1๊ฐ์ด๊ณ , P0๊ฐ ์๊ตฌํ๋ ๊ฐ์๋ 5๊ฐ, P2๋ 3๊ฐ์ด๋ฏ๋ก ๋ ํ๋ก์ธ์ค ๋ชจ๋ ํ ๋น๋ฐ์ ์ ์๋ค. (8~)
์ด ์์ ์์ ๋จ์ magnetic tape ๊ฐ์๊ฐ ์๊ตฌํ๋ ๊ฐ์๋ณด๋ค ์ ์ผ๋ฏ๋ก ์์์ ํ ๋นํด์ค ์ ์๋ค. ๊ทธ๋ฌ๋ฏ๋ก P0, P2 ํ๋ก์ธ์ค๋ ์์์ ํ์ผ์์ด ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋ค. ์ด๋ฅผ ๋ถ์์ ํ ํ ๋น์ด๋ผ ํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ ๊ต์ฐฉ์ํ์ ๋น ์ง๊ฒ ๋๋ค.
๊ต์ฐฉ์ํ ํํผ๋ ๋ง์น ๋์ถ์ ๋ฌธ ์ํ๊ณผ ์ ์ฌํ๊ฒ ๋์ํ๋ฏ๋ก, ํด๊ฒฐ ๋ฐฉ๋ฒ์ Bankerโs Algorithm์ด๋ผ ํ๋ค. ๋์ด ์์ด์ผ ๊ฐ์ง
4.3 ๊ต์ฐฉ์ํ ๊ฒ์ถ ๋ฐ ๋ณต๊ตฌ (Deadlock Detection & Recovery)
๊ต์ฐฉ์ํ ๊ฒ์ถ ๋ฐ ๋ณต๊ตฌ๋ ๊ต์ฐฉ์ํ ์์ฒด๊ฐ ๋งค์ฐ ๋๋ฌธ ํ์์ด๋ฏ๋ก ์์ ๋กญ๊ฒ ์์์ ๋ถ๋ฐฐํ๋ค๊ฐ ๊ต์ฐฉ์ํ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ฅผ ์ ์์ ์ธ ์ํ๋ก ๋ณต๊ตฌํ๋ ๊ฒ์ด๋ค.
1๋ฒ๊ณผ 2๋ฒ ๋ฐฉ๋ฒ์ ์ฌ์ ์ ๊ต์ฐฉ์ํ๋ฅผ ์ผ์ด๋์ง ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด์ง๋ง, ๊ต์ฐฉ์ํ ๊ฒ์ถ ๋ฐ ๋ณต๊ตฌ ๋ฐฉ๋ฒ์ ๊ต์ฐฉ์ํ๊ฐ ์ผ์ด๋๋ ๊ฒ์ ํ์ฉํ๋ค. ๊ทธ ๋์ , ๊ต์ฐฉ์ํ๊ฐ ์ผ์ด๋ฌ์ ๋ ์ด๋ฅผ ์ธ์งํ๊ณ ๋ณต๊ตฌ๋ฅผ ํด์ผ ํ๋ค.
๊ต์ฐฉ์ํ๊ฐ ์ผ์ด๋๋ ๊ฒ์ ๊ฐ์งํ๊ธฐ ์ํด ์ด์์ฒด์ ๋ด๋ถ์์ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ต์ฐฉ์ํ๊ฐ ๋ฐ์ํ์๋์ง ๊ฒ์ฌํด์ผํ๋ค. ๊ทธ ์ฃผ๊ธฐ์ ๊ธธ์ด๊ฐ ์งง์ผ๋ฉด ๊ทธ ๋งํผ ์ค๋ฒํค๋๊ฐ ํฌ๊ณ , ์ฃผ๊ธฐ๊ฐ ๊ธธ๋ฉด ์ค๋ฒํค๋๋ ์ค์ผ ์ ์์ง๋ง ๋ณต๊ตฌ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์์ง๋ค.
๋ณต๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๊ต์ฐฉ์ํ๊ฐ ๋ฐ์ํ๋์ง ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฒ์ฌํ๋ฏ์ด ๋ฉ๋ชจ๋ฆฌ์ ์ํ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํด๋๊ณ ๋ง์ฝ ๊ต์ฐฉ์ํ๊ฐ ๋ฐ์ํ๋ฉด ๊ทธ ์ด์ ์ํ๋ก ๋๋๋ฆฌ๋ ๋ฐฉ๋ฒ์ด ์๋ค. ๊ทธ ์ธ์๋ ์ผ๋ถ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ ๋ก ์ข ๋ฃํ๊ฑฐ๋ ์์์ ๊ฐ์ ๋ก ์ ์ ํ์ฌ ํ๋ก์ธ์ค์๊ฒ ํ ๋นํด์ฃผ๋ ๋ฐฉ๋ฒ ๋ฑ์ด ์๋ค.
์ ์์ ์ธ ์ํ๋ก ๋ณต๊ตฌํ๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ๋ณต๊ตฌ๋ฅผ ์ ๋๋ก ํ์ง ๋ชปํ ์๋ ์๊ณ , ๊ฒ์ถ์ ์ํด ์ถ๊ฐ์ ์ธ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ๋ค๋ ๋จ์ ์ด ์๋ค.
4.3 ๊ต์ฐฉ์ํ ๋ฌด์
๊ต์ฐฉ์ํ์ ํ์์กฐ๊ฑด ๋ค ๊ฐ์ง๋ฅผ ๋ชจ๋ ๋ง์กฑํ๋๋ผ๋ ๊ต์ฐฉ์ํ๊ฐ ๋ฐ๋์ ์ผ์ด๋๋ ๊ฒ์ด ์๋๋ผ๊ณ ํ๋ฏ์ด, ๊ต์ฐฉ์ํ๋ ๋งค์ฐ ๋๋ฌธ ์ํฉ์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ด๋ฅผ ์ํด ์ค๋ฒํค๋๋ฅผ ๊ฐ์ํ๋ ๊ฒ์ด ๋นํจ์จ์ ์ธ ํ๊ฒฝ๋ ์กด์ฌํ๋ค. ๊ทธ๋ฌํ ํ๊ฒฝ์ ๊ต์ฐฉ์ํ์ ๋ํ ์๋ฌด๋ฐ ์กฐ์น๋ฅผ ํ์ง ์๋ ๋ฐฉ๋ฒ๋ ์๋ค.
Reference
- KOCW ์ํฌ์ฌ ๊ต์๋ - ์ด์์ฒด์
- ์ํฌ์ฌ ๊ต์๋ ๋ธ๋ก๊ทธ(์ํ ๊ธฐ์ถ ๋ฌธ์ )
- codemcd ๋์ ์ ๋ฆฌ๊ธ
- ์ธ๋งํฌ ์ฌ์ง
- Operating System Concepts, 9th Edition - Abraham Silberschatz