운영체제

교착상태 / 기아상태

rnrwk0502 2024. 8. 17. 01:50

교착상태 (Deadlock)

운영체제에서 교착상태란, 시스템 자원에 대한 요구가 뒤엉킨 상태이다.

즉, 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황을 말한다.

프로세스는 자원 요청->자원사용->자원해제 순서로 동작한다. 

사실 초기에 일괄 처리 시스템에서는 교착상태가 자주 발생하지 않았지만, 시스템 효율성을 증가시키고 제한된 자원의 사용률을 높이기 위해 사용하는 병행 처리 기술과 자원 공유 기술의 부작용으로 교착상태가 자주 발생하게 된 것이다. 

 

교착상태의 발생조건

1. 상호 배제

 -  한 번에 프로세스 하나만 해당 자원을 사용할 수 있다. 사용 중인 자원을 다른 프로세스가 사용하려면 요청한 자원이 해제될 때까지 기다려야 한다.

2. 점유와 대기

 - 자원을 최소한 하나 보유하고, 다른 프로세스에 할당된 자원을 점유하기 위해 대기하는 프로세스가 존재해야 한다.

3. 비선점

 - 이미 할당된 자원을 강제로 빼앗을 수 없다.

4. 순환 대기

 - 대기 프로세스의 집합이 순환 형태로 자원을 대기하고 있어야 한다.

 

교착상태의 해결법

1. 예방 : 교착상태가 생길 조건을 없애는 것 (4가지 조건 중 하나를 부정)

  • 자원의 상호배제 조건 방지
  • 점유와 대기 조건 방지
  • 비선점 조건 방지
  • 순환 대기 조건 방지

2. 회피 : 교착상태의 발생가능성을 배제하지 않고 회피한다.

  • 프로세스의 시작 중단
  • 자원 할당 거부

3. 탐지 & 회복 : 교착상태를 허용하지만 상태를 탐지하고 다시 회복

  • 프로세스와 스레드의 종료
  • 자원 선점

4. 무시 : 교착상태가 발생하면 재시작을 통해 상황을 자동적으로 해결하는 방법

 

 

기아상태

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

 

기아상태의 특징

  • 낮은 우선순위의 프로세스가 영원히 기다리고 높은 우선순위의 프로세스는 끊임없이 동작하는 상황
  • 낮은 우선순위의 프로세스는 자원과 영원히 상호작용하지 않기 때문에 교착상태가 발생하지는 않으나, 낮은 우선순위의 프로세스가 영원히 실행이 안된다는 문제가 발생한다.
  • 기아상태는 실패한 방법이지만, 교착상태를 일시적으로 해결해주는 방법이다.

 

기아상태의 해결책

  • 프로세스 우선순위를 수시로 변경해서 각 프로세스가 높은 우선순위를 가질 기회를 준다.
  • 오래 기다린 프로세스의 우선순위를 높여준다. (aging기법)
  • 우선순위가 아닌 요청 순서대로 처리하는 FIFO기반 요청 큐를 사용한다.

 

<교착상태와 기아상태 비교>

  • 교착상태는 여러 프로세스가 동일 자원 점유를 요청할 때 발생
  • 기아상태는 여러 프로세스가 부족한 자원을 겸유하기 위해 경쟁할 때, 경쟁에서 밀린 특정 프로세스는 영원히 자원할당이 안되는 경우를 의미한다.

 

출처

https://hoyeonkim795.github.io/posts/%EA%B5%90%EC%B0%A9%EC%83%81%ED%83%9C%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EB%B0%9C%EC%83%9D%EC%9B%90%EC%9D%B8/#google_vignette

 

[OS] 교착 상태(deadlock)의 개념과 발생 원인

01 교착 상태의 개념과 발생 원인

hoyeonkim795.github.io

https://chanhuiseok.github.io/posts/cs-2/

 

[운영체제] 데드락(Deadlock, 교착 상태)이란?

컴퓨터/IT/알고리즘 정리 블로그

chanhuiseok.github.io

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

 

교착상태 (DeadLock) 와 기아상태 (Starvation)

잘 기억은 안나지만 2022년 여름 주말이었는데 지인들끼리 다같이 모여서 쿠팡이츠로 점심을 시켜먹으려고 했는데 서버가 내려가 주문이 안된 사태가 있었습니다. 여자친구가 당시 쿠팡이츠에

coding-review.tistory.com