실제 시스템에서의 교착 상태

Windows의 교착 상태

Windows 운영 체제는 교착 상태를 예방하거나 회피하는 메커니즘을 사용하지 않습니다. 대신 프로그래머의 책임으로 간주하며, 스레드 간의 락 획득 순서를 신중하게 설계하도록 권장합니다. 교착 상태가 발생하면 사용자가 직접 시스템을 종료하고 다시 시작해야 합니다. Windows는 교착 상태를 처리하기 위한 별도의 기능을 제공하지 않습니다.


Linux의 교착 상태

Linux 커널도 교착 상태에 대한 특별한 처리 기능을 제공하지 않습니다. 개발자는 교착 상태가 발생하지 않도록 코드를 작성해야 합니다. Linux는 리소스 계층 구조(resource-hierarchy)를 적용하여 교착 상태를 예방하는 방법을 사용합니다. 즉, 락을 획득할 때 항상 동일한 순서를 따르도록 강제하여 순환 대기(circular wait) 조건을 제거합니다.


교착 상태와 데이터베이스

데이터베이스 시스템에서는 교착 상태가 빈번하게 발생할 수 있습니다. 예를 들어, 두 개의 트랜잭션이 서로 다른 순서로 데이터를 잠글 때 교착 상태가 발생할 수 있습니다.

  • 동시성 제어: 데이터베이스 시스템은 교착 상태를 처리하기 위해 다양한 동시성 제어 메커니즘을 사용합니다.

  • 교착 상태 탐지 및 회복: 대부분의 데이터베이스 시스템은 교착 상태를 예방하거나 회피하기보다는, 발생한 교착 상태를 탐지하고 회복하는 방법을 사용합니다.

Last updated