Deadlock
Deadlock 예방 방법
Deadlock 발생을 방지하는 주요 전략은 Deadlock의 네 가지 필수 조건 중 하나 이상을 무력화하는 것이다.
상호 배제 조건 방지
- 가능한 경우, 자원을 공유하도록 설계하여 상호 배제를 최소화한다.
- 단점: 많은 자원들은 공유할 수 없어, 이 방법은 항상 적용하기 어렵다.
점유 대기 조건 방지
- 프로세스가 실행을 시작하기 전에 필요한 모든 자원을 한 번에 요청하고 할당받도록 한다.
- 단점: 자원의 낭비와 시스템의 처리율 저하를 초래할 수 있다.
비선점 조건 방지
- 이미 할당된 자원을 필요할 때 다른 프로세스에게 선점당할 수 있도록 허용한다.
- 방법: 선점 가능 자원 사용으로 변경함으로써, 프로세스가 다른 자원을 기다리는 동안 자원을 선점당할 수 있게 한다.
순환 대기 조건 방지
- 모든 자원에 대해 순서를 부여하고, 프로세스가 번호가 높은 자원을 요청할 때는 이미 보유 중인 자원보다 높은 번호의 자원만 요청할 수 있도록 한다.
- 방법: 이는 순환 대기 체인의 형성을 방지한다.
현대 OS에서 Deadlock 처리 미흡의 이유
현대의 운영 체제는 다음과 같은 이유로 Deadlock 발생을 완전히 방지하거나 해결할 수 있는 완벽한 메커니즘을 제공하지 않는다:
자원의 비효율적 사용
- Deadlock 예방 기법들은 종종 자원의 비효율적 사용을 초래하며, 이는 시스템 성능에 부정적 영향을 미친다.
오버헤드 증가
- Deadlock 감지 및 복구 기법은 추가적인 시스템 오버헤드를 발생시키며, 이는 시스템의 전반적인 성능 저하로 이어질 수 있다.
Deadlock 발생 빈도
- 실제 시스템에서 Deadlock이 발생하는 빈도는 상대적으로 낮으며, 대부분의 애플리케이션과 시스템은 Deadlock 상황에 빠지지 않도록 설계되어 있다.
Wait Free와 Lock Free 비교
Lock Free
- 시스템의 어떤 스레드도 무한히 진행을 막히지 않음을 보장한다.
- 하나의 스레드가 중단되거나 지연되어도, 다른 스레드들은 계속해서 진행될 수 있다.
- 단점: 모든 스레드가 동시에 진행될 것을 보장하지 않는다.
Wait Free
- 시스템 내의 모든 스레드가 유한한 단계 내에서 진행될 것을 보장한다.
- 이는 Lock Free보다 더 강력한 보장을 제공하며, 모든 스레드가 지연 없이 계속해서 작업을 완료할 수 있음을 의미한다.
- 단점: 구현이 복잡하고 요구하는 계산 비용이 더 높을 수 있다.