교착상태(Deadlock)

· 545 words · 2 minute read

교착 상태(Deadlock) 🔗

두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있기 때문에 아무 것도 완료되지 않는 상태를 가리킨다. 이 문제를 해결하는 일반적인 방법은 아직 없는 상태다.

교착 상태는 하나의 사다리에 두 명이 사람이 매달려 있는 상황을 예상할 수 있다. 위쪽의 사람은 아래로 내려오려고 하고 아래에 있는 사람은 위로 올라가려고 한다면 서로 상대방이 사다리에서 비켜줄 때까지 계속 기다리고 있을 것이고 결과적으로 아무도 사다리에서 내려오거나 올라가지 못하듯이 교착 상태란 다중 프로그래밍 환경에서 흔히 발생할 수 있는 문제이다.

교착 상태의 관리 🔗

교착 상태의 예방 🔗

1. 상호 배제 조건 제거 🔗

교착 상태는 두 개 이상의 프로세스가 공유자원을 사용할 때 발생하므로 공유 불가능한 조건을 제거하면 교착상태를 해결할 수 있다. (애초에 다른 프로세스가 대기상태로 빠지는 것을 방지)

2. 점유와 대기 조건 제거 🔗

한 프로세스에 수행되기 전에 모든 자원을 할당시키고 나서 점유하지 않을 때에는 다른 프로세스가 자원을 요구하도록 하는 방법이다. 자원 과다 사용으로 인한 비효율성, 프로세스가 요구하는 자원을 파악하는 데 드는 비용, 자원에 대한 내용을 저장 및 복원하는 비용, 기아 상태, 무한 대기 등의 문제점이 있다.

3. 비선점 조건 제거 🔗

비선점 프로세스에 대해 선점 가능한 프로토콜을 만들어 준다.

4. 환형 대기 조건 제거 🔗

자원 유형에 따라 순서를 할당한다.

출처 🔗