Deadlock Problem
1) Deadlock : ์ผ๋ จ์ ํ๋ก์ธ์ค๋ค์ด ์๋ก๊ฐ ๊ฐ์ง SW/HW ์์์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ block๋ ์ํ
2) Resource : HW, SW ๋ฑ์ ํฌํจํ๋ ๊ฐ๋
- I/O device, CPU cycle, memory space, semaphore ๋ฑ
- ์์ ์ฌ์ฉ ์ ์ฐจ : Request(์์ฒญ) > Allocate(ํ ๋น) > Use(์ฌ์ฉ) > Release(๋ฐ๋ฉ)
Deadlock์ด ๋ฐ์ํ๋ 4๊ฐ์ง ์กฐ๊ฑด๐ฅ
1) Mutual Exclusion(์ํธ ๋ฐฐ์ ) : ๋งค ์๊ฐ ํ๋์ ํ๋ก์ธ์ค๋ง์ด ์์์ ์ฌ์ฉํ ์ ์์
2) No preemption(๋น์ ์ ) : ํ๋ก์ธ์ค๋ ์์์ ์ค์ค๋ก ๋ด์ด๋์ ๋ฟ, ๊ฐ์ ๋ก ๋นผ์๊ธฐ์ง ์์
3) Hold and wait(๋ณด์ ๋๊ธฐ) : ์์์ ๊ฐ์ง ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ์์์ ๊ธฐ๋ค๋ฆด ๋, ๋ณด์ ์์์ ๋์ง ์๊ณ ๊ณ์ ๊ฐ์ง๊ณ ์์ ์ ์์
4) Circular wait(์ํ๋๊ธฐ) : ์์์ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค ๊ฐ์ ์ฌ์ดํด์ด ํ์ฑ๋์ด์ผ ํจ
Resource-Allocation graph(์์ํ ๋น๊ทธ๋ํ)
ํ๋ก์ธ์ค->์์ : ํ๋ก์ธ์ค๊ฐ ์์์ ์์ฒญํ์๊ณ , ์์ง ์์ ์ป์ง ๋ชปํจ
์์->ํ๋ก์ธ์ค : ์์์ด ํด๋น ํ๋ก์ธ์ค์๊ฒ ํ ๋น๋จ
* ๊ทธ๋ํ์ cycle์ด ์์ผ๋ฉด deadlock์ด ์๋๋ค!
* ๊ทธ๋ํ์ cycle์ด ์์ผ๋ฉด
1) ์์ ๋น ์ธ์คํด์ค๊ฐ ํ๋๋ฐ์ ์์ผ๋ฉด, ๋ฌด์กฐ๊ฑด deadlock
2) ์์ ๋น ์ธ์คํด์ค๊ฐ ์ฌ๋ฌ ๊ฐ ์์ผ๋ฉด, deadlock์ผ ์ ์์!
Deadlock์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
1) ์ฌ์ ๋ฐฉ์ง
(1) Deadlock Prevention : ์์ ํ ๋น ์ deadlock์ 4๊ฐ์ง ํ์ ์กฐ๊ฑด ์ค ์ด๋ ํ๋๊ฐ ๋ง์กฑ๋์ง ์๋๋ก ํ๋ ๊ฒ
(2) Deadlock Avoidance : deadlock์ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ์๋ง ์์์ ํ ๋น(์์คํ state๊ฐ ์๋ state๋ก ๋์์ฌ ์ ์๋ ๊ฒฝ์ฐ์๋ง ์์ ํ ๋น)
2) Deadlock Detection & Recovery
3) Deadlock Ignorance : deadlock์ ์์คํ ์ด ์ฑ ์์ง์ง ์์, ๋๋ถ๋ถ์ OS๊ฐ ์ฑํ
* deadlock์ ์์ฃผ ์ผ์ด๋๋ ์ด๋ฒคํธ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋๋นํ๋ ๊ฒ ์์ฒด๊ฐ large overhead
1. Deadlock Prevention
์ฌ์ ์ ๋ชจ๋ deadlock์ ๋ฐฉ์งํ๊ธฐ ๋๋ฌธ์ utilization ์ ํ, throughput ๊ฐ์, starvation ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ
1) Mutual Exclusion(์ํธ ๋ฐฐ์ ) : ๊ณต์ ํด์๋ ์๋๋ ์์์ ๊ฒฝ์ฐ ๋ฐ๋์ ์ฑ๋ฆฝํด์ผ ํจ (๊ทธ๋ฌ๋ ์ค์ ๋ก๋ ์ฑ๋ฆฝํ๊ธฐ ์ด๋ ค์)
2) Hold and wait(๋ณด์ ๋๊ธฐ) : ํ๋ก์ธ์ค๋ ์์์ ์์ฒญํ ๋ ๋ค๋ฅธ ์์๋ ๊ฐ์ง๊ณ ์์ง ์์์ผ ํ๋ค
- ํ๋ก์ธ์ค ์์ ์ ํ์ํ ๋ชจ๋ ์์์ ํ ๋น๋ฐ๋ ๋ฐฉ๋ฒ - ์์์ด ๋ญ๋น๋ ์ ์์
- ์์์ด ํ์ํ ๊ฒฝ์ฐ ๋ณด์ ํ ์์์ ๋ชจ๋ ๋์ด๋๊ณ ๋ค์ ์์ฒญ(์์ง๋ฐ๋ฉ)
3) No preemption(๋น์ ์ ) : process๊ฐ ๋๊ธฐ์ํ์ธ ๊ฒฝ์ฐ ๋ณด์ ํ ์์ ๋บ๊ธธ ์ ์์(๊ฐ์ )
- ์ฌ์ฉ ์ํ๋ฅผ ์ฝ๊ฒ save & restoreํ ์ ์๋ ์์์์ ์ฃผ๋ก ์ฌ์ฉ(CPU, memory)
4) Circular wait(์ํ๋๊ธฐ) : ๋ชจ๋ ์์ ์ ํ์ ํ ๋น ์์๋ฅผ ์ ํ์ฌ ์์๋๋ก ์์ ํ ๋น
2. Deadlock Avoidance
ํญ์ safe state๋ฅผ ์ ์ง
ํ๋ก์ธ์ค๊ฐ ์์๋ ๋, ํ์๋ก ํ๋ ๊ฐ ์์์ ์ต๋ ์ฌ์ฉ๋์ ๋ฏธ๋ฆฌ ์ ์ธํ๋๋ก ํจ
* safe state : ์์คํ ๋ด์ ํ๋ก์ธ์ค๋ค์ ๋ํ safe sequence๊ฐ ์กด์ฌํ๋ ์ํ
* safe sequence : ํ๋ก์ธ์ค์ ์์ ์์ฒญ์ด <๊ฐ์ฉ ์์ + ๋ชจ๋ ํ๋ก์ธ์ค์ ๋ณด์ ์์>์ ์ํด ์ถฉ์กฑ๋์ด์ผ ํจ
1) ์์ ๋น ์ธ์คํด์ค๊ฐ ํ๋์ธ ๊ฒฝ์ฐ : Resource Allocation Graph ์ฌ์ฉ
2) ์์ ๋น ์ธ์คํด์ค๊ฐ ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ : Banker's Algorithm ์ฌ์ฉ
(1) Resource Allocation Graph Algorithm
์ต์ ์ ์ํฉ์ ๊ฐ์ - ๊ฐ๋ฅํ ์์์ด ์๋ค๊ณ ํด์ ๋ค ๋ด์ด์ฃผ์ง ์๋๋ค
์ค์ : ํ๋ก์ธ์ค๊ฐ ํด๋น ์์์ ์์ฒญํ๋ค.
์ ์ : ํ๋ก์ธ์ค๊ฐ ํด๋น ์์์ ์์ฒญํ ์ผ์ด ์๋ค
(2) Banker's Algorithm
Need๊ฐ Available๋ก ์ถฉ์กฑ์ด ๋๋ ๊ฒฝ์ฐ ์์์ ํ ๋น
- Allocation : ํ๋ก์ธ์ค์๊ฒ ํ ๋น๋ ์์๋
- Max : ํ๋ก์ธ์ค๊ฐ ํ์๋ก ํ๋ ์์์ ์ต๋ ์ฌ์ฉ๋
- Available : ๊ฐ์ฉ ์์๋
- Need : ์ถ๊ฐ ์์ฒญ ๊ฐ๋ฅ๋
P1์ด need ๋ง์กฑ -> P1 ์ข ๋ฃํ๋ฉด์ allocation + need ๋ฐํ (available ์ฆ๊ฐ)
-> P3์ด need ๋ง์กฑ -> P3 ์ข ๋ฃํ๋ฉด์ allocation + need ๋ฐํ (available ์ฆ๊ฐ) ...
3. Deadlock Detection & Recovery
[ Deadlock Detection ]
1) ์์ ๋น ์ธ์คํด์ค๊ฐ ํ๋์ธ ๊ฒฝ์ฐ : Resource Allocation Graph / Wait-for graph ์ฌ์ฉ
- wait-for graph : ํ๋ก์ธ์ค๋ง์ผ๋ก node๋ฅผ ๊ตฌ์ฑํ๋ค
- ํ๋ก์ธ์ค๊ฐ n๊ฐ ์๋ ๊ฒฝ์ฐ, ๊ฐ ํ๋ก์ธ์ค์ ๋ํ ํ์ดํ๋ ์ต๋ (n-1)๊ฐ ์กด์ฌํ ์ ์๋ค - ํ์ ์๊ฐ O(n^2)
2) ์์ ๋น ์ธ์คํด์ค๊ฐ ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ : Banker's Algorithm ์ฌ์ฉ
- Allocation : ํ๋ก์ธ์ค์๊ฒ ํ ๋น๋ ์์๋
- Request : ํ์ฌ ํ๋ก์ธ์ค๊ฐ ์์ฒญํ ์์๋
- Available : ๊ฐ์ฉ ์์๋
* ๋๊ด์ ๊ฐ์ : ํ์ฌ Request๊ฐ 0์ธ ๊ฒฝ์ฐ, Allocation์ ๋ฐ๋ฉํ ๊ฒ์ด๋ผ๊ณ ๊ฐ์
1) ํ์ฌ Request๊ฐ 0์ธ ๊ฒฝ์ฐ ๊ฐ์ฉ ์์์ ํด๋น ํ๋ก์ธ์ค์ ์์ ํฌํจ
2) ๊ฐ์ฉ ์์์ผ๋ก Request ์ฒ๋ฆฌํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋์ง ํ์ธ
- ๋ชจ๋ Request๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค๋ฉด deadlock ๋ฐ์
[ Deadlock Recovery ]
1) Process Termination(ํ๋ก์ธ์ค ์ข ๋ฃ)
- deadlock์ ์ฐ๋ฃจ๋ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ abort
- deadlock์ด ์์ด์ง ๋๊น์ง deadlock์ ์ฐ๋ฃจ๋ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ํ๋์ฉ abortํด๋ด
2) Resource Preemption(์์ ๋บ๊ธฐ)
- ๋น์ฉ์ ์ต์ํํ victim์ ์ ์ - safe state๋ก rollbackํ์ฌ ํ๋ก์ธ์ค restart
- starvation ๋ฌธ์ : ๋์ผํ ํ๋ก์ธ์ค๊ฐ ๊ณ์ํด์ victim์ผ๋ก ์ ์ ๋๋ ๊ฒฝ์ฐ - rollback ํ์๋ ํจ๊ป ๊ณ ๋ คํด์ผ ํ๋ค
4. Deadlock Ignorance
Deadlock์ด ์ผ์ด๋์ง ์๋๋ค๊ณ ์๊ฐํ๊ณ ์๋ฌด๋ฐ ์กฐ์น๋ ์ทจํ์ง ์๋ ๋ฐฉ๋ฒ
Deadlock์ด ๋งค์ฐ ๋๋ฌผ๊ฒ ๋ฐ์ํ๋ฏ๋ก deadlock์ ๋ํ ์กฐ์น ์์ฒด๊ฐ ๋ ํฐ overhead์ผ ์ ์์
'๐ป CS > ์ด์์ฒด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ด์์ฒด์ ] 9. Virtual Memory (0) | 2023.01.22 |
---|---|
[์ด์์ฒด์ ] 8. Memory Management (1) | 2023.01.08 |
[์ด์์ฒด์ ] 6. Process Synchronization (0) | 2022.12.25 |
[์ด์์ฒด์ ] 5. CPU Scheduling (0) | 2022.11.27 |
[์ด์์ฒด์ ] 4. Process Management (0) | 2022.11.27 |
๋๊ธ