Category: Computer Science

Topic: Dead Lock

Topic Comment: 프로그램을 잘못짜게되면 대기하는 현상이 발생할 수 있습니다. 즉 여러분이 반드시 알아야 한다는 말이지요.

Question "Dead lock 을 용어들을 들어보셨을 거라고 생각합니다. 어떤 상태에서 발생할까요?"

데드락은 n개(2개 이상) 프로세스 및 쓰레드들이 자원을 획득하지 못하고 기다리고 있는 것을 의미합니다.

(일반적으로는 여러개의 프로세스에서 접근할때 많이 발생하는 것으로 알고있습니다. 단일 프로세스 내에서 일어나는 일은 대체로 개발자의 실수..)

Untitled

교착 상태 발동의 조건

  1. 상호 배제 : 1 자원은 1 프로세스만 → 즉 사용하고 있으면 다른 프로세스 접근 못하는 상황
  2. 점유 대기 : 프로세스 A 가 점유 상태에서, 프로세스 B가 A가 해제 될때까지 기다려야 합니다.
  3. 비선점 : 자원을 강제로 선점이 불가능 합니다. 프로세스 A가 해제 해주어야 합니다.
  4. 순환형 대기..( 이거 안됩니다… ㅠ ㅠ) : 아래 그림이 순환형 대기 상태의 예시입니다.

Untitled

상호 배제 이미지

Untitled

일반적으로 개발자의 코드 실수 생기는 교착 상태

Untitled

흔히 컴퓨터에서 볼 수 있는 교착 상태 예시