IT 이론지식

교착상태(Deadlock)

쥐PT 2024. 4. 2. 12:15
728x90
반응형
SMALL

교착상태(Deadlock)는 컴퓨터 과학 및 운영체제에서 발생하는 중요한 문제 중 하나로, 두 개 이상의 프로세스나 스레드가 서로 상대방의 자원을 기다리면서 무한정 대기 상태에 빠지는 상황을 말합니다. 이러한 상태에서는 어떤 프로세스나 스레드도 전진할 수 없으며, 시스템이 먹통이 되어 작업이 완료되지 않는 문제가 발생할 수 있습니다.

교착상태 (출처 : https://ko.wikipedia.org/wiki/%EA%B5%90%EC%B0%A9_%EC%83%81%ED%83%9C#/media/%ED%8C%8C%EC%9D%BC:Process_deadlock.svg)

교착상태가 발생하는 조건:

  1. 상호배제(Mutual Exclusion): 한 자원이 한 번에 하나의 프로세스에 의해서만 사용될 수 있는 상황이 필요합니다. 다시 말해, 자원을 한 번에 하나의 프로세스만 사용할 수 있어야 합니다.
  2. 보유 및 대기(Hold and Wait): 프로세스가 이미 할당된 자원을 가지고 있는 상태에서 다른 자원을 기다리는 경우입니다. 즉, 하나 이상의 자원을 보유하고 있으면서 다른 프로세스가 점유한 자원을 기다리는 상황입니다.
  3. 비선점(No Preemption): 다른 프로세스가 자원을 강제로 빼앗아 사용할 수 없는 상황입니다. 자원은 해당 프로세스가 명시적으로 자원을 반납하기 전까지는 그 프로세스에 의해서만 해제될 수 있어야 합니다.
  4. 순환 대기(Circular Wait): 프로세스들 간에 자원을 기다리는 순환 구조가 형성되어야 합니다. 즉, 프로세스 A가 프로세스 B가 점유한 자원을 기다리고, 프로세스 B는 프로세스 C가 점유한 자원을 기다리고, 이어서 프로세스 C는 다시 프로세스 A가 점유한 자원을 기다리는 식으로 순환 구조가 형성되어야 합니다.

 

교착상태의 해결 방법:

  1. 예방(Prevention): 교착상태가 발생하는 조건 중 하나 이상을 방지하여 교착상태를 예방합니다. 이를 위해 상호배제, 보유 및 대기, 비선점, 순환 대기 중 하나 이상을 제거합니다.
  2. 회피(Avoidance): 시스템이 교착상태에 빠질 가능성을 사전에 탐지하고, 교착상태가 발생할 가능성이 있는 프로세스를 차단하여 회피합니다. 이를 위해 교착 상태 회피 알고리즘을 사용합니다.
  3. 탐지 및 회복(Detection and Recovery): 교착상태가 발생하면 시스템이 교착 상태를 탐지하고, 이를 해결하기 위한 알고리즘을 사용하여 회복시킵니다. 이를 위해 교착 상태 탐지 및 회복 알고리즘을 사용합니다.
  4. 무시(Ignoring): 교착상태를 감지하고 무시하고, 시스템이 계속 진행되도록 합니다. 이 방법은 일부 시스템에서만 적용 가능하며, 교착상태가 발생하더라도 시스템이 계속해서 작동할 수 있는 경우에만 사용됩니다.

 

교착상태의 예시:

가장 흔한 교착상태의 예시는 '음식점에서의 포크와 나이프' 입니다. 예를 들어, 손님이 포크를 가지고 있고, 다음 접시에 필요한 나이프를 기다릴 때, 요리사가 접시를 가지고 있고, 손님이 접시를 기다리는 경우 등입니다. 이 상황에서는 손님과 요리사가 서로의 자원을 기다리며 무한정 대기하게 되는데, 이는 교착상태의 전형적인 예시입니다.

 

교착상태는 컴퓨터 시스템에서 매우 심각한 문제이며, 이를 해결하기 위해서는 주의 깊은 설계와 적절한 알고리즘을 사용하여 예방하거나 회피해야 합니다.

728x90
반응형
LIST