교착 상태란?
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 |