프로세스는 여러 자원이 필요한데, 이를 운영체제에서 프로세스가 요구하는 자원을 적절히 분배해줍니다.

여기서 교착상태(DeadLock)라는 것은 두 개 이상의 프로세스나 쓰레드가 서로 자원을 얻지 못해서 다음 처리를 하지 못하는 상태로 무한히 다음 자원을 기다리게 되는 것을 말합니다.

예를 들어, 게임 프로세스가 자원 A를 점유한 채 웹 브라우저 프로세스가 점유하고 있는 자원 B의 사용이 끝나길 기다리고, 웹 브라우저 프로세스는 자원 B를 점유한 채 게임 프로세스의 자원 A 사용이 끝나길 기다리는 상황이라고 할 수 있습니다.

이 경우에는 두 프로세스 모두 상대방이 가진 자원을 기다리기만 하다가 결국 실행 한 번 못하는 상황을 교착상태라고 합니다.

교착 상태 발생 조건

교착 상태 발생 조건에는 4가지가 존재하는데, 이 조건 중 하나라도 만족하지 않는다면 교착 상태가 발생하지 않습니다. 하지만 이 조건이 모두 만족될 때 반드시 교착 상태가 발생하진 않지만 일어날 확률이 생깁니다.

교착 상태 발생의 4가지 조건은 다음과 같습니다.

상호 배제(Mutual Exclusion)

한 프로세스가 자원을 사용하고 있다면, 다른 프로세스는 그 자원을 사용할 수 없는 것을 말합니다.

점유와 대기(Hold and Wait)

한 프로세스가 자원을 가지고 대기하고 있는 상태를 말합니다.

비선점(Non-Preemption)

한 프로세스가 자원을 가지고 작업을 수행 중에는 다른 프로세스가 중간에 그 자원을 점유할 수 없는 것을 말합니다.

원형 대기(Circular Wait)

프로세스들끼리 요구하는 자원의 방향이 원으로 이루어진 것을 말합니다.

이상으로 교착 상태와 교착 상태 발생 조건에 대해서 간단히 알아봤습니다.

참고

  • KOCW - 운영체제, 양희재 교수님
  • 혼자 공부하는 컴퓨터구조 + 운영체제
profile
꾸준함으로 성장하는 개발자 지망생

0개의 댓글