DeadLock이란 프로세스가 자원을 얻지 못할 때 발생합니다. 프로세스가 서로 필요한 리소스 할당을 기다릴 때 데드락이 발생합니다.
Mutual Exclusion : 한개 자원은 비공유되어야 합니다.
Hold and Wait : 하나의 자원을 보유하고 다른 자원을 기다려야합니다.
No preemtion : 자원을 선점할 수 없고, 자원을 hold하고 있는 프로세스가 종료되어야 합니다.
Circular Wait : 자원할당 Cycle이 존재해야 합니다.
데드락 처리
- 교착상태 예방 및 회피
- 교착 상태 탐지 및 회복
- 교착 상태 무시
데드락 예방
- Mutual exclusion 부정
- Hold and wait 부정
- No preemption 부점
- Circular wait
자원 탐지
자원을 요청할 때 마다 탐지 알고리즘을 실행하면 오버헤드가 발생합니다.
데드락 회피하려면
- 프로세스에 필요한 필요한 각 유형의 최대 리소스를 서언합니다.
- 자원을 동적할당하여 대기 조건이 발생하지 않도록 합니다.
- 할당 상태는 자원의 수와 프로세스의 최대 요구에 의해 정의됩니다.
참조
[2] - https://includestdio.tistory.com/12
'개발 > 잡다개발' 카테고리의 다른 글
Synchronization Tools (0) | 2020.05.07 |
---|---|
Synchronization Examples (0) | 2020.05.07 |
OS - 2 (0) | 2020.05.05 |
OS (0) | 2020.05.05 |
하이젠버그(Heisenbugs) (0) | 2020.04.22 |