2024.04.22 TIL - Deadlock

김민석·2024년 4월 22일
0

TIL

목록 보기
76/78

데드락(Deadlock)

데드락(Deadlock)은 멀티스레드 또는 멀티프로세스 환경에서 발생할 수 있는 상태의 하나입니다. 데드락은 두 개 이상의 프로세스나 스레드가 서로가 가지고 있는 자원을 기다리면서 상호배제(Mutual Exclusion), 점유와 대기(Hold and Wait), 비선점(No Preemption), 순환 대기(Circular Wait)의 네 가지 조건이 동시에 충족될 때 발생합니다.

  1. 상호배제(Mutual Exclusion): 자원은 한 번에 하나의 프로세스 또는 스레드만 사용할 수 있습니다. 다른 프로세스나 스레드는 자원의 사용이 완료될 때까지 기다려야 합니다.

  2. 점유와 대기(Hold and Wait): 이미 어떤 자원을 점유한 상태에서 다른 자원을 기다리는 경우, 해당 자원을 가진 프로세스나 스레드가 다른 자원을 사용할 수 있을 때까지 대기합니다.

  3. 비선점(No Preemption): 한 프로세스나 스레드가 어떤 자원을 사용 중인 경우, 이 자원을 다른 프로세스나 스레드가 강제로 빼앗을 수 없습니다.

  4. 순환 대기(Circular Wait): 여러 프로세스나 스레드가 서로가 점유한 자원을 기다리며, 이때 순환적으로 자원을 대기하는 상황이 발생합니다.

이렇게 네 가지 조건이 모두 충족되면 데드락이 발생하게 되며, 이 상태에서는 각 프로세스나 스레드가 무한정으로 대기하게 되어 시스템이 더 이상 진행할 수 없는 상태에 빠지게 됩니다.

profile
화이팅 화이팅

0개의 댓글