본문 바로가기
운영체제

운영체제 교착 상태 (데드락)

by heounto 2026. 3. 16.

교착 상태란?

2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며 작업을 더이상 진행을 못하는 상태

아사 상태 vs 교착 상태

아사 상태 - 잘못된 정책으로 인해 특정 프로세스의 작업이 지연되는 것

교착 상태 - 여러 프로세스가 작업을 진행하다가 자연적으로 발생되는 것

교착 상태의 필요 조건 4가지 => 4가지 조건 모두 만족해야 교착 상태 발생

상호배제 (mutual exclusion) : 한 프로세스가 사용하는 자원은 다른 프로세스와 공유 불가능한 배타적인 자원이어야 한다

=> 배타적 자원 사용시 교착 상태 발생

비선점 (non-preemptive) : 한 프로세스가 사용 중인 자원은 도중에 다른 프로세스가 빼앗을 수 없는 비선점 자원이어야 한다

=> 빼앗지 못한다 = 공유가 안된다 교착 상태 발생

점유와 대기 (hold and wait) : 프로세스가 어떤 자원을 할당받은 상태에서 다른 자원을 기다리는 상태여야 한다 => 점유하면서 다른 자원을 기다리고 있으면 교착 상태 발생

원형 대기 (circular wait) : 점유와 대기를 하는 프로세스 간의 관계가 원을 이루어야 한다

=> 프로세스들이 양보하지 않아 교착 상태

상호 배제, 비선점 : 자원이 어떠한 특징을 가졌는지

점유 대기, 원형 대기 : 프로세스가 어떤 동작을 하는지

교착 상태를 해결하기 위한 방안

교착 상태예방 : 교착 상태를 유발하는 네 가지 조건을 발생하지 않도록 무력화하는 방식으로 교착상태 조건 4가지에 대하여 각각의 방법이 존재 한다

교착 상태 회피 : 교착상태가 발생하지 않도록 자원 할당량을 조절

교착 상태 검출과 회복 : 제약 없이 자원 할당 그래프를 모니터링하면서 교착 상태가 발생하는지 살펴보는 방식 만약 교착상태 발생시 회복 단계 진행

교착 상태를 피하기 위한 알고리즘 (은행원 알고리즘) - 회피기법

은행이 대출해주는 방식으로 대출 가능한 범위면 (안정 상태) 그렇지 않으면 (불안정 상태)

=> 은행에 대출을 해주는데 선착순이 아닌 제공 순서를 정해서 줌

  • 각 프로세스를 기대 자원과 비교하여 가용가능한 자원이 하나라도 크거나 같으면 자원을 할당한다 = 안정 상태

예시) 현재 시스템의 총 자원수가 10이다.

프로세스
최대 요구 자원
현재 할당된 자원
P1
8
4
P2
5
2
P3
4
3

현재 할당된 자원이 총 9개면 시스템 총 자원의 여유분은 1개이다

요청 예상되는 자원은

P1 => (최대 요구자원 = 8) - (현재 할당된 자원 4) = (요청 예산 자원 4)

P2 => (최대 요구자원 = 5) - (현재 할당된 자원 2) = (요청 예산 자원 3)

P3 => (최대 요구자원 = 4) - (현재 할당된 자원 3) = (요청 예산 자원 1)

여기서 자원의 여유분은 1개이니까

P1은 요청 예산 자원이 4니까 거절

P2는 요청 예산 자원이 3니까 거절

P3는 요청 예산 자원이 1니까 수락 => P3에 여유분을 할당

P3에서 여유분 1이 할당되면서 최대 요구자원까지 작업을 마친후 4를 다시 반납

자원 여유분이 4니까 P2, P3 둘다 가능함

'운영체제' 카테고리의 다른 글

물리 메모리 관리  (0) 2026.03.16
페이지 교체 알고리즘  (0) 2026.03.16