📖 WIPIVERSE

🔍 현재 등록된 정보: 23,512건

교착

교착(膠着, deadlock)은 두 개 이상의 경쟁 프로세스가 서로 상대방의 종료를 기다리면서 영구적으로 진행되지 못하는 상태를 말한다. 이는 각 프로세스가 필요한 자원을 점유하고 있으면서, 다른 프로세스가 점유하고 있는 자원을 기다리는 상황에서 발생한다. 즉, 순환 의존성(circular dependency)이 형성되어 어떤 프로세스도 진행할 수 없는 상태가 된다.

교착 상태는 다양한 시스템에서 발생할 수 있으며, 특히 병행 처리 시스템, 분산 시스템, 데이터베이스 시스템 등에서 자주 나타난다. 교착 상태가 발생하면 시스템 전체의 성능이 저하되거나 시스템이 완전히 마비될 수 있다.

필요 조건: 교착 상태 발생에는 네 가지 필요 조건이 있다. 이 네 가지 조건이 동시에 만족해야 교착 상태가 발생할 수 있다.

  • 상호 배타(Mutual Exclusion): 한 번에 하나의 프로세스만 자원을 사용할 수 있어야 한다.
  • 점유 및 대기(Hold and Wait): 적어도 하나의 자원을 점유하고 있으며, 다른 프로세스가 점유하고 있는 자원을 추가로 기다리고 있어야 한다.
  • 비선점(No Preemption): 프로세스가 자원을 점유하고 있다면, 다른 프로세스가 강제로 빼앗을 수 없어야 한다.
  • 순환 대기(Circular Wait): 프로세스의 집합이 순환적으로 서로의 자원을 기다리고 있어야 한다. 즉, 프로세스 P1이 P2가 점유한 자원을 기다리고, P2는 P3가 점유한 자원을 기다리고, ..., Pn은 P1이 점유한 자원을 기다리는 형태이다.

교착 상태 해결: 교착 상태를 해결하는 방법은 크게 예방, 회피, 탐지 및 복구의 세 가지 전략으로 나눌 수 있다.

  • 예방(Prevention): 네 가지 필요 조건 중 하나 이상을 제거하여 교착 상태를 사전에 방지하는 방법이다.
  • 회피(Avoidance): 교착 상태가 발생할 가능성이 있는 상황을 미리 감지하고 회피하는 방법이다. 대표적인 알고리즘으로 은행가 알고리즘(Banker's algorithm)이 있다.
  • 탐지 및 복구(Detection and Recovery): 교착 상태가 발생했는지 탐지하고, 발생했을 경우 시스템을 복구하는 방법이다. 복구 방법으로는 프로세스 종료, 자원 선점 등이 있다.

교착 상태는 시스템 설계 및 운영에 있어 중요한 문제이며, 효율적인 시스템 운영을 위해 적절한 교착 상태 관리 전략을 수립해야 한다.