개발/잡다개발

Deadlock

----___<<<<< 2020. 5. 7. 01:10

 

DeadLock이란 프로세스가 자원을 얻지 못할 때 발생합니다. 프로세스가 서로 필요한 리소스 할당을 기다릴 때 데드락이 발생합니다.

 

Mutual Exclusion : 한개 자원은 비공유되어야 합니다.

Hold and Wait : 하나의 자원을 보유하고 다른 자원을 기다려야합니다.

No preemtion : 자원을 선점할 수 없고, 자원을 hold하고 있는 프로세스가 종료되어야 합니다.

Circular Wait : 자원할당 Cycle이 존재해야 합니다.

 

데드락 처리

 

- 교착상태 예방 및 회피

- 교착 상태 탐지 및 회복

- 교착 상태 무시

 

데드락 예방

 

- Mutual exclusion 부정

- Hold and wait 부정

- No preemption 부점

- Circular wait

 

자원 탐지 

 

자원을 요청할 때 마다 탐지 알고리즘을 실행하면 오버헤드가 발생합니다.

 

데드락 회피하려면

- 프로세스에 필요한 필요한 각 유형의 최대 리소스를 서언합니다.

- 자원을 동적할당하여 대기 조건이 발생하지 않도록 합니다.

- 할당 상태는 자원의 수와 프로세스의 최대 요구에 의해 정의됩니다.

 

 

 

 

 

 

 

 

 

 

참조

[1] - https://m.blog.naver.com/PostView.nhn?blogId=klp0712&logNo=220882240603&proxyReferer=https:%2F%2Fwww.google.com%2F

[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