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

박상민·2024년 2월 12일
0

CS Interview

목록 보기
3/16
post-thumbnail

교착 상태 발생 조건

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

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

📌 상호 배제(Mutual Exclusion)

우선 교착 상태가 발생한 근본적인 원인은 자원을 한 번에 하나의 프로세스만 사용할 수 있기 때문이다. 한 프로세스가 사용하는 자원들 다른 프로세스가 사용할 수 없는 상호 배제 상황이 교착 상태를 유발할 수 있다.

📌 점유와 대기(Hold and Wait)

어떤 프로세스가 자원을 점유한 상태에서 다른 자원을 요청하고 기다리는 경우, 즉 점유와 대기 상태에서 교착 상태가 발생할 수 있다. 이느 자원을 이미 할당받은 프로세스가 추가 자원을 기다리는 상황을 의미한다.

📌 비선점(No Preemption)

교착 상태의 또 다른 주요 원인은 프로세스가 자원을 비선점하고 있다는 점이다. 비서점 자원은 해당 자원을 사용하는 프로세스가 작업을 완료해야만 해제되므로, 다른 프로세스가 이를 강제로 사용할 수 없다.

📌 원형 대기(Circular Wait)

교착 상태의 마지막 원인은 프로세스와 자원 간의 요청 및 할당 관계가 원형으로 형성되는 원형 대기이다. 즉, 프로세스들이 서로의 자원을 기다리며 원형으로 연결되어 있는 상태가 교착 상태를 초래할 수 있다.

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

교착 상태를 프로세스가 자원을 얻지 못해 다음 처리를 진행할 수 없는 상태를 의미한다. 이는 시스템의 자원이 한정되어 있을 때 여러 프로세스가 자원을 요구하면서 발생하는 문제이다.

교착 상태의 4가지 조건

  • 상호배제: 프로세스들이 필요로 하는 자원에 대해 배타적으로 접근해야 하며, 한 번에 하나의 프로세스만 자원을 사용할 수 있다.
  • 점유대기: 프로세스가 이미 할당된 자원을 점유하고 있는 상태에서 추가 자원을 요청하고 기다리고 있는 상황
  • 비선점: 프로세스가 자원을 사용하고 있는 동안 다른 프로세스는 그 자원을 강제로 뺏을 수 없다.
  • 순환대기: 프로세스들이 서로 자원을 기다리며 순환적으로 연결된 상태이다.
    - 프로세스 A가 프로세스 B의 자원을 기다리고, 프로세스 B가 프로세스 C의 자원을 기다리며, 프로세스 C가 프로세스 A의 자원을 기다리는 형태이다.

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

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


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

0개의 댓글

관련 채용 정보