Skip to content

Commit 2a103a0

Browse files
authored
Create Deadlock.md
1 parent 6a077a2 commit 2a103a0

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

Deadlock.md

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# Deadlock(교착상태)
2+
프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태
3+
4+
## Deadlock 발생조건
5+
- 상호배제
6+
````
7+
- 자원에 대한 동시접근 불가
8+
- 자원은 한 번에 한 프로세스만 사용할 수 있다
9+
````
10+
- 점유대기
11+
````
12+
- 프로세스는 최소한 하나의 자원을 점유하고 있고, 다른 프로세스가 점유하고 있는 자원을 기다린다
13+
````
14+
- 비선점
15+
````
16+
- 다른 프로세스가 이미 점유한 자원을 강제로 뺏어오지 못함
17+
- 우선권이 있다
18+
````
19+
- 순환대기
20+
````
21+
- 프로세스 집합 {P0, P1, P2, ... , Pn} 이 있을 때, P0 이 P1 을 기다리고, P1 이 P2 를 기다리고,
22+
결국 Pn 이 P0 를 기다리게 되는 환형 형태를 이루게 될 때
23+
- 결국 내가 일을 하기 위해 내가 일을 끝 마쳐야 하는 모순적인 상황
24+
````
25+
26+
## Deadlock 해결 방법
27+
28+
#### 1. Deadlock 예방
29+
위의 4 가지 조건 중 하나라도 발생하지 않으면 데드락은 발생하지 않는다.
30+
그러므로 그 중 하나라도 발생하지 않도록 시스템 차원에서 막아버리면 해결된다. <br>
31+
그러나 이 방법은 자원이 낭비 되는 경향이 있다.
32+
33+
#### 2. Deadlock 회피
34+
교착상태의 원칙적인 발생 가능성은 그냥 냅두고, 발생을 막는 알고리즘을 적용해서 해결 하는 방법<br>
35+
- 은행원 알고리즘(프로세스가 자원을 요구하는 시점에 자원을 할당해도 안전한지를 검사하여 데드락을 막는 방법)
36+
- 자원할당 그래프
37+
38+
#### 3. 데드락 무시
39+
무시해도 좋을 확률로 데드락이 발생한다고 판단되면 그냥 무시한다. 데드락문제는 해결하려면 성능상 트레이드오프가 발생한다.
40+
안정성과 성능을 고려해서 데드락 문제를 해결할지 말지를 정한다.

0 commit comments

Comments
 (0)