✏️ [OS] 교착상태(DeadLock)가 무엇이며, 4가지 조건은?

박상민·2024년 2월 12일
0

CS Interview

목록 보기
3/16
post-thumbnail

교착 상태 발생 조건

교착 상태가 발생할 조건에는 네 가지가 있다. 바로 상호 배제, 점유와 대기, 비선점, 원형 대기이다. 즉, 이 조건 중 하나라도 만족하지 않는다면 교착 상태가 발생하지 않지만, 아래 조건이 모두 만족될 때 교착 상태가 발생하지 않지만, 아래 조건이 모두 만족될 때 교착 상태가 발생할 가능성이 생긴다고 보면 된다.

교착상태의 대표적인 예시로 '식사하는 철학자 문제'가 있다. 참고하면 교착상태를 이해히는데 도움이 된다.
식사하는 철학자 문제 - 나무위키

📌 상호 배제

우선 교착 상태가 발생한 근본적인 원인은 해당 자원을 한 번에 하나의 프로세스만 이용 가능했기 때문이다. 한 프로세스도 마찬가지로 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없을 때, 즉 상호 배제 상황에서 교착 상태가 발생할 수 있다.

📌 점유와 대기

어떠한 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다린다면 교착 상태가 발생할 수 있다. 이렇게 '자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태를 점유와 대기라고 한다.

📌 비선점

교착 상태가 발생하게 된 또 하나의 근본적인 문제는 프로세스가 자원을 비선점하고 있었기 때문이다. 비선점 자원은 그 자원을 이용하는 프로세스의 작업이 끝나야만 비로소 이용할 수 있다. 즉, 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못했기 때문에 교착 상태가 발생했다고 볼 수 있다.

📌 원형 대기

교착 상태가 발생한 마지막 이유는 프로세스들과 프로세스가 요청 및 할당받은 자원이 원의 형태를 이루었기 때문이다. 다시 말해 자원 할당 그래프가 원의 형태로 그려지면 교착 상태가 발생할 수 있다. 이렇게 프로세스들이 원의 형태로 자원을 대기하는 것을 원형 대기라고 한다.

⭐️ 교착상태(DeadLock)가 무엇이며, 4가지 조건은?

프로세스가 자원 얻지 못해 다음 처리를 하지 못하는 상태를 말한다.
시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생하는 문제다.

교착 상태의 4가지 조건은 아래와 같다.

  • 상호배제: 프로세스들이 필요로 하는 자원에 대해 배타적 통제권을 요구한다.
  • 점유대기: 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다.
  • 비선점: 프로세스가 어떤 자원의 사용을 끝날 때까지 그 자원을 뺏을 수 없다.
  • 순환대기: 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 갖고 있다.

이 4가지 조건 중 하나라도 만족하지 않으면 교착상태는 발생하지 않는다.

순환대기는 점유 대기와 비선점을 모두 만족해야만 성립한다. 따라서 4가지가 서로 독립적이진 않다.


출처
Tech Interview for developer
혼자 공부하는 컴퓨터 구조 + 운영체제

profile
스프링 백엔드를 공부중인 대학생입니다!

0개의 댓글