개발자는 기록이 답이다

혼공 컴퓨터구조 + 운영체제 13. 교착상태 본문

CS/운영체제

혼공 컴퓨터구조 + 운영체제 13. 교착상태

slow-walker 2024. 2. 4. 22:52

 

1. 교착 상태란

 

프로세스를 실행하기 위해 자원이 필요한데, 두 개 이상의 프로세스가 각자 가지고 있는 자원을 무작정 기다린다면

그 어떤 프로세스도 더 이상 진행할 수 없는 교착상태가 된다.

 

교착 상태 발생 조건


교착 상태가 발 생할 조건에는 4가지가 있다.

4가지 조건 중 하나라도 만족하지 않는다면 교착 상태가 발생하지 않지만, 아래 조건이 모두 만족될 때 교착상태가 발생할 가능성이 생긴다.

 

상호 배제

 

교착 상태가 발생한 근본적인 원인은 해당 자원을 한 번에 하나의 프로세스만 이용 가능했기 때문이다. 

프로세스도 마찬가지로 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없을 때,  상호배제 (mutual exclusion )상황에서 교착 상태가 발생할 수 있다.


점유와 대기


프로세스가 어떠한 자원을 보유한 채(할당받은 상태) 다른 자원을 기다린다면 교착 상태가 발생할 수 있다.

이렇게 자원을 할당받은 상태에서 다른 자원을 할당받기 를 기다리는 상태를 점유와 대기(hold and wait)라고 한다.


비선점


교착 상태가 발생하게 된 또 하나의 근본적인 문제는 프로세스가 자원을 비선점(non-premptive)하고 있기 때문이다.

비선점 자원은 그 자원을 이용하는 프로세스의 작업이 끝나야만 비로소 이용 할 수 있다.

즉, 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못했기 때문에 교착상태가 발생했다고 볼 수 있다.


원형 대기


프로세스들과 프로세스가 요청 및 할당받은 자원이 원의 형태를 이루기 때문이다.

다시 말해, 자원 할당 그래프가 원의 형태로 그려지면 교착 상태가 발생할 수 있다.

이렇게 프로세스들이 원의 형태로 자원을 대기하는 것을 원형 대기(cucular wait)라고 한다.

※ 자원 할당 그래프가 원의 형태로 그려지면 교착 상태가 발생할 '수' 있다고 표현한 이유가 있다.

자원 할당 그래프 가 원의 형태를 띄지 않는다면 교착 상태는 발생하지 않으나, 원의 형태를 띈다고 해서 반드시 교착 상태가 발생하는 것은 아니다.