[Week4]

정진범·2025년 4월 3일

데드락이란?

데드락(Deadlock) 또는 교착 상태는 운영체제에서 발생할 수 있는 문제로, 둘 이상의 프로세스가 서로 자원을 점유하고 있으며, 각 프로세스가 다른 프로세스가 점유한 자원을 기다리면서 무한 대기 상태에 빠지는 현상을 말합니다.

데드락의 발생 조건

데드락이 발생하려면 다음 네 가지 조건이 동시에 성립해야 합니다.

상호 배제(Mutual Exclusion)

  • 자원은 한 번에 하나의 프로세스만 사용할 수 있어야 합니다.

점유와 대기(Hold and Wait)

  • 최소한 하나의 자원을 보유한 상태에서 다른 자원을 추가로 요청하며 대기하는 프로세스가 존재해야 합니다.

비선점(Non-Preemption)

  • 이미 할당된 자원을 강제로 빼앗을 수 없어야 합니다. 자원은 사용 중인 프로세스가 스스로 반환할 때까지 기다려야 합니다.

순환 대기(Circular Wait)

  • 자원을 기다리는 프로세스들 간에 순환적인 대기 관계가 형성되어야 합니다. 예를 들어, 프로세스 A는 B의 자원을 기다리고, B는 C의 자원을 기다리며, C는 다시 A의 자원을 기다리는 상황입니다.

데드락 해결 방법

데드락을 해결하거나 방지하기 위해 다음과 같은 방법이 사용됩니다

예방(Prevention)

  • 데드락 발생 조건 중 하나 이상을 제거하여 데드락을 방지합니다.

  • 상호 배제 방지: 여러 프로세스가 동시에 자원을 공유하도록 허용.

  • 점유와 대기 방지: 모든 필요한 자원을 한 번에 요청하도록 강제.

  • 비선점 방지: 이미 할당된 자원도 강제로 회수 가능하게 설정.

  • 순환 대기 방지: 자원의 요청 순서를 정해 순환 관계를 없앰.

회피(Avoidance)

  • 시스템이 항상 안전 상태(Safe State)에 있도록 자원 할당을 동적으로 관리합니다.
  • 대표적인 알고리즘: 은행원 알고리즘(Banker's Algorithm), 이를 통해 데드락 가능성을 사전에 분석하여 안전한 경우에만 자원을 할당합니다.

탐지 및 복구(Detection and Recovery)
데드락이 발생했음을 탐지하고 이를 해결합니다.

  • 탐지: 자원 할당 그래프나 타임아웃 방식으로 데드락 여부를 확인.
  • 복구: 교착 상태에 있는 프로세스를 종료, 특정 프로세스로부터 자원을 선점하여 다른 프로세스에 할당.

무시(Ignorance)

  • 데드락이 드물게 발생한다고 가정하고 특별한 조치를 취하지 않는 방법입니다. 이는 주로 사용자 개입으로 문제를 해결할 수 있는 환경에서 사용됩니다.

데드락은 시스템 효율성을 저하시킬 수 있는 심각한 문제이므로, 예방과 회피 전략을 통해 사전에 방지하거나 탐지 및 복구 메커니즘을 통해 해결하는 것이 중요합니다.

profile
열정적인 개발자

0개의 댓글