๋ณธ ๊ฒ์๊ธ์ KOCW ์ดํ์ฌ์๋ํ๊ต ๋ฐํจ๊ฒฝ ๊ต์๋์ <์ด์์ฒด์ > ๊ฐ์๋ฅผ ๋ฃ๊ณ ,
<ํผ์ ๊ณต๋ถํ๋ ์ปดํจํฐ๊ตฌ์กฐ + ์ด์์ฒด์ > ์ฑ ์ ์ฐธ๊ณ ํ์ฌ ์ ๋ฆฌํ ๋ด์ฉ์ ๋๋ค.
๊ฒ์๊ธ์ ํฌํจ๋๋ ์ด๋ฏธ์ง ์๋ฃ๋ <์ด์์ฒด์ > ๊ฐ์์ ํฌํจ๋ ๊ฐ์ ์๋ฃ์ ๋๋ค.
๊ต์ฐฉ ์ํ(Deadlock)๋?
์ผ๋ จ์ ํ๋ก์ธ์ค๋ค์ด ์๋ก๊ฐ ๊ฐ์ง ์์(resource)์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ block๋ ์ํ๋ฅผ ๊ต์ฐฉ์ํ(deadlock)์ด๋ผ๊ณ ํฉ๋๋ค.
์์(resource)
- ํ๋์จ์ด, ์ํํธ์จ์ด ๋ฑ์ ํฌํจํ๋ ๊ฐ๋
- ex) I/O device, CPU cycle, memory space, semaphore ๋ฑ
- ํ๋ก์ธ์ค๊ฐ ์์์ ์ฌ์ฉํ๋ ์ ์ฐจ
- Request(์์ฒญ) -> Allocate(ํ๋) -> Use(์ฌ์ฉ) -> Release(๋ฐ๋ฉ)
Deadlock ๋ฐ์์ 4๊ฐ์ง ์กฐ๊ฑด
๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ ์กฐ๊ฑด์๋ ๋ค ๊ฐ์ง๊ฐ ์์ต๋๋ค. ๋ค ๊ฐ์ง ์กฐ๊ฑด ์ค ํ๋๋ผ๋ ๋ง์กฑํ์ง ์๋๋ค๋ฉด ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ์ง ์์ง๋ง, ์๋์ ์กฐ๊ฑด์ด ๋ชจ๋ ๋ง์กฑ๋ ๋ ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ์๊น๋๋ค.
Mutual exclution (์ํธ ๋ฐฐ์ )
๋งค ์๊ฐ ํ๋์ ํ๋ก์ธ์ค๋ง์ด ์์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ๋ ์์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ๋๋ค.
No preemption (๋น์ ์ )
ํ๋ก์ธ์ค๋ ์์์ ์ค์ค๋ก ๋ด์ด๋์ ๋ฟ ๊ฐ์ ๋ก ๋นผ์๊ธฐ์ง ์์ต๋๋ค.
Hold and Wait (์ ์ ์ ๋๊ธฐ)
์์์ ๊ฐ์ง ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ์์์ ๊ธฐ๋ค๋ฆด ๋ ๋ณด์ ์์์ ๋์ง ์๊ณ ๊ณ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ด๋ค ์์์ ํ ๋น๋ฐ์ ์ํ์์ ๋ค๋ฅธ ์์์ ํ ๋น๋ฐ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฐ๋ค๋ฉด ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
Circular wait (์ํ ๋๊ธฐ)
์์์ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค ๊ฐ์ ์ฌ์ดํด์ด ํ์ฑ๋ฉ๋๋ค.
ex) ํ๋ก์ธ์ค P0, P1, ..., Pn์ด ์์ ๋
P0์ P1์ด ๊ฐ์ง ์์์ ๊ธฐ๋ค๋ฆผ
P1์ P2๊ฐ ๊ฐ์ง ์์์ ๊ธฐ๋ค๋ฆผ
Pn์ P0์ด ๊ฐ์ง ์์์ ๊ธฐ๋ค๋ฆผ
์์ ํ ๋น ๊ทธ๋ํ (Resource-Allocation Graph)
๊ต์ฐฉ ์ํ๋ ์์ ํ ๋น ๊ทธ๋ํ๋ฅผ ํตํด ๋จ์ํ๊ฒ ํํํ ์ ์์ต๋๋ค. ์์ ํ ๋น ๊ทธ๋ํ๋ ์ด๋ค ํ๋ก์ธ์ค๊ฐ ์ด๋ค ์์์ ์ฌ์ฉํ๊ณ ์๊ณ , ์ด๋ค ํ๋ก์ธ์ค๊ฐ ์ด๋ค ์์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋์ง๋ฅผ ํํํ๋ ๊ฐ๋จํ ๊ทธ๋ํ์ ๋๋ค.
- ์: ํ๋ก์ธ์ค(process), ์ฌ๊ฐํ: ์์(resource), ์ (์ฌ๊ฐํ ๋ด): ์์์ ๊ฐ์
- ํ์ดํ ๋ฐฉํฅ
- ํ๋ก์ธ์ค(์) -> ์์(์ฌ๊ฐํ): ํ๋ก์ธ์ค๊ฐ ์์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ
- ์์(์ฌ๊ฐํ) -> ํ๋ก์ธ์ค(์): ํ๋ก์ธ์ค๊ฐ ์์์ ํ ๋น๋ฐ์ ์ฌ์ฉ ์ค
- ๊ทธ๋ํ์ cycle์ด ์์ผ๋ฉด deadlock์ด ์๋
- ๊ทธ๋ํ์ cycle์ด ์์ผ๋ฉด - deadlock ๊ฐ๋ฅ์ฑ (๋ฌด์กฐ๊ฑด deadlock์ ์๋)
- 1๋ฒ ๊ทธ๋ฆผ: deadlock O
- 2๋ฒ ๊ทธ๋ฆผ: deadlock X - cycle์ด 1๊ฐ ์์ผ๋ ์์์ด 2๊ฐ์ฉ์ด๊ณ P2์ P4๋ ๊ด๋ จ์๊ธฐ ๋๋ฌธ(P2 or P4 ์์ ๋ฐ๋ฉ ์ ์ฌ์ดํด ์ฌ๋ผ์ง)
Deadlock์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
Deadlock Prevention (๊ต์ฐฉ ์ํ ์๋ฐฉ)
- ์์ ํ ๋น ์ deadlock์ 4๊ฐ์ง ํ์ ์กฐ๊ฑด ์ค ์ด๋ ํ๋๊ฐ ๋ง์กฑ๋์ง ์๋๋ก ํ๋ ๊ฒ
Deadlock Avoidance (๊ต์ฐฉ ์ํ ํํผ)
- ์์ ์์ฒญ์ ๋ํ ๋ถ๊ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ด์ฉํด์ deadlock์ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ์๋ง ์์์ ํ ๋น
- ์์คํ state๊ฐ ์๋ state๋ก ๋์์ฌ ์ ์๋ ๊ฒฝ์ฐ์๋ง ์์ ํ ๋น
Deadlock Detection and recovery (๊ต์ฐฉ ์ํ ๊ฒ์ถ ํ ํ๋ณต)
- deadlock ๋ฐ์์ ํ์ฉํ๋ ๊ทธ์ ๋ํ detection ๋ฃจํด์ ๋์ด deadlock ๋ฐ๊ฒฌ ์ recover
Deadlock Ignorance
- deadlock์ ์์คํ ์ด ์ฑ ์์ง์ง ์์
- UNIX๋ฅผ ํฌํจํ ๋๋ถ๋ถ์ OS๊ฐ ์ฑํ
Deadlock Prevention
deadlock ๋ฐ์์กฐ๊ฑด 4๊ฐ์ง ์ค ์ด๋ ํ๋๋ฅผ ์์ฒ์ ์ผ๋ก ์ฐจ๋จํด์ deadlock์ ๋ค์ด๊ฐ์ง ๋ชปํ๊ฒ ํ๋ ๋ฐฉ๋ฒ
1. Mutual Exclusion (์ํธ๋ฐฐ์ )
๊ณต์ ํด์๋ ์๋๋ ์์์ ๊ฒฝ์ฐ ๋ฐฐ์ ํ ์ ์๋ ์กฐ๊ฑด์ ์๋ (ํ์ค์ ์ผ๋ก ๋ฌด๋ฆฌ)
2. Hold and Wait (์ ์ ์ ๋๊ธฐ)
ํ๋ก์ธ์ค๊ฐ ์์์ ์์ฒญํ ๋ ๋ค๋ฅธ ์ด๋ค ์์๋ ๊ฐ์ง๊ณ ์์ง ์์์ผ ํจ
๋ฐฉ๋ฒ 1) ํ๋ก์ธ์ค ์์ ์ ๋ชจ๋ ํ์ํ ์์์ ํ ๋น๋ฐ๊ฒ ํ๋ ๋ฐฉ๋ฒ (๋นํจ์จ์ )
๋ฐฉ๋ฒ 2) ์์์ด ํ์ํ ๊ฒฝ์ฐ ๋ณด์ ์์์ ๋ชจ๋ ๋๊ณ ๋ค์ ์์ฒญ
3. No Preemption (๋น์ ์ )
- ํ๋ก์ธ์ค๊ฐ ์ด๋ค ์์์ ๊ธฐ๋ค๋ ค์ผ ํ๋ ๊ฒฝ์ฐ ์ด๋ฏธ ๋ณด์ ํ ์์์ด ์ ์ ๋จ
- ๋ชจ๋ ํ์ํ ์์์ ์ป์ ์ ์์ ๋ ๊ทธ ํ๋ก์ธ์ค๋ ๋ค์ ์์๋๋ค
- ์์์ ์ด์ฉ ์ค์ธ ํ๋ก์ธ์ค๋ก๋ถํฐ ํด๋น ์์์ ๋นผ์์ ์ ์์
- State๋ฅผ ์ฝ๊ฒ saveํ๊ณ restoreํ ์ ์๋ ์์์์ ์ฃผ๋ก ์ฌ์ฉ. ์ฆ, ์ผ๋ถ ์์์ ๋ํด์๋ ํจ๊ณผ์ (CPU, memory)
4. Circular Wait (์ํ ๋๊ธฐ)
๋ชจ๋ ์์ ์ ํ์ ํ ๋น ์์๋ฅผ ์ ํ์ฌ ์ ํด์ง ์์๋๋ก๋ง ์์ ํ ๋น
ex) ์์๊ฐ 3์ธ ์์ Ri๋ฅผ ๋ณด์ ์ค์ธ ํ๋ก์ธ์ค๊ฐ ์์๊ฐ 1์ธ ์์ Rj๋ฅผ ํ ๋น๋ฐ๊ธฐ ์ํด์๋ ์ฐ์ Ri๋ฅผ releaseํด์ผ ํจ
deadlock ๋ฐ์ ์กฐ๊ฑด์ ์์ฒ์ ์ผ๋ก ์ ๊ฑฐํ์ฌ deadlock์ ์ฌ์ ์ ๋ฐฉ์งํ๋ ์๋ฐฉ ๋ฐฉ์์ ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ์ง ์์์ ๋ณด์ฅํ ์ ์์ง๋ง ์์ ์ด์ฉ๋ฅ (utilization)์ด ๋ฎ์์ง๊ธฐ ๋๋ฌธ์ ์ ์ฒด ์ฑ๋ฅ(throughput) ๋ํ ๊ฐ์ํ๋ฉฐ, starvation ๋ฌธ์ ๊ฐ ์๊ธด๋ค๋ ๋ถ์์ฉ์ด ์์ต๋๋ค.
Deadlock Avoidance
๊ต์ฐฉ ์ํ ํํผ๋ ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ์ง ์์ ์ ๋๋ก๋ง ์กฐ์ฌ ์กฐ์ฌ ์์์ ํ ๋นํ๋ ๋ฐฉ์์ ๋๋ค. ๊ต์ฐฉ ์ํ ํํผ ๋ฐฉ์์์๋ ๊ต์ฐฉ ์ํ๋ฅผ ํ์ ๋ ์์์ ๋ฌด๋ถ๋ณํ ํ ๋น์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๋ฌธ์ ๋ก ๊ฐ์ฃผํฉ๋๋ค.
- ์์ ์์ฒญ์ ๋ํ ๋ถ๊ฐ์ ๋ณด๋ฅผ ์ด์ฉํด์ ์์ ํ ๋น์ด deadlock์ผ๋ก ๋ถํฐ ์์ ํ์ง๋ฅผ ๋์ ์ผ๋ก ์กฐ์ฌํด์ ์์ ํ ๊ฒฝ์ฐ(safe state)์๋ง ํ ๋น
- ํ๋ก์ธ์ค๊ฐ ์์ ์์ฒญํ์ ๋ ๋ฐ๋๋ฝ ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ฉด ์ฌ๋ถ์ ์์์ด ์๋๋ผ๋ ํ ๋น X
- ๊ฐ์ฅ ๋จ์ํ๊ณ ์ผ๋ฐ์ ์ธ ๋ชจ๋ธ์ ํ๋ก์ธ์ค๋ค์ด ํ์๋ก ํ๋ ๊ฐ ์์๋ณ ์ต๋ ์ฌ์ฉ๋์ ๋ฏธ๋ฆฌ ์ ์ธํ๋๋ก ํ๋ ๋ฐฉ๋ฒ
- ์์คํ ์ด safe state์ ์์ผ๋ฉด -> no deadlock
- ์์คํ ์ด unsafe state์ ์์ผ๋ฉด -> possibility of deadlock
- Deadlock Avoidance๋ ์์คํ ์ด unsafe state์ ๋ค์ด๊ฐ์ง ์๋ ๊ฒ์ ๋ณด์ฅ
- 2๊ฐ์ง ๊ฒฝ์ฐ์ avoidance ์๊ณ ๋ฆฌ์ฆ(์์ ๋น ์ธ์คํด์ค๊ฐ ํ๋์ธ ๊ฒฝ์ฐ, ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ)
safe state
- ์์คํ ๋ด์ ํ๋ก์ธ์ค์ ๋ํ safe sequence๊ฐ ์กด์ฌ
safe sequence
- ํ๋ก์ธ์ค sequence <P1, P2, ... Pn> ์ด safe ํ๋ ค๋ฉด Pi ์ ์์ ์์ฒญ์ด '๊ฐ์ฉ์์ + ๋ชจ๋ Pj (j < i) ์ ๋ณด์ ์์' ์ ์ํด ์ถฉ์กฑ๋์ด์ผ ํจ
- ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ๋ค์ ๋ฐฉ๋ฒ์ผ๋ก ๋ชจ๋ ํ๋ก์ธ์ค์ ์ํ์ ๋ณด์ฅ
- Pi์ ์์ ์์ฒญ์ด ์ฆ์ ์ถฉ์กฑ๋ ์ ์์ผ๋ฉด ๋ชจ๋ Pj(j < i)๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค.
- Pi-1์ด ์ข ๋ฃ๋๋ฉด Pi์ ์์์์ฒญ์ ๋ง์กฑ์์ผ ์ํํ๋ค.
์์ ๋น ์ธ์คํด์ค๊ฐ ํ๋์ธ ๊ฒฝ์ฐ - Resource Allocation Graph Algorithm
์์ ํ ๋น ๊ทธ๋ํ์์ Claim Edge ๋ผ๋ ๊ฐ๋ ์ถ๊ฐ
Claim Edge
- ํ๋ก์ธ์ค๊ฐ ์์์ ๋ฏธ๋์ ์์ฒญํ ์ ์์์ ๋ปํจ (์ ์ ์ผ๋ก ํ์)
- ํ๋ก์ธ์ค๊ฐ ํด๋น ์์ ์์ฒญ ์ request edge(์ค์ )์ผ๋ก ๋ฐ๋
- ์์์ด release ๋๋ฉด assignment edge๋ ๋ค์ claim edge๋ก ๋ฐ๋
- ์ ์ ์ ํฌํจํ์ฌ cycle์ด ์๊ธฐ์ง ์๋ ๊ฒฝ์ฐ์๋ง ์์ฒญ ์์์ ํ ๋น
์์ ๋น ์ธ์คํด์ค๊ฐ ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ - Banker's Algorithm
๊ฐ์
- ๋ชจ๋ ํ๋ก์ธ์ค๋ ์์์ ์ต๋ ์ฌ์ฉ๋์ ๋ฏธ๋ฆฌ ๋ช ์
- ํ๋ก์ธ์ค๊ฐ ์์ฒญ ์์์ ๋ชจ๋ ํ ๋น๋ฐ์ ๊ฒฝ์ฐ ์ ํ ์๊ฐ ์์ ์ด๋ค ์์์ ๋ค์ ๋ฐ๋ฉํ๋ค
๋ฐฉ๋ฒ
- ๊ธฐ๋ณธ ๊ฐ๋ : ์์ ์์ฒญ ์ safe ์ํ๋ฅผ ์ ์งํ ๊ฒฝ์ฐ์๋ง ํ ๋น
- ์ด ์์ฒญ ์์์ ์๊ฐ ๊ฐ์ฉ ์์์ ์๋ณด๋ค ์ ์ ํ๋ก์ธ์ค๋ฅผ ์ ํ (๊ทธ๋ฐ ํ๋ก์ธ์ค๊ฐ ์๋ค๋ฉด unsafe ์ํ)
- (์ด ์์ฒญ ์์์ ์ <= ๊ฐ์ฉ ์์์ ์) ์ธ ํ๋ก์ธ์ค ์์ผ๋ฉด ํด๋น ํ๋ก์ธ์ค์๊ฒ ์์ ํ ๋น
- ํ ๋น๋ฐ์ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด ๋ชจ๋ ์์์ ๋ฐ๋ฉ
- ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ์ด๋ฌํ ๊ณผ์ ๋ฐ๋ณต
์์
- 5๊ฐ์ ํ๋ก์ธ์ค : P0~P4
- 3๊ฐ์ ์์ : A 10๊ฐ, B 5๊ฐ, C 7๊ฐ
- Allocation : ํ์ฌ ๊ฐ ํ๋ก์ธ์ค์ ํ ๋น๋ ์์
- Max : ๊ฐ ํ๋ก์ธ์ค๊ฐ ํ์ ์ฌ์ฉํ ์์
- Available : ๊ฐ์ฉ ์์
- Need : ๊ฐ ํ๋ก์ธ์ค๊ฐ ์์ผ๋ก ์ฌ์ฉํ ์์
- Need <= Available ์ด๋ฉด safe ์ํ์ด๋ฏ๋ก ์์ ํ ๋น
- safe sequence < P1 P3 P2 P4 P0 >์ด ์กด์ฌํ๋ฏ๋ก ์์คํ ์ safe state
- ํญ์ ์ต์ ์ ๊ฒฝ์ฐ ๊ณ ๋ ค (unsafe ์ํ๋ผ๋ฉด ํ ๋นx ๋ค๋ฅธ ํ๋ก์ธ์ค ์ข ๋ฃ ํ ์์ ๋ฐ๋ฉ๊น์ง ๋๊ธฐ)
- ์ ๋ ๋ฐ๋๋ฝ์ด ์๊ธธ ์๊ฐ ์์. but ์์์ด ๋จ๋๋ฐ๋ ์ต์ ์ ์ํฉ์ ๊ฐ์ ํ๊ณ ์์ ํ ๋น์ ์ํ๋ ๊ฒ์ ๋นํจ์จ์
Deadlock Detection and Recovery
Deadlock ๋ฐ์์ ํ์ฉํ๋ Deadlock Detiction Routine ์ ๋์ด์ Deadlock ๋ฐ๊ฒฌ ์ Recover์ํค๋ ๋ฐฉ๋ฒ์ผ๋ก, ๊ต์ฐฉ ์ํ ๋ฐ์์ ์ธ์ ํ๊ณ ์ฌํ์ ์กฐ์นํ๋ ๋ฐฉ์์ ๋๋ค.
Detection) ์์์ด ์ธ์คํด์ค ๋น ํ๋์ธ ๊ฒฝ์ฐ - ๊ทธ๋ํ ์ฌ์ฉ
Wait-for graph
- ์์ ํ ๋น ๊ทธ๋ํ์ ๋ณํ
- ํ๋ก์ธ์ค๋ง์ผ๋ก node ๊ตฌ์ฑ
- Pj๊ฐ ๊ฐ์ง๊ณ ์๋ ์์์ Pk๊ฐ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒฝ์ฐ Pk -> Pj
- Wait-for graph ์๊ณ ๋ฆฌ์ฆ
- Wait-for graph์ ์ฌ์ดํด์ด ์กด์ฌํ๋์ง๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์กฐ์ฌ (์ฌ์ดํด์ด ๊ณง deadlock์ ์๋ฏธ)
- O(n^2)
Detection) ์์์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ - Banker's Algorithm๊ณผ ์ ์ฌํ ๋ฐฉ๋ฒ ํ์ฉ
- Banker's ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋น์ทํ๋ ์ฌ๊ธฐ๋ ์ต์ ์ ์ํฉ ๊ฐ์
- ์์์ ํ์ฌ ์์ฒญํ๊ณ ์์ง ์์ ํ๋ก์ธ์ค๋ ํ ๋น๋ ์์์ ๋ฐ๋ฉํ ๊ฒ์ด๋ผ๊ณ ๋ณธ๋ค.
- Request <= (Available + Request 0 0 0) ์ด๋ฉด ์์ ํ ๋น
- But ์์์ ๋ฐ๋ฉํ๋ค๊ณ ํด๋ Request ๋ณด๋ค ์ ๊ฒ ๋ฐ๋ฉํ ์ ์์ผ๋ฏ๋ก Deadlock์ ๊ฐ๋ฅ์ฑ์ ์์
Recovery
Processs termination (์ข ๋ฃ)
๋ฐฉ๋ฒ 1) ๋ฐ๋๋ฝ์ ์ฐ๊ด๋ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ํ ๋ฒ์ ๋ชจ๋ ์ข ๋ฃ
๋ฐฉ๋ฒ 2) ์ฌ์ดํด ์์ด์ง ๋๊น์ง ๋ฐ๋๋ฝ ์ฌ์ดํด์ ์๋ ํ๋ก์ธ์ค๋ฅผ ํ๋์ฉ ์ข ๋ฃ์์ผ๋ณด๋ ๋ฐฉ๋ฒ
Resource Preemption (์์์ ๋นผ์์)
- ๋น์ฉ์ ์ต์ํํ victim ์ ์
- safe state๋ก rollbackํ์ฌ ํ๋ก์ธ์ค๋ฅผ restart
- Starvation ๋ฌธ์ ๊ฐ๋ฅ
๋์ผํ ํ๋ก์ธ์ค๊ฐ ๊ณ์ํด์ victim์ผ๋ก ์ ์ ๋๋ ๊ฒฝ์ฐ ๊ทธ ํ๋ก์ธ์ค๋ ๊ณ์ํด์ ์งํํ์ง ๋ชปํ ์ ์๊ธฐ ๋๋ฌธ์
๋น์ฉ์ ๊ณ ๋ ค ์์์ rollback ํ์ (์์์ ๋นผ์๊ธด ํ์) ๋ ๊ณ ๋ คํด์ ์์ ๋นผ์์ ํ๋ก์ธ์ค ์ ํด์ผ ํจ
Deadlock Ignorance
Deadlock์ด ์ผ์ด๋์ง ์๋๋ค๊ณ ์๊ฐํ๊ณ ์๋ฌด๋ฐ ์กฐ์น๋ ์ทจํ์ง ์๋(๋ฌด์) ๋ฐฉ๋ฒ์ ๋๋ค.
- Deadlock์ด ๋งค์ฐ ๋๋ฌผ๊ฒ ๋ฐ์ํ๋ฏ๋ก ๋ฐ๋๋ฝ์ ๋ํ ์กฐ์น ์์ฒด๊ฐ ๋ ํฐ overhead์ผ ์ ์์
- ๋ง์ฝ, ์์คํ ์ deadlock์ด ๋ฐ์ํ ๊ฒฝ์ฐ ์์คํ ์ด ๋น์ ์์ ์ผ๋ก ์๋ํ๋ ๊ฒ์ ์ฌ๋์ด ๋๋ ํ ์ง์ ํ๋ก์ธ์ค๋ฅผ ์ฃฝ์ด๋ ๋ฑ์ ๋ฐฉ๋ฒ์ผ๋ก ๋์ฒ
- UNIX, Windows ๋ฑ ๋๋ถ๋ถ์ ๋ฒ์ฉ OS๊ฐ ์ฑํ
'๐ฅ CS > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] ํ๋ก์ธ์ค ๋๊ธฐํ (2/2) (0) | 2023.06.08 |
---|---|
[์ด์์ฒด์ ] ํ๋ก์ธ์ค ๋๊ธฐํ (1/2) (0) | 2023.06.08 |
[์ด์์ฒด์ ] CPU ์ค์ผ์ค๋ง (0) | 2023.03.09 |
[์ด์์ฒด์ ] ์ค๋ ๋ (Thread) (0) | 2023.02.24 |
[์ด์์ฒด์ ] ํ๋ก์ธ์ค ๊ด๋ฆฌ (0) | 2023.02.16 |