본문 바로가기
운영체제

교착 상태 (Deadlocks) 핵심 요약 정리

by 컨텐츠플러스 2023. 6. 10.

교착 상태
교착 상태

교착 상태

교착 상태 멀티프로그래밍 환경에서, 다양한 주제들이 제한된 자원을 활용하기 위해 서로 경쟁할 수 있다. 스레드가 리소스를 요청하면 해당 시점에 리소스를 사용할 수 없는 상황이 발생할 수 있으며 실이 대기 상태가 될 수 있습니다.

 

이러한 대기실이 상태를 다시 변경할 수 없을 경우 이러한 상황을 정체라고 한다.

 

우리는 프로세스 집합 내의 모든 프로세스가 해당 집합 내의 다른 프로세스에 의해서만 발생할 수 있는 이벤트를 기대하는 상황으로 교착 상태를 정의한다.

교창 상태 시스템 모델

시스템은 경쟁하는 주제들 사이에 분배될 제한된 수의 자원들로 구성되어 있다. 이러한 자원은 여러 종류(또는 등급)로 나뉘는데, 각각 동등한 수의 인스턴스로 구성된다. CPU 주기, 파일 및 입력/출력 장치는 리소스 유형의 예입니다.

 

한 시스템에 네 개의 CPU가 있는 경우, 하나의 리소스형 CPU에는 네 개의 인스턴스가 있습니다. 마찬가지로, 네트워크라고 불리는 자원의 한 종류에는 두 개의 인스턴스가 있을 수 있다.

 

실이 하나의 리소스 유형 인스턴스를 요청하는 경우, 요청은 동일한 리소스 유형 중 어떤 인스턴스를 할당함으로써 충족됩니다. 그렇지 않으면 교착 상태 인스턴스가 일치하지 않으며 리소스 유형 클래스가 정확하게 정의되지 않습니다.

Mutex Lock 및 Semapo와 같이 기술된 다양한 동기화 도구 또한 시스템 자원이며 현대 컴퓨터 시스템에서 가장 일반적인 임베디드 소스이다.

 

하지만 정의는 여기서 중요한 것이 아닙니다. 바위는 일반적으로 특정 데이터 구조와 관련이 있다.

 

즉, 하나의 자물쇠는 대기열에 대한 접근을 보호하는 데 사용될 수 있고 다른 자물쇠는 연결 목록에 대한 접근을 보호하는 데 사용될 수 있다. 이러한 이유로 각 잠금 인스턴스는 일반적으로 단일 리소스 클래스가 할당됩니다.

다중 스레드 응용에서의 교착 상태

방출은 신호등에 대한 와트 및 시그널 작동과 레퀴어를 통한 무텍스 잠금 획득 및 해제를 통해 이루어질 수 있습니다. 스레드가 코어 관리 리소스를 사용할 때마다 교착 상태 운영 체제는 스레드 리소스를 요청했는지 여부와 리소스를 할당했는지 확인합니다.

 

시스템 테이블은 각 리소스가 사용 가능하거나 할당되었는지 뿐만 아니라 할당된 각 리소스에 할당되는 스레드도 기록합니다.

 

스레드 한 개가 현재 다른 스레드에 할당된 교착 상태 리소스를 요청하는 경우 리소스를 기다리는 실 한 줄로 입력할 수 있습니다.

만약 한 세트의 모든 threads가 그 세트의 다른 threads에 의해서만 발생할 수 있는 이벤트를 기다린다면, threads의 집합은 차단된다.

 

우리가 주로 관심을 갖는 사건은 자원의 획득과 해방이다. 자원은 일반적으로 논리적이다. 모든 철학자는 동시에 배가 고프고, 각 철학자가 젓가락을 왼쪽으로 가져가면 젓가락이 없어진다. 모든 철학자들은 올바른 젓가락을 사용할 수 있을 때까지 기다린다.

멀티쓰레드 애플리케이션 개발자는 교착 상태의 가능성을 염두에 두어야 한다. 이러한 도구를 사용할 경우 개발자는 자물쇠를 획득하고 해제하는 방법에 주의를 기울여야 한다. 그렇지 않으면 아래 설명된 대로 사각지대가 발생할 수 있습니다.

 

2023.06.10 - [운영체제] - 세마포어 (Semaphores) 핵심 요약 정리

 

세마포어 (Semaphores) 핵심 요약 정리

세마포어 세마포어 뮤텍스는 일반적으로 가장 단순한 형태의 동기화 도구라고 여겨진다. 뮤텍스와 유사하게 작용하는 강력한 도구를 설명하지만 프로세스가 보다 정확하게 동작을 동기화할 수

contentplus.tistory.com