프로세스와 자원 할당 관계를 표현하는데 사용
프로세스가 자원을 요청하는 경우
-
자원이 프로세스에게 할당된 경우
-
환형 대기
- 두 개의 프로세스가 각자 서로 점유하고 있는 자원에 대해 서로 요구할 경우 환형 대기 발생 => 교착 상태로 이어짐
-
- <img src="https://i.imgur.com/B3fEHic.png" width=200/>
- 결국 제자리로 돌아오게 되는 **순환의 형태**로 가게 되면 교착 상태 발생
교착상태가 아닌 경우
- 환형 대기와 비슷한 모양이지만 자원 안에 인스턴스가 여러 개가 있어 교착 상태를 방지
-
교착사태 가능 | 교착상태 발생 |
---|---|
1. 상호 배제 조건 | 1. 상호 배제 조건 |
2. 점유대기 조건 | 2. 점유대기 조건 |
3. 비선점 조건 | 3. 비선점 조건 |
4. 환형대기 조건 |
=> 교착상태를 해결하기 위해 다양한 접근 방법들이 제안
접근 방법 | 자원 할당 정책 | 구체적인 기법 | 장점 | 단점 |
---|---|---|---|---|
예방 | 보수적(자원할당 O, 조건에 따라 가능) | 모든 자원을 한번에 요구 | 순간적으로 많은 일을 하는 프로세스에게 적합 선점(임의의 순간에 문맥교환) 불필요 | 효율 나쁨 프로세스 시작 지연가능성 사용할 모든 자원 미리 알고 있어야 함 |
선점 가능 | 자원 상태의 저장과 복구가 간단한 자원에 적용 쉬움 | 선점이 필요보다 자주 일어남 | ||
자원 할당 순서 | 컴파일 시점에 강제 시스템 설계 시점에 문제 해결 -> 동적 부하 X | 점진적인 자원 할당 안됨 | ||
회피 | 예방과 발견의 중간 정도 | 교착 상태가 발생하지 않는 안전한 경로를 최소한 하나 유지 | 선점 불필요 | 자원에 대한 미래 요구량을 미리 알고 있어야 함 오랜 시간 지연 발생 가능성 |
발견 | 적극적 (자원 할당이 가능하면 즉시 할당) | 주기적으로 교착 상태 발생 여부 파악 | 프로세스 시작을 지연시키지 않음 온라인 처리 가능 | 선점에 의한 손실 발생 |