데드락

jodbsgh·2023년 9월 21일
0

2023

목록 보기
2/8

데드락의 정의

데드락(Deadlock)은 컴퓨터 과학 및 정보 기술 분야에서 발생하는 상황 중 하나로, 두 개 이상의 프로세스나 스레드가 서로 상대방의 자원을 기다리며 무한히 진행하지 못하는 상태를 가르킵니다. 이러한 상태에서는 시스템이 더 이상 진행하지 못하고 멈추게 됩니다.

데드락은 다음과 같은 네 가지 조건을 만족할 때 발생합니다.

데드락의 발생 조건

  1. 상호 배제(Mutual Exclusion): 자원은 한 번에 하나의 프로세스나 스레드만 사용할 수 있어야 합니다.

  2. 점유 대기(Hold and Wait): 프로세스나 스레드가 최소한 하나의 자원을 가지고 있으면서 다른 자원을 기다리고 있어야 합니다.

  3. 비선점(No Preemption): 다른 프로세스나 스레드가 이미 점유한 자원을 강제로 뺏어올 수 없어야 합니다. 자원은 원래의 소유자에게 반납될 때 까지 사용됩니다.

  4. 순환 대기(Circular Wait): 여러 프로세스나 스레드 간에 지원 요청이 순환 형태로 대기 상태를 형성해야 합니다. 즉, 프로세스 A가 프로세스 B의 자원을, 프로세스 B가 프로세스 C의 자원을, 그리고 프로세스 C가 프로세스 A의 자원을 기다리는 순환 구조여야 합니다.

데드락 예방 및 해결방법

데드락 상태는 시스템의 안정성을 위협하며, 이를 해결하기 위한 다양한 알고리즘이 개발되어 있습니다. 일반적으로 데드락을 해결하기 위해 다음과 같은 방법들을 사용합니다.

  1. 데드락 예방(Deadlock Prevention): 필요 조건 중 하나 이상을 제거하여 데드락이 발생하지 않도록 합니다. 예를 들어, 자원 할당 전에 요청한 자원을 모두 얻을 수 있는지 미리 확인하거나, 자원 요청 시 타임아웃을 사용하여 데드락을 방지할 수 있습니다.

  2. 데드락 회피(Deadlock Avoidance): 시스템이 자원 할당을 허용하면서도 데드락을 회피하기 위해 안전한 자원 할당 순서를 결정합니다. 뱅커스 알고리즘(Banker's Algorithm)과 유사한 방법이 사용됩니다.

  3. 데드락 탐지 및 복구(Deadlock Detection and Recovery): 데드락이 발생하면 시스템이 이를 탐지하고 데드락 프로세스를 종료하거나 자원을 회수하여 복구합니다.

*뱅커스알고리즘

데드락 회피를 위한 알고리즘 중 하나로, 운영체제와 프로세스 간의 자원 관리를 효율적으로 조절하여 데드락을 방지하는 데 사용된다. 이 알고리즘은 프로세스가 자원을 요청할 때 안전한지를 사전에 판단하여 자원 할당을 관리한다.
뱅커스알고리즘은 프로세스가 자원을 요청할 때 다음 조건을 검사하여 요청을 승인할지 거부할지 결정한다.

  • 요청한 자원이 현재 사용 가능한 자원 수보다 작거나 같아야 한다.
  • 요청한 자원을 할당한 후에도 시스템이 안전 상태를 유지해야 한다. 안전상태란 데드락입 ㅏㄹ생하지 않는 상태를 말한다.
profile
어제 보다는 내일을, 내일 보다는 오늘을 🚀

0개의 댓글