본문 바로가기
CS/운영체제

데드락(Dead-lock)

qbang 2021. 10. 4.

데드락

둘 이상의 프로세스가 자원을 획득하기 위해 기다리는데, 이 lock을 잡고 있는 프로세스도 똑같이 다른 lock을 기다리면서 서로 블럭 상태에 놓이는 것을 말한다. 데드락은 다수의 프로세스가 같은 lock을 동시에 다른 명령에 의해 획득하려 할 때 발생할 수 있다.

 

데드락 조건

1. 상호배제: 한 자원에 대한 여러 프로세스의 동시 접근이 불가능해야 한다.

2. 점유와 대기: 자원을 가지고 있는 상태에서 다른 프로세스가 사용하고 있는 자원의 반납을 기다려야 한다.

3. 비선점: 다른 프로세스의 자원을 강제로 가져올 수 없다.

4. 환형대기: 각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 갖고 있어야 한다.

 

데드락 해결 방법

1. 예방: 네 가지 조건 중 하나만을 해결한다.

2. 회피: 발생조건을 없애기보다 발생하지 않도록 알고리즘을 적용하는 것이다. 자원할당 그래프 알고리즘과 은행원 알고리즘이 있다.

3. 회복: 교착상태가 발생하는 것을 아예 막지 않고, 만약 교착상태가 발생하면 발생 이후에 문제를 해결하는 것이다.

4. 무시: 교착상태를 해결할 때도 context switch에 의한 오버헤드로 성능 저하가 생긴다. 해결할때의 성능 저하가 교착상태에 의한 성능 저하보다 더 큰 경우 그냥 무시한다.

 

'CS > 운영체제' 카테고리의 다른 글

가상메모리와 페이지 교체 알고리즘  (0) 2022.06.13
[동기, 비동기] X [블로킹, 논블로킹]  (0) 2021.10.04
프로세스와 스레드  (0) 2021.09.24

댓글