CS

Deadlock [CS]

PON_Z 2022. 12. 14. 23:12

- Deadlock이란 두 개 이상의 프로세스가 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며, 서로의 작업이 끝나기만을 기다리는 것이 영원히 끝나지 않는 상황을 말한다. 

Deadlock

- Deadlock은 4가지의 발생조건이 있다. 4가지 조건이 모두 만족해야 발생할 가능성(무조건 발생하는 것 아님)이 있으며, 하나라도 만족하지 않으면 Deadlock이 발생하지 않는다.

(1) 상호 배제(Mutual Exclusion) : 한 자원에 대한 여러 프로세스 동시 접근 불가

(2) 점유 대기(Hold and Wait) : 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다림

(3) 비선점(No Preemption) : 프로세스는 다른 프로세스의 자원을 강제로 가져올 수 없음

(4) 순환 대기(Circular Wait) : 각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있음

 

 

- Deadlock을 해결하기 위한 방법은 4가지가 있다.

(1) 예방(Prevention) : Deadlock의 발생 조건 중 하나만 해결해도 Deadlock이 발생하지 않음

      => 하지만 예방 방법은 시스템 처리량이나 자원 사용의 효율성이 떨어질 수 있음

(2) 회피(Avoidance) : Deadlock 발생 조건을 없애기 보다 발생하지 않도록 알고리즘을 적용 ex) 은행원 알고리즘

     => 하지만 프로세스가 요구하는 최대 자원수를 알아야 하는등 많은 어려움이 있음

(3) 탐지 및 복구(Detection & Recovery) : Deadlock 발생 여부를 탐색하여 발생시 복구

     => 하지만 지속적으로 교착 상태를 확인하는 작업이 필요하기 때문에 오버헤드 발생

(4) 무시 : Deadlock이 드물게 일어난다면 데드락을 해결하기 위해 사용하는 비용이 더 커짐

    => 데드락이 발생할 경우 프로세스를 재실행해 해결 (현실적)

 

 

 

ref) https://cocoon1787.tistory.com/858

728x90

'CS' 카테고리의 다른 글

Data Governance [CS]  (0) 2022.12.19
Index & B-Tree [CS]  (0) 2022.12.14
Process & Thread[CS]  (0) 2022.12.14
ORM [CS]  (0) 2022.12.14
MSA [CS]  (0) 2022.12.14