😀 Jerry/면접 질문

[1분 면접] 교착 상태에 대해서 설명해주세요.

Jerry_K 2025. 4. 8. 12:05

 

📌 면접 답변

교착상태는 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있어 결과적으로 아무것도 완료되지 못하는 상태를 의미한다. 예를들어 프로세스 A는 자원 A를 갖고 자원 B를 원하고, 프로세스 B는 자원 B를 갖고 자원 A를 원할때 , 두개의 프로세스는 교착 상태에 빠져 어느 작업도 진행 할 수 없는 상황이 된다. 

 

 

 

 

교착 상태 발생하는 조건

  • 상호 배제 : 자원에 대해 독자적 제어권 을 주장
  • 점유 대기 : 자원을 할당 받은 상태에서, 다른 자원을 할당 받기를 기다리는 상태
  • 비선점 : 자원을 강제로 뺏을 수 없음
  • 순환(원형) 대기 : 사이클 형태로 자원 대기 

 

교착 상태  해결 방법

1. 락 획득 순서 고정

synchronized (lock1) {
    synchronized (lock2) {
        // 순서 고정
    }
}
  • 항상 같은 순서로 락을 걸도록 강제

 

2. 타임아웃 기반 락

  • 일정 시간 안에 락을 못 얻으면 포기 

 

3. 락 최소화 및 회피 

  • 가능하면 락을 사용하지 않도록 설계

 

4. 교착 상태 감지 후 대응


📌 내 답변

교착 상태는 동시성을 제어하기 위한 락 때문에 발생합니다. 

서로가 서로의 자원이 필요하지만, 양보되기만을 무한정 기다리는 상대로 Dead Lock이 발생합니다.

 

교착상태의 발생 조건에는 4가지가 있습니다. 아래의 4가지 조건이 모두 충족해야 교착상태가 발생합니다.

1. 각 트랜잭션이 서로 원하는 자원을 가지는 경우

2. 비선점 

3. 자원 요구가 사이클 형식으로 되어 있는 경우

4. ??? 

 

Self Feedback

  • 교착 상태 발생 조건 4가지가 기억나지 않음 ... 
  • 해결 방법도 기억이 나지 않음

[출처 및 참고 자료]

https://www.maeil-mail.kr/question/141

 

매일메일 - 기술 면접 질문 구독 서비스

기술 면접 질문을 매일매일 메일로 보내드릴게요!

www.maeil-mail.kr