[OS] 교착상태와 기아상태 개념 및 비교

728x90
반응형

교착상태 vs 기아상태

교착상태: 2개 이상의 프로세스가 서로의 자원이 unlock되기를 기다리면서 아무 일도 못하고 무한 대기하는 상태
기아상태: 특정 프로세스의 우선 순위가 낮아서 원하는 자원을 계속 할당받지 못하는 상태

1. 교착상태 (데드락, Deadlock)

  • 정의: 교착상태는 둘 이상의 프로세스가 각자 다른 프로세스가 보유한 자원을 서로 기다리며 진행되지 못하는 상태이다. 이로 인해 각 프로세스가 필요로 하는 자원이 서로 잠겨 있어 모든 프로세스가 멈추게 된다.
  • 조건: 교착상태는 네 가지 조건(상호 배제, 점유 및 대기, 비선점, 환형 대기)이 동시에 충족될 때 발생한다.
  • 해결: 교착상태를 해결하기 위해서는 교착상태의 발생을 검출하고 회복하는 기법이나, 자원의 할당 순서를 정해 미리 예방하는 방법을 사용할 수 있다.

 

 교착상태 발생원인 (조건)

교착상태는 이 4가지 조건이 동시에 충족될 때 발생한다.

  • 상호배제: 프로세스들이 자원을 배타적으로 점유하여 다른 프로세스가 그 자원을 사용하지 못함.
  • 점유와 대기: 프로세스가 어떤 자원을 할당 받아 점유하고 있으면서 다른 자원을 요구
  • 비선점: 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없으며, 점유하고 있는 프로세스 자신만이 해제 가능
  • 환형 대기: 프로세스간 자원 요구가 하나의 원형을 구성

 

🪄 교착상태 해결 방법

  1. 자원을 할당할 때 애초에 조건이 성립되지 않도록 설계한다.
  2. 교착 상태 가능성이 없을 때만 자원 할당되며, 프로세스당 요청할 자원들의 최대치를 통해 자원 할당 가능 여부를 파악하는 ‘은행원 알고리즘(Banker's Algorithm)’을 쓴다.
  3. 교착 상태가 발생하면 사이클이 있는지 찾아보고 이에 관련된 프로세스를 한 개씩 지운다.
  4. 교착 상태가 발생하면 사용자가 작업을 종료한다. 교착 상태는 매우 드물게 일어나기 때문에 이를 처리하는 비용이 더 크다.

2. 기아 상태(Starvation)

기아상태는 특정 프로세스의 우선 순위가 낮아서 원하는 자원을 계속 할당받지 못하는 상태를 말한다.


3. 교착 상태 vs 기아상태 차이

  • 교착상태: 프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태
  • 기아상태: 프로세스가 원하는 자원을 계속 할당 받지 못하는 상태

즉 교착 상태는 여러 프로세스가 동일한 자원 점유를 원할 때 발생하고,

기아 상태는 여러 프로세스가 자원을 점유하기 위해 경쟁할 때 특정 프로세스는 우선순위가 낮아서 영원히 자원 할당을 받지 못하는 것이다. 

  교착상태 기아상태
정의 하나 이상의 프로세스가 자원을 쥐고 있으면서 다른 프로세스가 가진 자원을 요구할 때 Lock이 걸린 상태 낮은 우선순위의 프로세스가 높은 우선순위의 프로세스에 밀려 자원을 영원히 할당받지 못하는 상태
자원 자원은 일련의 프로세스가 순환 참조 때문에 Lock에 걸린다. 자원은 계속해서 높은 우선순위의 프로세스에 할당된다.
해결 방법 - 교착상태 발생 조건 4가지 중 하나라도 만족시키지 않게 하기.
- 회피 알고리즘 사용
- 교착상태를 감지하고 회복하거나 무시
CPU에 자원 분배 맡기기
프로세스의 선택을 랜덤으로 바꾸기
PriorityQueue와 같은 알고리즘 사용
프로세스의 상태 프로세스는 실행되지 않는다. 우선순위 프로세스만 실행된다.

 

▶ 교착상태와 기아상태의 차이점을 바탕으로, 프로세스 상태가 주어졌을 때 어떤 상태인지 알고 그 이유도 설명할 수 있어야 한다.

 


참고) https://lealea.tistory.com/244

https://namu.wiki/w/%EB%8D%B0%EB%93%9C%EB%9D%BD

https://coding-review.tistory.com/359

https://www.scaler.com/topics/operating-system/deadlock-in-os/

 

728x90
반응형