교착상태란?

 

두 개 이상의 작업이 서로 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 못하는 상태를 가리킨다.

 

예를 들어 하나의 사다리가 있고, 두 명의 사람이 각각 사다리의 위쪽과 아래쪽에 있다고 가정한다. 이때 아래에 있는 사람은 위로 올라가려고 하고, 위에 있는 사람은 아래로 내려오려고 한다면, 두 사람은 서로 상대방이 사다리에서 비켜줄 때까지 하염없이 기다리고 있을 것이고 결과적으로 아무도 사다리를 내려오거나 올라가지 못하게 되듯이,

전산학에서 교착상태란 다중 프로그래밍 환경에서 흔히 발생할 수 있는 문제다 - 위키백과 교착상태

 

위키백과에서 예를 들어서까지 잘 설명해놓았네요.

 

교착상태가 일어나려면 아래와 같은 4가지 조건들이 필요합니다.

 

상호배제 프로세스들이 자원을 배타적 점유한다.

점유와 대기 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다.

비선점 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원을 뺏을 수 없다.

환형 대기 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다.

 

 

우선 교착상태를 막는 것은 아직 불가능합니다..

 

하지만 다음과 같은 방법들로 대응을 하고 대부분의 접근들은 4가지 조건들 가운데 하나(특히 환형 대기)를 막음으로써 동작합니다.

 

교착상태의 예방 - 조건의 부정

교착상태의 회피 - 은행가 알고리즘, 자원 할당 그래프 알고리즘

교착상태의 발견 - 교착상태 발견

교착상태의 회복 - 프로세스 중지, 자원 선점

 

'전자공학 > 임베디드' 카테고리의 다른 글

인터럽트 우선순위 (폴링, 데이지체인)  (0) 2019.10.18
폴링과 인터럽트 비교  (0) 2019.10.17
2019년 제6회 임베디드 기사 필기 후기  (0) 2019.09.22
RTC란??  (0) 2019.04.21
임베디드란?? Embedded  (1) 2019.04.20

+ Recent posts