Deadlock - hochan222/Everything-in-JavaScript GitHub Wiki
๋ฐ๋ก๊ฐ๊ธฐ
๋ฐ๋ก๊ฐ๊ธฐ
- Deadlock
- ์ผ๋ จ์ ํ๋ก์ธ์ค๋ค์ด ์๋ก๊ฐ ๊ฐ์ง ์์์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ block๋ ์ํ
- Resource (์์)
- ํ๋์จ์ด, ์ํํธ์จ์ด ๋ฑ์ ํฌํจํ๋ ๊ฐ๋
- I/O device, CPU cycle, memory space, semaphore
- ํ๋ก์ธ์ค๊ฐ ์์์ ์ฌ์ฉํ๋ ์ ์ฐจ
- Request, Allocate, Use, Release
Deadlock ๋ฐ์์ 4๊ฐ์ง ์กฐ๊ฑด
- Mutual exclusion (์ํธ ๋ฐฐ์ )
- ๋งค ์๊ฐ ํ๋์ ํ๋ก์ธ์ค๋ง์ด ์์์ ์ฌ์ฉํ ์ ์์
- No preemption (๋น์ ์ )
- ํ๋ก์ธ์ค๋ ์์์ ์ค์ค๋ก ๋ด์ด ๋์ ๋ฟ ๊ฐ์ ๋ก ๋นผ์๊ธฐ์ง ์์
- Hold and wait (๋ณด์ ๋๊ธฐ)
- ์์์ ๊ฐ์ง ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ์์์ ๊ธฐ๋ค๋ฆด ๋ ๋ณด์ ์์์ ๋์ง ์๊ณ ๊ณ์ ๊ฐ์ง๊ณ ์์
- ์์ ๊ฐ์ง๊ณ ์๋๋ฐ ์๋ก์ด ์์ ์๊ตฌํ ๋
- Circular wait (์ํ ๋๊ธฐ)
- ์์์ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค๊ฐ์ ์ฌ์ดํด์ด ํ์ฑ๋์ด์ผ ํจ
resource-Allocation Graph
Deadlock์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
- Deadlock Prevention
- ์์ ํ ๋น ์ Deadlock์ 4์ฌ์ง ํ์ ์กฐ๊ฑด ์ค ์ด๋ ํ๋๊ฐ ๋ง์กฑ๋์ง ์๋๋ก ํ๋ ๊ฒ
- Utilization ์ ํ, throughput ๊ฐ์, starvation ๋ฌธ์
- Deadlock Avoidance
- ์์ ์์ฒญ์ ๋ํ ๋ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ด์ฉํด์ deadlock์ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ์๋ง ์์์ ํ ๋น
- ์์คํ
state๊ฐ ์๋ state๋ก ๋์์ฌ ์ ์๋ ๊ฒฝ์ฐ์๋ง ์์ ํ ๋น
- Banker's Algorithm
- ํ๋ก์ธ์ค์ ์ต๋ ์์ฒญ์ผ๋ก ๊ณ ๋ คํด์ ๊ณ์ฐ.
-
- Deadlock Detection and recovery
- Deadlock ๋ฐ์์ ํ์ฉํ๋ ๊ทธ์ ๋ํ detection ๋ฃจํด์ ๋์ด deadlock ๋ฐ๊ฒฌ ์ recover
- Deadlock Ignorance (ํ๋ ์ด์์ฒด์ ๋๋ถ๋ถ ์ฑํ, ์ฌ๋์๊ฒ ๋งก๊น)
- Deadlock์ ์์คํ
์ด ์ฑ
์์ง์ง ์์
- UNIX๋ฅผ ํฌํจํ ๋๋ถ๋ถ์ OS๊ฐ ์ฑํ
- Deadlock์ด ๋งค์ฐ ๋๋ฌผ๊ฒ ๋ฐ์ํ๋ฏ๋ก deadlock์ ๋ํ ์กฐ์น ์์ฒด๊ฐ ๋ ํฐ overhead์ผ ์ ์์