데드락이란?
데드락이란 교착상태라는 것을 의미합니다. 4가지 조건이 충족하면 데드락 상태가 생길 수 있습니다.
데드락의 4가지 조건
상호배제
하나의 프로세스가 사용하고 있는 자원을 점유하고 사용하여, 다른 프로세스가 사용을 못할 때
점유와 대기
하나의 프로세스가 이미 자원을 점유하고있으며, 추가로 다른 자원을 사용 하기 위해 대기하고 있음
비선점
자원을 점유하고 있는 프로세스는, 자신이 끝날 떄 까지 점유하고 있는 자원을 내려놓지 않음
환형대기
프로세스가 원형을 이루며 서로 상호에게 사앧의 자원을 요구하는 경우
데드락 해결 방법
예방
사전 차단
프로세스가 자원을 요청 할 때 데드락이 발생할 가능성이 있는지를 판단하여, 위험이 있는 프로세스에겐 주어주지 않음
탐색 및 복구
데드락이 발생한것을 확인한다면, 데드락 상태가 풀릴때까지 하나씩 프로세스를 종료합니다. 이때 비용이 가장 적은 프로세스를 죽이는것이 원칙
그러나 데드락이 발생 했는지 안했는지 판단하는 것또한 os의 역할임으로, 이것을 진행하면 오버헤드가 커져서 효율적이지 못함.
무시
데드락상황을 판단하고, 데드락을 해결하는데에는 많은 자원이 소모됨으로 데드락 검사를 하지 않는다.
데드락 자체가 많이 발생하는 문제는 아니기 때문에.
그러나 이를 위해 예방을 더 철저히 해야 한다.