[출근 74일차] 데드락? 갑자기 분위기 CSI?

발송일
Aug 10, 2020
분류
뽀식이 메모
카테고리
개발/IT
✋뽀-하! (뽀식 하이)
 
김뽀식의 팀은 신규 기능 추가를 위한 주간 미팅 중!
신입의 패기를 보여드릴 수 있도록 밤새 레퍼런스를 찾아 아이디어를 잔뜩 가져왔다!
 
하지만 예상과 달리 침묵만이 감도는 회의실...
그리고 미간이 굳어있는 개발팀의 얼굴...
 
박 선임: 그... 저희가 돌아가서 리소스 구조를 다시 봐야할 것 같은데 이 중 다수가 데드락 이슈 발생할 것 같아서...
김뽀식: (데드락...? 죽었고 잠겼어...?)

notion imagenotion image

데드락(Deadlock)

두 가지의 요청의 조건이 충돌되어 서로를 기다리며 아무 것도 해결되지 않는 상태. 교착 상태라고도 한다.
 

친절한 뽀식 pick

더 알아두면 좋은 정보💡
 

삐용삐용! 데드락이 일어나는 4가지 조건을 예시로 알아보자!

  1. 상호배제(Mutual exclusion) : 하나의 자원을 두 개의 프로세스가 사용할 수 없는 상태
[예시] 김뽀식과 박뽀식은 함께 킥보드를 타고 싶지만 가지고 있는 킥보드는 1인용이고 1대 뿐이다.
 
2. 점유대기 (Hold and wait) : 먼저 자원을 선점한 프로세스가 자원을 붙잡고 놔주지 않는 상태
[예시] 1대 뿐인 킥보드를 김뽀식이 먼저 탔으나 다 타고 난 이후에도 박뽀식에게 주지 않는다.
 
3. 비선점(No preemption) : 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 뺏을 수 없다.
[예시] 1대 뿐인 킥보드를 김뽀식이 너무나도 느리게 타지만 달리는 킥보드를 박뽀식이 뺏을 방법이 없다.
 
4. 순환대기(Circular wait) : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다.
[예시] 김뽀식은 박뽀식이 신호를 줘야 멈출 수 있지만 박뽀식은 김뽀식이 멈춰야 신호를 준다.
 
[더 읽어보면 좋을 글]