운영체제(OS)/keyword

(Project1-Threads) 데드락(Deadlock)

스탠딩 2023. 12. 15. 14:33

deadlock(교착 상태)은 컴퓨터 과학에서 여러 프로세스나 스레드가 서로의 작업이 끝나기를 기다리며 아무것도 진행하지 못하는 상태를 나타낸다. deadlock이 발생하는 이유는 다음과 같다.

 

출처 : https://www.boardinfinity.com/blog/deadlock-in-operating-system

  1. 상호 배제 (Mutual Exclusion): 리소스가 한 번에 하나의 프로세스나 스레드에 의해서만 사용될 수 있는 경우 발생
  2. 보유 및 대기 (Hold and Wait): 프로세스나 스레드가 어떤 리소스를 보유한 상태에서 다른 리소스를 기다리는 경우 발생
  3. 비선점 (No Preemption): 어떤 프로세스나 스레드에 할당된 리소스는 그 프로세스나 스레드에 의해서만 해제될 수 있는 경우 발생
  4. 순환 대기 (Circular Wait): 프로세스나 스레드 간에 순환 형태로 리소스를 기다리는 경우 발생

deadlock이 발생하면 각각의 작업이 끝나기를 기다리는 상태로 인해 시스템이 무한정 대기하게 되어 일어나면 안 되는 상황이다. 따라서 deadlock을 방지하거나 탐지하여 해결하는 기법들이 중요하게 다뤄지고 있다.