CS 공부 & 면접 맛보기 0x0D [운영체제] : 데드락(Deadlock)

2025. 1. 15. 23:00코딩 도구/CS 면접 도구

반응형

데드락(Deadlock)

질문

데드락(Deadlock)이란 무엇인가요?

면접 답변

데드락(Deadlock)은 둘 이상의 프로세스가 자원을 점유한 상태에서, 서로 상대방의 자원을 요구하며 무한정 기다리는 교착 상태를 의미합니다.
데드락은 다중 프로세스 환경에서 자원 할당이 비효율적으로 이루어질 때 발생할 수 있으며, 프로그램의 실행이 중단되는 심각한 문제가 될 수 있습니다.


데드락의 4가지 필요 조건

데드락이 발생하기 위해서는 다음 4가지 조건이 모두 만족되어야 합니다:

1. 비선점(Non-preemptive)

  • 이미 할당된 자원은 강제로 빼앗을 수 없습니다.
  • 한 번 할당된 자원은 사용이 끝날 때까지 다른 프로세스가 사용할 수 없습니다.

2. 순환 대기(Circular Wait)

  • 두 개 이상의 프로세스가 자원을 기다릴 때, 각 프로세스가 순환적으로 서로의 자원을 기다리는 상태입니다.
  • 예를 들어, P1 → P2 → P3 → P1의 관계가 형성되는 경우입니다.

3. 점유 대기(Hold & Wait)

  • 프로세스가 이미 자원을 점유한 상태에서 추가 자원을 요청할 때 발생합니다.
  • 기존에 할당받은 자원을 놓지 않고, 새로운 자원이 할당되기를 기다립니다.

4. 상호 배제(Mutual Exclusion)

  • 특정 자원은 한 번에 하나의 프로세스만 사용할 수 있습니다.
  • 예를 들어, 프린터와 같은 자원은 한 번에 하나의 프로세스만 접근 가능합니다.

결론

  • 데드락은 비선점, 순환 대기, 점유 대기, 상호 배제의 네 가지 조건이 모두 만족될 때 발생합니다.
  • 데드락 해결 방법과 방지 전략은 다음 글에서 자세히 다루겠습니다.
반응형