[์ด์์ฒด์ ] ๋ฐ๋๋ฝ(Deadlock)์ด๋? ๊ต์ฐฉ์ํ์ ๋ํ์ฌ
๋ชฉ์ฐจ
๋ฐ๋๋ฝ์ด๋?
๋ฐ๋๋ฝ์ ๋ฐ์์กฐ๊ฑด
๋ฐ๋๋ฝ์ ์ฒ๋ฆฌ
๋ฐ๋๋ฝ(๊ต์ฐฉ์ํ, Deadlock)์ด๋?
์์คํ ์์์ ๋ํ ์๊ตฌ๊ฐ ๋ค์ํจ ์ํ. ํ๋ก์ธ์ค๊ฐ ์์์ ์ป์ง ๋ชปํ์ฌ ๋ค์ ์ฒ๋ฆฌ๋ฅผ ํ์ง ๋ชปํ๋ '๊ต์ฐฉ์ํ'๋ฅผ ์๋ฏธํ๋ค. ์์คํ ์ ์ผ๋ก ๋งํ๋ฉด, ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์์ ํ์ ๋ ์์์ ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ฉฐ, ๊ทธ ํ๋ก์ธ์ค๋ ์๋ก ์ํ๋ ์์์ ์ป๊ธฐ ์ํ์ฌ ๋ฌดํ์ ํ ๋๊ธฐ๋ฅผ ํ๋ค. ๊ฐ๋จํ ๋งํ์๋ฉด, ๋ ๊ฐ ์ด์์ ์์ ์ด ์๋ก ์๋๋ฐฉ์ ์์ ์ด ๋๋๊ธฐ๋ง์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ์ด๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก๋ ์๋ฌด๊ฒ๋ ์๋ฃ๋์ง ๋ชปํ๋ค.
์๋ฅผ ๋ค์ด, Processโ ์ด ์ด๋ค ์์ ์ ํ๊ธฐ ์ํ์ฌ, ์์์ธ Resource(1)์ ์ฌ์ฉํ๊ณ ์๋ค. ๊ทผ๋ฐ ๊ทธ ์์ ์ ์ํด์๋ Resource (2)๋ ํ์ํ์ฌ, Resource(2)๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ์๋ํ์์ผ๋ ์ด๋ฏธ ๋ค๋ฅธ ๊ณณ์์ ์ฌ์ฉํ๊ณ ์๋ ์ค์ด๋ค.
๋ฐ๋ก Processโก๋ค. Processโก๋ ๋ณธ์ธ์ ์์ ์ ์ํด Resource(2)๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค. ๊ทผ๋ฐ, Processโก๋ Resource(1)๊ฐ ํ์ํ ์ํฉ์ด๋ค.
์ด๋ฌํ ์ํฉ์์ Processโ ์ด Resource(2)๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ์๋ํ๋ค. ๊ทธ๋ฌ๋, Process(2)๊ฐ ์ฌ์ฉ์ค์ด๋ผ ๋๊ธฐํ๋ค. Processโก๋ Resource(1)์ ์ฌ์ฉํ๋ ค๊ณ ํ๋๋ฐ, Process(1)๊ฐ ์ฌ์ฉ์ค์ด๋ผ ๋๊ธฐํ๋ค.
๋ ๊ฐ์ ํ๋ก์ธ์ค๋ ์๋ก์ ์์ ์ด ๋๋๊ธฐ๋ง์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๊ต์ฐฉ์ํ๋ฅผ ๋ฐ์์ํจ๋ค.
๋ฐ๋๋ฝ์ ๋ฐ์์กฐ๊ฑด
ํ๋จ์ ๋ค๊ฐ์ง ์กฐ๊ฑด์ด ๋ชจ๋ ์ฑ๋ฆฝํ์ฌ์ผ ๋ฐ๋๋ฝ์ด ๋ฐ์๋๋ค. ๋จ, ๋ค๊ฐ์ง ์กฐ๊ฑด์ด ๋ค ์ฑ๋ฆฝํ๋ค๊ณ ํ์ฌ ๊ผญ ๊ต์ฐฉ์ํ๊ฐ ์ผ์ด๋๋ ๊ฒ์ ์๋๋ค. ๋จ์ง ํ์์กฐ๊ฑด์ด๋ค.
1. ์ํธ๋ฐฐ์ (Mutual Exclusion)
์์์ ํ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. ์ํธ๋ฅผ ๋ฐฐ์ ํ๋ค. ์ฆ, ์ค๋ก์ง ๋๋ง ์ด๋ค!
2. ์ ์ ๋๊ธฐ(Hold and wait)
ํ๋์ ์์์ ์ ์ ํ๋ฉด์, ๋ค๋ฅธ ํ๋ก์ธ์ค์์ ํ ๋น๋ ์์์ ์ถ๊ฐ ์ ์ ํ๋ ค๋ฉด ๋๊ธฐํ๋ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์กด์ฌํ์ฌ์ผ ํ๋ค. ์ด๋ฏธ ์์ ์ด ์ด๋ค ๊ณต์ ๋์ด์ง ์์์ ๊ฐ์ง๊ณ ์์ผ๋ฉด์, ๋ค๋ฅธ ๊ฒ์ ์๊ตฌ ํ ๋.
3. ๋น์ ์ (No preemption)
๋ค๋ฅธ ํ๋ก์ธ์ค์ ํ ๋น๋ ์์์ ์ฌ์ฉ์ด ๋๋ ๋๊น์ง ๊ฐ์ ๋ก ๋บ์ ์ ์๋ค.
4. ์ํ๋๊ธฐ(Circular Wait)
ํ๋ก์ธ์ค์ ์งํฉ์์ ์ํ ํํ๋ก ์์์ ๋๊ธฐํ์ฌ์ผ ํ๋ค. ์์ ์๊ฒ ํ ๋น๋ ์์์ ๊ฐ์ง๋ฉด์๋, ์๋๋ฐฉ ํ๋ก์ธ์ค์ ์์์ ์ํธ ์์ฒญํ๋ ๊ฒฝ์ฐ. ์๋ก ๋ง๋ฌผ๋ฆฌ๋ ์ํ ๊ตฌ์กฐ์ ํํ์ผ ๋ ๋ฐ์ํ๋ค๋ ์๋ฏธ!
๋ฐ๋๋ฝ์ ์ฒ๋ฆฌ
1. ์๋ฐฉ
๋ฐ๋๋ฝ ํ์์กฐ๊ฑด์ ๋ถ์ . ์ ์ด์ ๋ฐ๋๋ฝ์ด ๋ฐ์ ํ ๊ฐ๋ฅ์ฑ์ด ์๊ฒ ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋๋ ๊ฒ. ๊ฐ๋ฐ์์ ์ญ๋์ด ์ค์ํ๋ค.
์ํธ ๋ฐฐ์ ๋ถ์ /์ ์ ๋๊ธฐ ๋ถ์ /๋น์ ์ ๋ถ์ /์ํ๋๊ธฐ ๋ถ์
2. ํํผ
๋ฐ๋๋ฝ ๊ฐ๋ฅ์ฑ์ ๋ฐฐ์ ํ์ง ์๊ณ ๋ฐ๋๋ฝ ๋ฐ์ํ๊ธฐ ์ , ๋ฐ๋๋ฝ์ ์์ํ์ฌ ์์ ํ ์ํ์์๋ง ์์ ์์ฒญ์ ํ์ฉ. ํ์ง๋ง, ์์ ์์ฒญ์ด ์์๋๋ง๋ค ๋ฐ๋๋ฝ ํํผ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ์๋นํ ๋ถ๋ด์ค๋ฝ๋ค. ํํผ์ ๋ํ ๋ํ์ ๋ฐฉ๋ฒ์ผ๋ก๋ ์ํ์ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ค.
* ์ํ์ ์๊ณ ๋ฆฌ์ฆ
์์์ ์ด ์, ํ ๋น๋ ์์์ ์๋ฅผ ๊ณ์ฐํ์ฌ ์ด๊ฒ์ ๊ธฐ์ค์ผ๋ก ์์คํ ์ ์์ ์ํ ์ ์งํ๋๋ก ์์์ ํ ๋นํ๋ ์๊ณ ๋ฆฌ์ฆ.
์ ์ฒด ์์ : ์์คํ ๋ด ์ ์ฒด ์์์ ์
๊ฐ์ฉ ์์ : ์์คํ ๋ด ํ์ฌ ์ฌ์ฉํ ์ ์๋ ์์์ ์ (์ ์ฒด์์ - ๋ชจ๋ ํ๋ก์ธ์ค์ ํ ๋น ์์)
์ต๋ ์์ : ๊ฐ ํ๋ก์ธ์ค๊ฐ ์ ์ธํ ์ต๋ ์์์ ์
ํ ๋น ์์ : ๊ฐ ํ๋ก์ธ์ค์ ํ์ฌ ํ ๋น๋ ์์์ ์
๊ธฐ๋ ์์ : ๊ฐ ํ๋ก์ธ์ค๊ฐ ์์ผ๋ก ์ฌ์ฉํ ์์์ ์ (์ต๋ ์์ - ํ ๋น ์์)
์๋ฅผ ๋ค์ด, ๊ฐ์ฉ ์์์ด ๊ธฐ๋ ์์๋ณด๋ค ํฌ๋ฉด ํ๋ก์ธ์ค๋ ์์ ์ ์ธ ์ํ๋ค.
๊ฐ์ฉ์์์ด ๊ธฐ๋ ์์๋ณด๋ค ํฌ์ง ์๋ค๋ฉด, ํ ๋นํ์ง ์๋๋ค. ๋ถ์์ ํ ์ํ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์์ ์ ์ํ๋ฅผ ๊ทธ๋ฆฌ์๋ฉด ์ด๋ ๋ค.
2๊ฐ์ ๊ฐ์ฉ ์์์ P2 ํ๋ก์ธ์ค์๊ฒ ํ ๋นํ๋ฉด, P2์ ์์ ์ด ์ข ๋ฃ๋๋ฉด์ 6๊ฐ์ ์์์ ๋ฐํํ๋ค.
๋ง์ฝ, ๊ฐ์ฉ ์์์ด 1๊ฐ๋ผ๋ฉด P1, P2, P3 ์ด๋ ํ๋ก์ธ์ค์ ํ ๋น๋์ด๋ ์์ ์ด ์ข ๋ฃ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋๋ฝ์ด ํด์๋์ง ์๋๋ค.
3. ํ์ง
๊ต์ฐฉ์ํ๊ฐ ๋ฐ์ํ๋์ง ํ์งํ๊ณ , ํ์ง๋์๋ค๋ฉด ๊ต์ฐฉ์ํ๋ฅผ ๋ณต๊ตฌํ๋ค. ์์ธ์ ๊ท๋ช ํ์ฌ ํด๊ฒฐํ๋ค. ์ด ๋ํ, ์ง์์ ํ์ธ ์์ ์ด ๋ค์ด๊ฐ์ผํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ์ ์ ํ๊ฐ ๋ฐ์ํ๋ค. ๋ณต๊ตฌ ๋ฐฉ๋ฒ์๋ ๋ฐ๋๋ฝ ํ๋ก์ธ์ค ์ข ๋ฃ/๋ฐ๋๋ฝ ํ๋ก์ธ์ค์ ์์ ์ ์ ๋ฑ์ด ์๋ค.
4. ๋ฌด์
๋ฌด์ํ๋ค. ๋ฐ๋๋ฝ์ ๋ฐ์ ํ๋ฅ ์ด ๋น๊ต์ ๋ฎ์ ๊ฒฝ์ฐ์๋ ๋ณ ๋ค๋ฅธ ์กฐ์น๋ฅผ ์ทจํ์ง ์๋๋ค. ํด๊ฒฐ ์ ๋ฐ์ํ๋ ์ค๋ฒํค๋๋ก ์ธํ ์ฑ๋ฅ์ ํ๊ฐ ๋ฐฉ์นํ ๋๋ณด๋ค ๋ ํด ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
References
[์ด์์ฒด์ ] ๋ฐ๋๋ฝ(Deadlock, ๊ต์ฐฉ ์ํ)์ด๋?