[OS] ๊ต์ฐฉ ์ํ(Deadlocks)
์๋ก
ํ ์ค๋ ๋๊ฐ ์์์ ์์ฒญํ์ ๋, ๊ทธ ์๊ฐ์ ๊ทธ ์์์ ์ด์ฉํ ์ ์๋ ์ฌํฉ์ด ๋ฐ์ํ ์ ์๊ณ , ๊ทธ๋๋ ์ค๋ ๋๊ฐ ๋๊ธฐ ์ํ๋ก ๋ค์ด๊ฐ๋๋ค. ์ด์ฒ๋ผ ๋๊ธฐ ์ค์ธ ์ค๋ ๋๋ค์ด(๊ทธ๋ค์ด ์์ฒญํ ์์๋ค์ด ๋ค๋ฅธ ์ค๋ ๋๋ค์ ์ํด์ ์ ์ ๋์ด ์๊ณ ๊ทธ๋ค๋ ๋ค ๋๊ธฐ ์ํ์ ์๊ธฐ ๋๋ฌธ์) ๊ฒฐ์ฝ ๋ค์๋ ๊ทธ ์ํ๋ฅผ ๋ณ๊ฒฝ์ํฌ ์ ์์ผ๋ฉด ์ด๋ฐ ์ํฉ์ ๊ต์ฐฉ ์ํ๋ผ ๋ถ๋ฆ ๋๋ค.
[OS] ์์ฌํ๋ ์ฒ ํ์๋ค ๋ฌธ์ (The Dining-Philosophers Problem)
์์ฌํ๋ ์ฒ ํ์๋ค ๋ฌธ์ (_The Dining-Philosophers Problem) ์๊ฐํ๊ณ ๋จน์ผ๋ฉด์ ๊ทธ๋ค์ ์์ ๋ฅผ ๋ณด๋ด๋ 5๋ช ์ ์ฒ ํ์๋ฅผ ๊ณ ๋ คํด ๋ด ์๋ค. ์ฒ ํ์๋ค์ ์ํ ํ ์ด๋ธ์ ๊ณต์ ํ๋ฉฐ, ์ด ํ ์ด๋ธ์ ๊ฐ๊ฐ ํ ์ฒ ํ์์
dkswnkk.tistory.com
์ ๊ฒ์๊ธ์ ์์ฌํ๋ ์ฒ ํ์๋ค์ด ์ ๋ถ ์ผ์ชฝ ์ ๊ฐ๋ฝ์ ์ง์์ ๋์ ๊ฒฝ์ฐ์ "๋ ๊ธฐ์ฐจ๊ฐ ๊ต์ฐจ๋ก์์ ์๋ก ์ ๊ทผํ ๋๋, ๋ ๋ค ์์ ํ ์ ์งํด์ผ ํ๋ฉฐ ์๋๋ฐฉ์ด ์์ด์ง์ง ์๋ ํ ๋๊ตฌ๋ ๋ค์ ์ถ๋ฐํ ์ ์๋ค."๋ผ๋ ์์ ๊ฐ ๊ต์ฐฉ์ํ์ ์ข์ ์์์ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๊ต์ฐฉ ์ํ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์๋ ํฌ๊ฒ ์ธ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
๊ต์ฐฉ์ํ๋ฅผ ํด๊ฒฐํ๋ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ | ||
๊ต์ฐฉ ์ํ ์๋ฐฉ(Prevention) ๋๋ ํํผ(Avoidance) | ๊ต์ฐฉ ์ํ๊ฐ ๋์ง ์๋๋ก ํฉ๋๋ค. | |
๊ต์ฐฉ ์ํ ํ์ง(Detection) ๋ฐ ๋ณต๊ตฌ(Recovery) | ๊ต์ฐฉ ์ํ๊ฐ ํ์ง๋๋ฉด ์์คํ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ์กฐ์น๋ฅผ ์ทจํฉ๋๋ค. | |
๊ต์ฐฉ์ํ ๋ฌด์(Ignore) | ๊ต์ฐฉ ์ํ๊ฐ ์ ๋ง ๋๋ฌผ๊ฒ ๋ฐ์ํ๋ ๊ฒฝ์ฐ(1๋
์ ํ๋ฒ) ๊ต์ฐฉ ์ํ ์๋ฐฉ ๋๋ ํ์ง์ ๊ด๋ จ๋ ์ง์๋ ์ค๋ฒํค๋ ๋ฐ ์ฑ๋ฅ ์ ํ๋ฅผ ๋ฐ์ ์ํค๋ ๊ฒ๋ณด๋ค ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ๋๋ก ํ๊ณ ํ์์ ๋ฐ๋ผ ์ฌ๋ถํ
ํ๋ ๊ฒ์ด ๋ ๋์ ์ ์์ต๋๋ค. (Unix ๋ฐ window๋ฅผ ํฌํจํ ๋๋ถ๋ถ์ ์ด์์ฒด์ ๊ฐ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ) |
์ด๋ฒ ๊ฒ์๊ธ์์๋ ์๋์ ๊ฐ์ด ๊ต์ฐฉ์ํ ์๋ฐฉ๊ณผ ํํผ๋ง ๋ค๋ค ๋ณผ ๊ฒ์ด๋ฉฐ ๋ชฉ์ฐจ๋ ์๋์ ๊ฐ์ต๋๋ค.
- ๊ต์ฐฉ ์ํ๋ฅผ ํน์ง์ง๋ 4๊ฐ์ง ํ์ ์กฐ๊ฑด์ ์ ์ํ๋ค.
- ์์ ํ ๋น ๊ทธ๋ํ์์ ๊ต์ฐฉ ์ํ ์ํฉ์ ์๋ณํ๋ค.
- ๊ต์ฐฉ ์ํ ์๋ฐฉ์ ์ํ 4๊ฐ์ง ๋ฐฉ๋ฒ์ ํ๊ฐํ๋ค.
- ๊ต์ฐฉ ์ํ ํํผ๋ฅผ ์ํด ์ํ์ ์๊ณ ๋ฆฌ์ฆ(Banker's Algorithm)์ ์ ์ฉํ๋ค.
๊ต์ฐฉ ์ํ ํน์ฑ(_Deadlock Characterization)
(1) ํ์์กฐ๊ฑด๋ค(_Necessary Conditions)
๊ต์ฐฉ ์ํ๋ ํ ์์คํ ์ ๋ค์ ๋ค ๊ฐ์ง ์กฐ๊ฑด์ด ๋์์ ์ฑ๋ฆฝ๋ ๋ ๋ฐ์ํ ์ ์์ต๋๋ค. (๋ฐ์ํ ์๋ ์๋ค๋ ๊ฒ์ด์ง ๊ผญ ๋ฐ์ํ๋ ๊ฒ์ ์๋)
๊ต์ฐฉ์ํ ํ์์กฐ๊ฑด | |||
1. ์ํธ๋ฐฐ์ (mutual exclusion) | ๊ณต์ ์์์ ๋ํด์๋ ํ๋ฒ์ ํ ์ค๋ ๋๋ง ๊ทธ ์์์ ์ฌ์ฉํ ์ ์๋ค. ๋ค๋ฅธ ์ค๋ ๋๊ฐ ์์์ ์์ฒญํ๋ฉด, ์์ฒญ ์ค๋ ๋๋ ์์์ด ๋ฐฉ์ถ๋ ๋ ๊น์ง ๋ฐ๋์ ๊ธฐ๋ค๋ ค์ผ ํ๋ค. | ||
2. ์ ์ ํ ์ํ๋ก ๋๊ธฐ(hold-and-wait) | ์ค๋ ๋๋ ์ต์ํ ํ๋์ ์์์ ์ ์ ํ ์ฑ, ํ์ฌ ๋ค๋ฅธ ์ค๋ ๋์ ์ํด ์ ์ ๋ ์์์ ์ถ๊ฐ๋ก ์ป๊ธฐ ์ํด ๋ฐ๋์ ๋๊ธฐํด์ผ ํ๋ค. | ||
3. ๋น์ ์ (no preemption) | ์์๋ค์ ์ ์ ํ ์ ์์ด์ผ ํ๋ค. ์ฆ, ์์์ด ๊ฐ์ ์ ์ผ๋ก ๋ฐฉ์ถ๋ ์๋ ์๊ณ , ์ ์ ํ๊ณ ์๋ ์ค๋ ๋๊ฐ ํ์คํฌ๋ฅผ ์ข ๋ฃํ ํ ๊ทธ ์ค๋ ๋์ ์ํด ์๋ฐ์ ์ผ๋ก๋ง ๋ฐฉ์ถ๋ ์ ์๋ค. | ||
4. ์ํ ๋๊ธฐ(circular wait) | ๋๊ธฐํ๊ณ ์๋ ์ค๋ ๋์ ์งํฉ[T0, T1, ..... Tn]์์ T0๋ T1์ด ์ ์ ํ ์์์ ๋๊ธฐํ๊ณ , T1๋ T2๊ฐ ์ ์ ํ ์์์ ๋๊ธฐํ๊ณ , .... T(n-1)์ Tn์ด ์ ์ ํ ์์์ ๋๊ธฐํ๋ฉฐ, Tn์ T0๊ฐ ์ ์ ํ ์์์ ๋๊ธฐํ๋ค. |
์ฐ๋ฆฌ๋ ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ๋ ค๋ฉด ์ ๋ค ๊ฐ์ง ์กฐ๊ฑด์ด ์ฑ๋ฆฝ๋์ด์ผ ํจ์ ๊ผญ ๊ธฐ์ตํด์ผ ํฉ๋๋ค. ์ํ ๋๊ธฐ ์กฐ๊ฑด์ ์ ์ ํ๋ฉฐ ๋๊ธฐ ์กฐ๊ฑด์ ์์ํ๋ฏ๋ก, ์๋ก ํฉ์ณ๋ ๋ ๊ฒ ๊ฐ์ง๋ง ๊ฐ ์กฐ๊ฑด์ ๋ณ๊ฐ๋ก ๊ฐ์ฃผํ๋ ๊ฒ์ด ์ ์ฉํ๊ธฐ ๋๋ฌธ์ ๋๋ ์ก์ต๋๋ค.
(2) ์์ ํ ๋น ๊ทธ๋ํ(_Resource-Allocation Graph)
๊ต์ฐฉ ์ํ๋ ์์คํ ์์ ํ ๋น ๊ทธ๋ํ๋ผ๊ณ ํ๋ ๋ฐฉํฅ ๊ทธ๋ํ๋ก ๋์ฑ ์ ํํ๊ฒ ๊ธฐ์ ํ ์ ์์ต๋๋ค. ์ด ๊ทธ๋ํ๋ ์ ์ (vertex) V์ ์งํฉ๊ณผ ๊ฐ์ (edge) E์ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ ์ V์ ์งํฉ์ ์์คํ ๋ด์ ๋ชจ๋ ํ์ฑ ์ค๋ ๋์ ์งํฉ์ธ T = {T1, T2, .... Tn}๊ณผ ์์คํ ๋ด์ ๋ชจ๋ ์์ ์ ํ์ ์งํฉ์ธ R = {R1, R2, ... Rm}์ ๋ ๊ฐ์ง ์ ํ์ผ๋ก ๊ตฌ๋ณ๋ฉ๋๋ค.
์ค๋ ๋ Ti๋ก๋ถํฐ ์์ ์ ํ Rj๋ก์ ๋ฐฉํฅ ๊ฐ์ (directed edge)์ Ti->Rj๋ก ํํํ๋ฉฐ, ์ด๊ฒ์ ์ค๋ ๋ Ti๊ฐ ์์ ์ ํ Rj์ ์ธ์คํด์ค๋ฅผ ํ๋ ์์ฒญํ๋ ๊ฒ์ผ๋ก ํ์ฌ ์ด ์์์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ์ ๋๋ค. ์์ ์ ํ Rj๋ก๋ถํฐ ์ค๋ ๋ Ti๋ก์ ๋ฐฉํฅ ๊ฐ์ฑ์ Rj -> Ti๋ก ํํํ๋ฉฐ, ์ด๊ฒ์ ์์ ์ ํ Rj์ ํ ์ธ์คํด์ค๊ฐ ์ค๋ ๋ Ti์ ํ ๋น๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ฐฉํฅ ๊ฐ์ Ti -> Rj๋ ์์ฒญ ๊ฐ์ (request edge)์ด๋ผ ๋ถ๋ฅด๊ณ , ๋ฐฉํฅ ๊ฐ์ Rj -> Ti๋ ํ ๋น ๊ฐ์ฑ(assignment edge)์ด๋ผ ํฉ๋๋ค.
๋์์ ์ผ๋ก, ์ฐ๋ฆฌ๋ ๊ฐ ์ค๋ ๋ Ti๋ฅผ ์์ผ๋ก ํํํ๊ณ , ๊ฐ ์์ ์ ํ Rj๋ ์ฌ๊ฐํ์ผ๋ก ํํํฉ๋๋ค. ๊ฐ๋จํ ์๋ก, ์๋ ์ด๋ฏธ์ง์ ํ์๋ ์์ ํ ๋น ๊ทธ๋ํ๋ ๊ต์ฐฉ์ํ ์ํฉ์ ์ ๋ํ๋ด๊ณ ์์ต๋๋ค.
first_mutex ๊ถํ์ ๊ฐ์ง๊ณ ์๋ ์ค๋ ๋1์ด second_mutex๋ฅผ ๊ธฐ๋ค๋ฆฌ๋๋ฐ second_mutex๋ ์ค๋ ๋2๊ฐ ๊ฐ์ง๊ณ ์๊ณ , ์ด ์ค๋ ๋2๋ first_mutex๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ด์ ์์ํ ์๋ก ํ ๋น๋ฐ์ ์ ์๋ ๊ต์ฐฉ์ํ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
์์ ์ ํ Rj๊ฐ ํ ๊ฐ ์ด์์ ์ธ์คํด์ค๋ฅผ ๊ฐ์ง ๋๋ ๊ฐ ์ธ์คํด์ค๋ฅผ ์ฌ๊ฐํ ๋ด์ ํ๋์ ์ ์ผ๋ก ํ์ํฉ๋๋ค. ํ ๋น ๊ฐ์ ์ ๋ํ ๋ฐ๋์ ์ฌ๊ฐํ ์์ ํ๋์ ์ ์ ์ง์ ํด์ผ๋ง ํ์ง๋ง, ์์ฒญ ๊ฐ์ ์ ์ฌ๊ฐํ Rj๋ง์ ๊ฐ๋ฆฌํจ๋ค๋ ๊ฒ์ ์ ์ํด์ผ ํฉ๋๋ค.
์ค๋ ๋ Ti๊ฐ ์์ ์ ํ Rj์ ํ ์ธ์คํด์ค๋ฅผ ์์ฒญํ๋ฉด, ์์ฒญ ๊ฐ์ ์ด ์์ ํ ๋น ๊ทธ๋ํ ์์ ์ฝ์ ๋ฉ๋๋ค. ์ด ์์ฒญ์ด ๋ง์กฑํ ์ ์์ผ๋ฉด, ์์ฒญ ๊ฐ์ ์ ์ฆ์ ํ ๋น ๊ฐ์ ์ผ๋ก ๋ณํ๋ฉ๋๋ค. ์ค๋ ๋๊ฐ ๋ ์์์ ๋ํ ์ ๊ทผ์ ํด์ผ ํ์ง ์์ผ๋ฉด ์์์ ๋ฐฉ์ถํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ ํ ๋น ๊ฐ์ ์ ์ญ์ ๋ฉ๋๋ค.
์๋ ์ด๋ฏธ์ง๋ฅผ ์์๋ก ์ํฉ์ ํ๋ฒ ์ค๋ช ํด ๋ณด๊ฒ ์ต๋๋ค.
์ค๋ ๋ ์งํฉ T, ์์ ์งํฉ R, ๊ทธ๋ฆฌ๊ณ ์ํ๋ฅผ ๋ํ๋ด๋ E๋ ์๋์ ๊ฐ์ต๋๋ค.
- T = {T1, T2, T3}
- R = {R1, R2, R3, R4}
- E = {T1->R1, T2->R3, R1->T2, R2->T2, R2->T1, R3->T3}
์์์ ์ธ์คํด์ค๋ ์๋์ ๊ฐ์ต๋๋ค.
- ์์ ์ ํ R1์ ์ธ์คํด์ค๊ฐ ํ ๊ฐ
- ์์ ์ ํ R2์ ์ธ์คํด์ค๊ฐ ๋ ๊ฐ
- ์์ ์ ํ R3์ ์ธ์คํด์ค๊ฐ ํ ๊ฐ
- ์์ ์ ํ R์ ์ธ์คํด์ค๊ฐ ์ธ ๊ฐ
์ค๋ ๋ ์ํ๋ ์๋์ ๊ฐ์ต๋๋ค.
- ์ค๋ ๋ T1์ ์์ ์ ํ R2์ ์ธ์คํด์ค ํ ๊ฐ๋ฅผ ์ ์ ํ๊ณ , ์์ ์ ํ R1์ ์ธ์คํด์ค ํ ๊ฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๋๊ธฐํ๋ค.
- ์ค๋ ๋ T2๋ R1๊ณผ R2์ ์ธ์คํด์ค๋ฅผ ๊ฐ๊ฐ ํ ๊ฐ์ฉ ์ ์ ํ๊ณ , ์์ ์ ํ R3์ ์ธ์คํด์ค ํ ๊ฐ๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค.
- ์ค๋ ๋ T3๋ R3์ ์ธ์คํด์ค ํ ๊ฐ๋ฅผ ์ ์ ํ๊ณ ์๋ค.
์์ ํ ๋น ๊ทธ๋ํ์ ์ ์๋ก๋ถํฐ, ์ฐ๋ฆฌ๋ ๋ง์ผ ๊ทธ๋ํ๊ฐ ์ฌ์ดํด(cycle)์ ํฌํจํ์ง ์์ผ๋ฉด ์์คํ ๋ด ์ด๋ ์ค๋ ๋๋ ๊ต์ฐฉ ์ํ๊ฐ ์๋๋ผ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๋ฐ๋ฉด, ๊ทธ๋ํ๊ฐ ์ฌ์ดํด์ ํฌํจํ๋ฉด ๊ต์ฐฉ ์ํ๊ฐ ์กด์ฌํ ์ ์์ต๋๋ค(๋ฐ๋์ ๋ฐ์ํ๋ ๊ฑด ์๋)
๋ง์ผ ๊ฐ ์์ ์ ํ์ด ์ ํํ๊ฒ ํ๋์ ์ธ์คํด์ค๋ง์ ๊ฐ์ง๋ฉด, ํ๋์ ์ฌ์ดํด์ ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ์์์ ์์ํฉ๋๋ค. ๋ง์ผ ์ฌ์ดํด์ด ๊ฐ๊ฐ ํ๋์ ์ธ์คํด์ค๋ง ๊ฐ๋ ์์ ์ ํ์ ์งํฉ๋ง์ ํํจ ํ๋ค๋ฉด, ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ ๊ฒ์ ๋๋ค. ์ฌ์ดํด์ ํฌํจ๋ ๊ฐ ์ค๋ ๋๋ ๊ต์ฐฉ ์ํ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ์ ๊ทธ๋ํ ๋ด์ ํ ์ฌ์ดํด์ ๊ต์ฐฉ ์ํ๊ฐ ์กด์ฌํ๊ธฐ ์ํ ํ์์ถฉ๋ถ์กฐ๊ฑด์ด ๋ฉ๋๋ค.
๋ง์ผ ๊ฐ ์์ ์ ํ์ด ์ฌ๋ฌ ๊ฐ์ ์ธ์คํด์ค๋ฅผ ๊ฐ์ง๋ฉด, ์ฌ์ดํด์ด ๋ฐ๋์ ๊ต์ฐฉ์ํ๊ฐ ๋ฐ์ํ์์ ์๋ฏธํ์ง๋ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ๊ทธ๋ํ ๋ด์ ์ฌ์ดํด์ ๊ต์ฐฉ ์ํ๊ฐ ์กด์ฌํ๋ ๋ฐ ํ์์กฐ๊ฑด์ด๋ฉฐ ์ถฉ๋ถ์กฐ๊ฑด์ด ๋์ง๋ ์์ต๋๋ค.
์ด ๊ฐ๋ ์ ์ค๋ช ํ๊ธฐ ์ํด, ๋ค์ ์ ์์ ํ ๋น ๊ทธ๋ํ ์ด๋ฏธ์ง๋ฅผ ์ดํด๋ด ์๋ค. ์ค๋ ๋ T3๊ฐ ์์ ์ ํ R2์ ์ธ์คํด์ค๋ฅผ ํ๋๋ฅผ ์์ฒญํ๋ค๊ณ ๊ฐ์ ํด๋ด ์๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ์์์ด ํ์ฌ ์๊ธฐ ๋๋ฌธ์, ์์ฒญ ๊ฐ์ T3 -> R2๋ฅผ ๊ทธ๋ํ์ ์๋์ ์ด๋ฏธ์ง์ ๊ฐ์ด ์ถ๊ฐํฉ๋๋ค.
์ด ์์ ์์ ์์คํ ๋ด์ ๋ ๊ฐ์ ์ต์ ์ฌ์ดํด์ด ์กด์ฌํฉ๋๋ค.
- T1 -> R1 -> T2 -> R3 -> T3 -> R2 -> T1
- T2 -> R3 -> T3 -> R2 -> T2
์ค๋ ๋ T1, T2 ๊ทธ๋ฆฌ๊ณ T3๋ ๊ต์ฐฉ ์ํ์ ๋๋ค. ์ค๋ ๋ T2๋ ์ค๋ ๋ T3์ด ์ ์ ํ๊ณ ์๋ ์์ R3์ ๊ธฐ๋ค๋ฆฝ๋๋ค. ์ค๋ ๋ T3๋ ๋ฐ๋ฉด์ ์ค๋ ๋ T1์ด๋ T2๊ฐ ์์ R2๋ฅผ ๋ฐฉ์ถํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค. ๋ํ ์ค๋ ๋ T1์ T2๊ฐ ์์ R1์ ๋ฐฉ์ถํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค.
์ด์ ์๋ ์ด๋ฏธ์ง์ ์๋ ์์ ํ ๋น ๊ทธ๋ํ๋ฅผ ์๊ฐํด ๋ด ์๋ค.
์ด ์์์๋ ์ญ์ ์ฌ์ดํด์ ๊ฐ์ต๋๋ค.
- T1 -> R1 -> T3 -> R2 -> T1
๊ทธ๋ฌ๋ ์ ์์์๋ ๊ต์ฐฉ ์ํ๊ฐ ์์ต๋๋ค. ํ๋ก์ธ์ค T4๊ฐ ์์ ์ ํ R2์ ์ธ์คํด์ค๋ฅผ ๋ฐฉ์ถํ ์ ์์์ ์์ธํ ๋ด์ผ ํฉ๋๋ค. ์ด์ด ๊ทธ ์์์ด T3์ ํ ๋น๋ ์ ์๊ณ , ๊ทธ ๊ฒฝ์ฐ ์ฌ์ดํด์ด ์์ด์ง๋๋ค.
์์ฝํ์๋ฉด, ์์ ํ ๋น ๊ทธ๋ํ์ ์ฌ์ดํด์ด ์๋ค๋ฉด, ์์คํ ์ ๊ต์ฐฉ ์ํ๊ฐ ์๋๋๋ค. ๋ฐ๋ฉด์, ์ฌ์ดํด์ด ์๋ค๋ฉด ์์คํ ์ ๊ต์ฐฉ ์ํ์ผ ์๋ ์๊ณ ์๋ ์๋ ์์ต๋๋ค.
๊ต์ฐฉ ์ํ ์๋ฐฉ(_Deadlock Prevention)
์ฐ๋ฆฌ๊ฐ ์์์ ์ดํด๋ณธ ๊ฒ์ฒ๋ผ, ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ๋ ค๋ฉด ๋ค ๊ฐ์ง์ ํ์์กฐ๊ฑด ๊ฐ๊ฐ์ด ์ฑ๋ฆฝํด์ผ ํจ์ ์ ์ ์์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ฐ๋ฆฌ๋ ์ด์ ์ด๋ค ์กฐ๊ฑด ์ค์์ ์ต์ํ ํ๋๊ฐ ์ฑ๋ฆฝํ์ง ์๋๋ก ๋ณด์ฅํจ์ผ๋ก์จ ์ฐ๋ฆฌ๋ ๊ต์ฐฉ ์ํ์ ๋ฐ์์ ์๋ฐฉํ ์ ์์ต๋๋ค.
์ํธ ๋ฐฐ์ (Mutual Exclusion)์ ๋ถ์ | - ์ฝ๊ธฐ ์ ์ฉ ํ์ผ๊ณผ ๊ฐ์ ๊ณต์ ์์์ ์ฌ์ฉํฉ๋๋ค. |
์ ์ ๋ฐ ๋๊ธฐ(Hold and Wait)์ ๋ถ์ | - ํ๋ก์ธ์ค ๋๊ธฐ๋ฅผ ์์ ๊ธฐ ์ํด์ ํ๋ก์ธ์ค๊ฐ ์คํ๋๊ธฐ ์ ์ ํ์ํ ๋ชจ๋ ์์์ ํ ๋นํฉ๋๋ค. (์์ ๋ญ๋น ๋ฐ์) - ์์์ ์ ์ ํ์ง ์๊ณ ์์ ๋์๋ง ๋ค๋ฅธ ์์์ ์์ฒญํ ์ ์๋๋ก ํฉ๋๋ค. (๊ธฐ์์ํ๊ฐ ๋ ์ ์์) |
๋น์ ์ (No Preemption) ์ ๋ถ์ | - ๋ชจ๋ ์์์ ๋ํ ์ ์ ์ ํ์ฉํฉ๋๋ค. - ํ๋ก์ธ์ค๊ฐ ํ ๋น๋ฐ์ ์ ์๋ ์์์ ์์ฒญํ๋ ๊ฒฝ์ฐ, ๊ธฐ์กด์ ๊ฐ์ง๊ณ ์๋ ์์์ ๋ชจ๋ ๋ฐ๋ฉํ๊ณ ์ ์์๊ณผ ์ด์ ์์์ ์ป๊ธฐ ์ํด ๋๊ธฐํ๋๋ก ํฉ๋๋ค. (์์ ๋ญ๋น ๋ฐ์) |
์ํ ๋๊ธฐ(Circular Wait)์ ๋ถ์ | - ์์์ ๊ณ ์ ํ ๋ฒํธ๋ฅผ ํ ๋นํ๊ณ , ๋ฒํธ ์์๋๋ก ์์์ ์๊ตฌํ๋๋ก ํฉ๋๋ค. (์์ ๋ญ๋น ๋ฐ์) |
๊ต์ฐฉ์ํ ํํผ(_Deadlock Avoidance)
๋ฐ๋ก ์์์ ์ค๋ช ํ ๊ต์ฐฉ์ํ ์๋ฐฉ ๋ฐฉ๋ฒ์ ์ด์ฉํ๋ฉด ์ฅ์น์ ์ด์ฉ๋ฅ ์ด ์ ํ๋๊ณ ์์คํ ์ด ์ฒ๋ฆฌ์จ(throughput)์ด ๊ฐ์ํ๋ค๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๊ต์ฐฉ์ํ๋ฅผ ํํผํ๋ ๋์์ ์์์ด ์ด๋ป๊ฒ ์์ฒญ๋ ์ง์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋๋ก ์๊ตฌํ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์์ R1๊ณผ R2๋ฅผ ๊ฐ์ง ์์คํ ์์ ์ค๋ ๋ P๊ฐ ๋ ์์์ ๋ชจ๋ ๋ฐฉ์ถํ๊ธฐ ์ ์ ๋จผ์ R1์ ์์ฒญํ๊ณ , ๋ค์์ R2๋ฅผ ์์ฒญํ๋ค๊ณ ๊ฐ์ ํ๊ณ , ์ค๋ ๋ Q๋ ๋จผ์ R2๋ฅผ ์์ฒญํ๊ณ , ๋ค์์ R1์ ์์ฒญํ๋ค๊ณ ๊ฐ์ ํฉ์๋ค. ๊ฐ ์ค๋ ๋์ ์์ฒญ๊ณผ ๋ฐฉ์ถ์ ๋ํ ์์ ํ ์์๋ฅผ ํ์ ํ๊ณ ์๋ค๋ฉด, ์ฐ๋ฆฌ๋ ๊ฐ ์์ฒญ์ ๋ํด์ ๊ฐ๋ฅํ ๋ฏธ๋์ ๊ต์ฐฉ ์ํ์ ๋ฐ์์ ํผํ๊ฒ ํ๊ธฐ ์ํด ์ค๋ ๋๊ฐ ๋๊ธฐํด์ผ ํ๋์ง ๋ง๋์ง์ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค. ๊ฐ ์์ฒญ์ ๋ํด ์์ ๊ฐ์ ๊ฒฐ์ ์ ํ๋ ค๋ฉด ์์คํ ์ ํ์ฌ ์์ฒญ์ ๋ฐ์๋ค์ผ ์ ์๋์ง ๋๋ ๋ฐ๋์ ๋๊ธฐํด์ผ ํ ๊ฒ์ธ์ง๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํด ์๋์ ์ธ ๊ฐ์ง๋ฅผ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
- ํ์ฌ ๊ฐ์ฉ ์์
- ํ์ฌ ๊ฐ ์ค๋ ๋์ ํ ๋น๋ ์์
- ๊ฐ ์ค๋ ๋๊ฐ ์์ผ๋ก ์์ฒญํ๊ฑฐ๋ ๋ฐฉ์ถํ ์์
์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ๋ค์ ํ์ํ ์ ๋ณด์ ์๊ณผ ์ ํ์์ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ๊ฐ์ฅ ๋จ์ํ๊ณ ์ ์ผ ์ ์ฉํ ๋ชจ๋ธ์ ๊ฐ ์ค๋ ๋๊ฐ ์์ ์ด ํ์๋ก ํ๋ ๊ฐ ์ ํ์ ์์๋ง๋ค ์ต๋ ์๋ฅผ ์ ์ธํ๋๋ก ์๊ตฌํ๋ ๊ฒ์ ๋๋ค. ๊ฐ ์ค๋ ๋๊ฐ ์์ฒญํ ๊ฐ ์ ํ์ ์์์ ์ต๋ ์ ์ ๋ณด๋ฅผ ํ์ ํ ์ ์๋ค๋ฉด, ์ฐ๋ฆฌ๋ ์์คํ ์ด ๊ต์ฐฉ ์ํ์ ๋ค์ด๊ฐ์ง ์์ ๊ฒ์ ๋ณด์ฅํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋ค ์ ์์ต๋๋ค. ๊ต์ฐฉ ์ํ ํํผ ์๊ณ ๋ฆฌ์ฆ์ ์์คํ ์ ์ํ ๋๊ธฐ ์ํฉ์ด ๋ฐ์ํ์ง ์๋๋ก ์์ ํ ๋น ์ํ๋ฅผ ๊ฒ์ฌํฉ๋๋ค. ์์ ํ ๋น ์ํ๋ ๊ฐ์ ์์์ ์, ํ ๋น๋ ์์์ ์ ๊ทธ๋ฆฌ๊ณ ์ค๋ ๋๋ค์ ์ต๋ ์๊ตฌ ์์ ์ํด ์ ์๋ฉ๋๋ค.
์ด์ ๋ ๊ฐ์ ๊ต์ฐฉ ์ํ ํํผ ์๊ณ ๋ฆฌ์ฆ(์์ ํ ๋น ๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ, ์ํ์ ์๊ณ ๋ฆฌ์ฆ)์ ์์๋ณผ ๊ฑด๋ฐ ๊ทธ์ ์ ์์ ์ํ๋ผ๋ ์ฉ์ด์ ๋ํด ๋จผ์ ์์๋ณด๊ฒ ์ต๋๋ค.
์์ ์ํ(_Safe State)
์์คํ ์ํ๊ฐ ์์ (safe)ํ๋ค๋ ๋ง์ ์์คํ ์ด ์ด๋ค ์์๋ก๋ ์ค๋ ๋๋ค์ด ์์ฒญํ๋ ๋ชจ๋ ์์์(์ต๋ ์๊ตฌ ์๋ฅผ ์๊ตฌํ๋๋ผ๋) ๊ต์ฐฉ ์ํ๋ฅผ ์ผ๊ธฐ์ํค์ง ์๊ณ ์ฐจ๋ก๋ก ๋ชจ๋ ํ ๋นํด ์ค ์ ์๋ค๋ ๊ฒ์ ๋ปํฉ๋๋ค. ์ฆ, ์์คํ ์ด ์์ ์์(safe sequence)๋ฅผ ์ฐพ์ ์ ์๋ค๋ฉด ์์คํ ์ ์์ ํ๋ค๊ณ ๋งํฉ๋๋ค. <T1, T2, ..., Tn>๊ณผ ๊ฐ์ ์ค๋ ๋ ์์๊ฐ ์์ ํ๋ค๋ ๋ง์(๋ชจ๋ Ti์ ๋ํด) ๊ทธ Ti๊ฐ ์์ฒญํ๋ ์์์ ์์คํ ์ ํ์ฌ ๋จ์์๋ ์์๊ณผ ์์์ ์ํ์ ๋ง์น ๋ชจ๋ ์ค๋ ๋ Tj๋ค์ด(j <i) ๋ฐ๋ฉํ๋ ์์๋ค๋ก ๋ง์กฑ์์ผ ์ค ์ ์์์ ๋ปํฉ๋๋ค. ์ด์ ๊ฒฝ์ฐ Ti๊ฐ ์์ฒญํ ์์๋ค์ ์ฆ์ ๋ง์กฑ์์ผ์ค ์ ์์ ๊ฒ์ผ๋ก ํ๋จ๋๋ฉด Ti๊ฐ ๋ชจ๋ Tj๋ค์ด ๋ง์น ํ ๊น์ง ๊ธฐ๋ค๋ฆฌ๊ฒ ํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด Ti๋ ๋ชจ๋ Tj๋ค์ด ๋ฐ๋ฉํ ์์๋ค์ ๊ฐ์ง๊ณ ์ํ์ ํ ์ ์๊ฒ ๋ฉ๋๋ค. Ti๊ฐ ๋๋ฌ์ ๋ T(i+1)์ ํ์ํ ๋ชจ๋ ์์์ ์ป๊ฒ ๋๊ณ ์ด์ ๊ฐ์ ์ํฉ์ด ๊ณ์๋ฉ๋๋ค. ์ด์ฒ๋ผ ๋ชจ๋ ์ค๋ ๋๋ฅผ ๋ฌด์ฌํ ๋ง์น ์ ์๋ ์ํ์ค๋ฅผ ์ฐพ์ ์ ์์ผ๋ฉด ๋ถ์์ (unsafe)ํ๋ค๊ณ ๋งํฉ๋๋ค.
์์คํ ์ ์ํ๊ฐ ์์ ํ๋ค๋ฉด ๋ฌผ๋ก ๊ต์ฐฉ ์ํ๊ฐ ์๋๋๋ค. ๋ฐ๋๋ก ๊ต์ฐฉ ์ํ์ ์๋ ์์คํ ์ ๋ถ์์ ํ ์ํ์ ์์ต๋๋ค. ๊ทธ๋ ์ง๋ง ์๋์ ์ด๋ฏธ์ง์ ๊ฐ์ด ์์คํ ์ํ๊ฐ ๋ถ์์ ํ๋ค๊ณ ํด์ ๋ฐ๋์ ๊ต์ฐฉ ์ํ๋ก ๊ฐ๋ค๋ ๊ฒ์ ๋ปํ๋ ๊ฒ์ ์๋๋๋ค.
์์คํ ์ด ๋ถ์์ ํ๋ค๋ ๋ง์ ์์ผ๋ก ๊ต์ฐฉ ์ํ๋ก ๊ฐ๊ฒ ๋ ์๋ ์๋ค๋ ๋ป์ ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์์คํ ์ด ์์ ์ํ์ ๋จธ๋ฌด๋ ํ ์ด์์ฒด์ ๋ ๋ถ์์ ์ํ๋ ๊ต์ฐฉ ์ํ ๋ชจ๋๋ฅผ ์๋ฐฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ผ๋จ ๋ถ์์ ์ํ์ ๋ค์ด๊ฐ๊ฒ ๋๋ฉด ์ด์์ฒด์ ๋ ๊ต์ฐฉ ์ํ๊ฐ ์ผ์ด๋ ์๋ ์๋ ์์ ์์ฒญ์ ๋ง์ ์๋ ์์ต๋๋ค. ์ค๋ ๋๋ค์ ํ๋ ์ํ๊ฐ ๋ถ์์ ์ํ๋ฅผ ์ ์ดํฉ๋๋ค.
์๋ฅผ ๋ค์ด ์๋ ์์์ฒ๋ผ ์์คํ ์ 12๊ฐ์ ์์์ด ์๊ณ T0, T1, T2 ์ธ ๊ฐ์ ํ๋ก์ธ์ค๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. T0๊ฐ 10๊ฐ์ ์์์ ํ์๋ก ํ๊ณ , T1์ด 4๊ฐ, T2๊ฐ 9๊ฐ๊น์ง์ ์์์ ํ์๋ก ํ ์ ์์ต๋๋ค. ์์์ ์์ t0์์ T0๊ฐ 5๊ฐ, T1์ด 2๊ฐ, T2๊ฐ 2๊ฐ์ ์์์ ๋ณด์ ์ค์ ๋๋ค.(๋ฐ๋ผ์ ์ด์ 3๊ฐ์ ์์์ด ์์คํ ๋ณด์ ๋ถ์ผ๋ก ๋จ์์ต๋๋ค.)
t0์์ ์์คํ ์ ์ํ๋ ์์ ํฉ๋๋ค. <T1, T0, T2> ์์๊ฐ ์์ผ๋ฏ๋ก ์์ ์ํ์ ๋๋ค. ์๋ํ๋ฉด T1์ด ์์คํ ๋ณด์ ๋ถ์ผ๋ก ๋จผ์ ๋๋ด๊ณ ๋๋ฉด(์ด์ ์๋ ๋ณด์ ๋ถ 3๊ฐ ๋จ์๋ ๊ฒ์ T1์ด ๋ฐ๋ฉํ๋ 2๋ฅผ ์ถ๊ฐํ์ฌ 3 + 2 = 5๊ฐ๊ฐ ์์คํ ๋ณด์ ๋ถ์ด ๋ฉ๋๋ค), T0์ด ๊ทธ ๋ค์ฏ ๊ฐ๋ฅผ ๊ฐ์ ธ๊ฐ ๋๋ผ ์ ์๊ณ , ๋ง์ง๋ง์ผ๋ก T2๊ฐ ๋๋ด๋ฉด ๋ฉ๋๋ค(์ด์ ์์คํ ๋ณด์ ๋ถ์ ๋ค์ 12๊ฐ๊ฐ ๋ฉ๋๋ค).
์์คํ ์ ์์ ์ํ์ ์๋ค๊ฐ๋ ๋ถ์์ ์ํ๋ก ์ ์ดํ ์ ์์ต๋๋ค.
- ์๋ฅผ ๋ค์ด t1์์ T2๊ฐ ์์ ํ ๊ฐ๋ฅผ ์ถ๊ฐ๋ก ์์ฒญํ์ฌ ๊ทธ๊ฒ์ ์ฃผ์๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค.
- ๊ทธ๋ฌ๋ฉด ์ด์ ์์คํ ์ํ๋ ๋ ์ด์ ์์ ํ์ง ์๊ฒ ๋ฉ๋๋ค.
- ์ด ์ํ์์๋ T1 ๋ง์ด ์ํ๋ ์์์ ๋ค ํ ๋น๋ฐ์ ์ ์์ต๋๋ค.
- T1์ด ๋ง์น๊ณ ์์์ ๋ฐ๋ฉํด๋ ์์คํ ๋ณด์ ๋ถ์ 4๊ฐ๋ฟ์ ๋๋ค.
- T0๊ฐ 5๊ฐ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ์ต๋ 10๊ฐ๋ฅผ ํ์๋ก ํ๋ฏ๋ก ์ถ๊ฐ๋ก 5๊ฐ๊น์ง๋ฅผ ๋ ์์ฒญํ ์ ์์ต๋๋ค.
- ๊ทธ๋ด ๊ฒฝ์ฐ ์์์ ๊ฐ์๊ฐ ๋ถ์กฑํ๋ฏ๋ก T0์ ๋๋ด์ง ๋ชปํ๊ณ ๊ธฐ๋ค๋ฆด ์๋ฐ์ ์๊ฒ ๋ฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก T2๋ 6๊ฐ๊น์ง์ ์์์ ์ถ๊ฐ๋ก ์์ฒญํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์ด ์ค๋ ๋๋ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค.
- ๊ฒฐ๊ณผ๋ ๊ต์ฐฉ์ํ์ ๋๋ค.
๊ทธ๋ฌ๋ฏ๋ก ์์์ T2๊ฐ ์์์ ํ ๊ฐ ๋ ๋ฌ๋ผ๊ณ ํ ๋ ๊ทธ ์์ฒญ์ ๊ทธ๋๋ก ๋ค์ด์ฃผ๋ฉด ์ค์๋ฅผ ๋ฒํ๋ ์ ์ด ๋ฉ๋๋ค. T2๊ฐ ํ ๊ฐ๋ฅผ ์์ฒญํ๋๋ผ๋ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ฒ ํ๋ค๊ฐ ๊ทธ๊ฒ์ ์ฃผ์๋ค๋ฉด ๊ต์ฐฉ ์ํ๋ฅผ ํผํ ์๋ ์์์ ๊ฒ์ ๋๋ค.
์ด์ ์์ ์ด๋ผ๋ ๊ฐ๋ ์ด ์ดํด๋์๋ค๋ฉด ํํผ ์๊ณ ๋ฆฌ์ฆ์ด ์ด๋ป๊ฒ ๊ต์ฐฉ ์ํ๋ฅผ ํํผํ ์ ์๋์ง ์ ์ํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ ์์น์ ์์คํ ์ ์ํ๊ฐ ํญ์ ์์ ์ํ๋ฅผ ๋ ๋์ง ์๋๋ก ๊ณ ์ํ๋ ๊ฒ์ ๋๋ค. ์ต์ด์ ์ํ๋ ๋ฌผ๋ก ์์ ํฉ๋๋ค. ๊ทธ ํ ์ค๋ ๋๋ค์ด ์์์ ์์ฒญํ๋ฉด ์์คํ ์ ์์์ ์ฆ์ ํ ๋นํ ์ ์๋์ง ์๋๋ฉด ์ค๋ ๋๊ฐ ๋๊ธฐํด์ผ ํ๋์ง ๊ฒฐ์ ํด์ผ ํฉ๋๋ค. ์์ฒญํ ์์์ ์ฆ์ ์น๋ํด ์ฃผ๋ ๊ฒฝ์ฐ๋ ์์คํ ์ ์ํ๊ฐ ์์ ์ํ์์ ์์ ์ํ๋ก ์ฎ๊ธธ ๋๋ฟ์ ๋๋ค.
์ด๋ฌํ ๋ฐฉ์์์๋ ์ค๋ ๋๊ฐ ์์ฒญํ ์์๋ณด๋ค ๋ง์ ์์ ์์คํ ์ด ๋ณด์ ํ๊ณ ์๋ค๊ณ ํ๋๋ผ๋ ๊ทธ ํ๋ก์ธ์ค๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฒ ํ๋ ์ํฉ์ด ๋ฒ์ด์ง ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์์์ ์ด์ฉ๋ฅ ์ ํํผ๋ฅผ ์ ์ธ ๋ ๋นํด์ ๋ฎ์์ง ์๋ฐ์ ์์ต๋๋ค.
(1) ๊ต์ฐฉ์ํ ํํผ ์๊ณ ๋ฆฌ์ฆ 1: ์์ ํ ๋น ๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ
๋ง์ฝ ๊ฐ ์์ ์ ํ๋ง๋ค ๋จ์ง ํ๋์ ์ธ์คํด์ค๋ฅผ ๊ฐ๋ ์์ ํ ๋น ์์คํ ์ ๊ฐ๊ณ ์๋ค๋ฉด, ์ฐ๋ฆฌ๋ ๊ต์ฐฉ ์ํ ํํผ๋ฅผ ์ํด ์์์ ์ค๋ช ํ ์์ ํ ๋น ๊ทธ๋ํ์ ๋ณํ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ฒญ ๊ฐ์ ๊ณผ ํ ๋น ๊ฐ์ ์ ์ถ๊ฐํ์ฌ, ์ฐ๋ฆฌ๋ ์์ฝ ๊ฐ์ (claim edge)์ด๋ผ๋ ์๋ก์ด ํ์ ์ ๊ฐ์ ์ ๋์ ํฉ๋๋ค. ์์ฝ ๊ฐ์ (Ti -> Rj)์ Pi๊ฐ ๋ฏธ๋์ ์์ Rj๋ฅผ ์์ฒญํ ๊ฒ์ด๋ผ๋ ์๋ฏธ์ ๋๋ค. ์ด ๊ฐ์ ์ ๋ฐฉํฅ์ ์์ฒญ ๊ฐ์ ๊ณผ ์ ์ฌํ์ง๋ง ์ ์ (dashed line)์ผ๋ก ํ์ํฉ๋๋ค. ํ๋ก์ธ์ค Ti๊ฐ ์์ Rj๋ฅผ ์์ฒญํ๋ฉด, ์์ฝ ๊ฐ์ Ti -> Rj๋ ์์ฒญ ๊ฐ์ ์ผ๋ก ๋ณํ๋ฉ๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก Ti๊ฐ ์์ Rj๋ฅผ ๋ฐฉ์ถํ ๋, ํ ๋น ๊ฐ์ Rj -> Ti๋ ์์ฝ ๊ฐ์ Ti -> Rj๋ก ๋ค์ ๋ณํ๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ ์์คํ ์์ ์์์ด ๋ฐ๋์ ์์ฝ๋์ด์ผ ํจ์ ์ ์ํด์ผ ํฉ๋๋ค. ์ฆ, ์ค๋ ๋ Ti๊ฐ ์คํ๋๊ธฐ ์ ์, ์ค๋ ๋์ ๋ชจ๋ ์์ฝ ๊ฐ์ ์ด ์์ ํ ๋น ๊ทธ๋ํ์ ํ์๋์ด์ผ ํฉ๋๋ค. ์ค๋ ๋ Ti์ ์ฐ๊ด๋ ๋ชจ๋ ๊ฐ์ ๋ค์ด ์์ฝ ๊ฐ์ ์ผ ๋๋ง ์์ฝ ๊ฐ์ Ti -> Rj๋ฅผ ๊ทธ๋ํ์ ์ถ๊ฐํ๋๋ก ํ์ฉํจ์ผ๋ก์จ ์ฐ๋ฆฌ๋ ์์ ์กฐ๊ฑด์ ์ํํ ์ ์์ต๋๋ค.
์ค๋ ๋ Ti๊ฐ ์์ Rj๋ฅผ ์์ฒญํ๋ค๊ณ ๊ฐ์ ํด๋ด ์๋ค. ์์ฒญ ๊ฐ์ Ti -> Rj๋ฅผ ํ ๋น ๊ฐ์ Rj -> Ti๋ก ๋ณํํด๋ ์์ ํ ๋น ๊ทธ๋ํ์ ์ฌ์ดํด์ ํ์ฑํ์ง ์์ ๋๋ง ์์ฒญ์ ํ์ฉํ ์ ์์ต๋๋ค.
๋ง์ฝ ์ฌ์ดํด์ด ์๋ค๋ฉด ์์์ ํ ๋นํด๋ ์์คํ ์ ์์ ์ํ๊ฐ ๋ฉ๋๋ค. ์ฌ์ดํด์ด ๋ฐ๊ฒฌ๋๋ฉด, ํ ๋น์ ์์คํ ์ ๋ถ์์ ์ํ๋ก ๋ง๋ค ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ค๋ ๋ Ti๋ ์์ ์ ์์ฒญ์ด ์ถฉ์กฑ๋ ๋๊น์ง ๋ฐ๋์ ๋๊ธฐํด์ผ ํฉ๋๋ค.
์ด ์๊ณ ๋ฆฌ์ฆ์ ์ค๋ช ํ๊ธฐ ์ํด ์๋์ ์์ ํ ๋น ๊ทธ๋ํ๋ฅผ ๊ณ ๋ คํด ๋ด ์๋ค.
T2๊ฐ R2๋ฅผ ์์ฒญํ๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. R2๊ฐ ํ์ฌ ๊ฐ์ฉ ์ํ์ด์ง๋ง, ์ฐ๋ฆฌ๋ ์ด๋ฅผ T2์ ํ ๋นํ ์ ์์ต๋๋ค. ์๋ํ๋ฉด, ์๋์ ๊ฐ์ด ํ ๋นํ ๊ฒฝ์ฐ ๊ทธ๋ํ์ ์ฌ์ดํด์ด ์๊ธฐ๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ฌ์ดํด์ ์์คํ ์ด ๋ถ์์ ํ ์ํ์ ์์์ ์๋ฏธํฉ๋๋ค. ๋ง์ผ T1์ด R2๋ฅผ ์์ฒญํ๊ณ , T2๊ฐ R1์ ์์ฒญํ๋ฉด ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํฉ๋๋ค.
(2) ๊ต์ฐฉ์ํ ํํผ ์๊ณ ๋ฆฌ์ฆ 2: ์ํ์ ์๊ณ ๋ฆฌ์ฆ(Banker's Algorithm)
์์ ํ ๋น ๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ์ ์ข ๋ฅ๋ง๋ค ์์์ด ์ฌ๋ฌ ๊ฐ์ฉ ์๊ฒ ๋๋ฉด ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋์์ ๊ธฐ์ ํ๋ ์ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์์์ด ์ฌ๋ฌ ๊ฐ์ฉ ์์ ๋๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํ์ง๋ง ์์ ์์ ํ ๋น ๊ทธ๋ํ๋ณด๋ค ์ํ์ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ด ๋ค์ ๋จ์ด์ง๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ด ์ํ์(banker's)๋ผ๊ณ ๋ถ์ฌ์ง ์ด์ ๋ ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ํ์ ์ ์ฉํ๋ฉด ๊ณ ๊ฐ๋ค์ด ํ๊ธ์ ์ฐพ์ผ๋ฌ ์๋ ์ผ์ ํ ์์์ ์ํด ๋ชจ๋ ๊ณ ๊ฐ์ ์์ฒญ์ ๋ค ๋ค์ด์ค ์ ์๊ฒ ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด ์์คํ ์์๋ ์ค๋ ๋๊ฐ ์์ํ ๋ ์ค๋ ๋๊ฐ ๊ฐ์ง๊ณ ์์ด์ผ ํ ์์์ ์ต๋ ๊ฐ์๋ฅผ ์์ ์ข ๋ฅ๋ง๋ค ๋ฏธ๋ฆฌ ์๋ ค์ผ ํฉ๋๋ค. ๋ฌผ๋ก ์ด ์ซ์๊ฐ ์์์ ์ด ๋ณด์ ์๋ฅผ ๋์ด์๋ฉด ์ ๋ฉ๋๋ค. ์ค๋ ๋๊ฐ ์์๋ค์ ์์ฒญํ๋ฉด ์์คํ ์ ๊ทธ๊ฒ์ ๋ค์ด์ฃผ์์ ๋ ์์คํ ์ด ๊ณ์ ์์ ์ํ์ ๋จธ๋ฌด๋ฅด๊ฒ ๋๋์ง ์ฌ๋ถ๋ฅผ ํ๋จํด์ผ ํฉ๋๋ค. ๊ณ์ ์์ ํ๊ฒ ๋๋ค๋ฉด ๊ทธ ์์ฒญ์ ๋ค์ด์ค๋๋ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ์ด ์ค๋ ๋์ ์์ฒญ์ ํ๋ฝ์ด ์ ๋ ์ฑ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ฒ ๋ฉ๋๋ค.
์ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ ค๋ฉด ๋จผ์ ์๋์ ์๋ฃ๋ค์ ์์์ผ ํฉ๋๋ค. n์ ์ค๋ ๋์ ์์ด๊ณ m์ด ์์์ ์๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค.
- Available: ๊ฐ ์ข ๋ฅ๋ณ๋ก ๊ฐ์ฉํ ์์์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ๋ฒกํฐ, ํฌ๊ธฐ m
- Max: ๊ฐ ์ค๋ ๋๊ฐ ์ต๋๋ก ํ์๋ก ํ๋ ์์์ ๋ํ๋ด๋ ํ๋ ฌ, n x m
- Allocation: ๊ฐ ์ค๋ ๋์ ํ์ฌ ํ ๋น๋ ์์์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ํ๋ ฌ, n x m
- Need: ๊ฐ ์ค๋ ๋๊ฐ ํฅํ ์์ฒญํ ์ ์๋ ์์์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ํ๋ ฌ, ํฌ๊ธฐ n x m
์ ์๋ฃ๋ค์ ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ์ ๊ทธ ๊ฐ๊ณผ ํฌ๊ธฐ๊ฐ ๋ณํ ์ ์์ต๋๋ค.
์ด์ ์์๋ฅผ ๋ค์ด ํ๋ฒ ์ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์์๋ด ์๋ค.
- ํ์ฌ ์์คํ ์๋ ๋ค์ฏ ๊ฐ์ ํ๋ก์ธ์ค T0๋ถํฐ T4๊น์ง ์๊ณ , A, B, C ์ธ ๊ฐ์ง ์ข ๋ฅ์ ์์์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
- ์์คํ ์๋ A ์์์ด 10๊ฐ, B์์์ด 5๊ฐ, C์์์ด 7๊ฐ๊ฐ ์์ต๋๋ค.
Need(ํ์๋ก ํ๋ ์) ํ๋ ฌ ๊ฐ์ (Max - Allocation)์ผ๋ก ๋ถํฐ ์ป์ด์ง๋๋ค.(์ต๋ ํ์๋ก ํ๋ ์ - ํ์ฌ ํ ๋น๋ ์)
์ด ์์คํ ์ ์์ ํ๋ค๊ณ ๋งํ ์ ์์ต๋๋ค. ์๋ํ๋ฉด <T1, T3, T4, T2, T0> ์์ผ๋ก ์์์ ํ ๋นํ๊ฒ ๋๋ฉด ์์ ์ฑ ๊ธฐ์ค์ ๋ง์กฑ์ํค๊ธฐ ๋๋ฌธ์ ์์ ์์(safe sequence)๋ฅผ ๊ฐ์ก๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๋ฒ์๋ T1์ด A์์ ํ ๊ฐ์ C ์์ ๋ ๊ฐ๋ฅผ ์ถ๊ฐ๋ก ์์ฒญ, ์ฆ Request = (1, 0, 2)๋ผ๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ์ด ์์ฒญ์ ์ฆ์ ๋ค์ด์ค ๊ฒ์ธ์ง๋ฅผ ํ๋จํ๊ธฐ ์ํด์๋ ๋จผ์ Request < Available์ธ์ง ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํด์ผ ํฉ๋๋ค. ์ฆ (1,0,2) <= (3, 3, 2)์ธ์ง ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํด์ผ ํฉ๋๋ค. ์ด ์กฐ๊ฑด์ด ๋ง์กฑํ๋ฏ๋ก ๋ค์ ๋จ๊ณ๋ก ๋ง์น ์ด ์์ฒญ์ ๋ค์ด์ฃผ๋ ๊ฒ์ฒ๋ผ ์ํ ์ ๋ณด๋ฅผ ๋ง๋ค์ด ๋ด ์๋ค.
์ด์ ์ด ์ํ๊ฐ ์์ ํ์ง ์ฌ๋ถ๋ฅผ ์ดํด๋ณด๋ฉด ๋ฉ๋๋ค. T0๋ถํฐ ์์๋๋ก ๊ณ์ฐํด๋ณด๋ฉด ๊ฒฐ๊ตญ <T1, T3, T4, T0, T2>๋ผ๋ ์์ ์์(safe sequence)๊ฐ ๋์ด์ ์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ T1์ ์์ฒญ์ ์ฆ์ ๋ค์ด์ค ์ ์์ต๋๋ค.
๋ง์ฝ ์ด๋ฌํ ์ํ์์ T4๊ฐ (3, 3, 0)์ ์์ฒญํ๋ฉด ์์์ด ๋ชจ์๋ผ๋ฏ๋ก ๋ค์ด์ค ์ ์๋ค๋ ๊ฒ ์ ์ ์ ์์ต๋๋ค. ๋ํ T0๊ฐ (0, 2, 0)์ ์์ฒญํ๋ค๋ฉด ์์์ ์ถฉ๋ถํ ์์ง๋ง ์ํ๋ฅผ ๋ถ์์ ์ํ๋ก ๋ง๋๋ฏ๋ก ์ญ์ ๊ทธ ์์ฒญ์ ์ฆ์ ๋ค์ด์ค ์ ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.