교착 상태를 해결하는 방법에는 대표적으로 3가지가 있다. 예방, 회피, 탐지 및 회복.
이번에는 예방에 대해 알아볼 것이다.
[하벤더]
- 각 프로세스는 필요한 자원을 한 번에 모두 요청, 요청한 자원을 모두 제공받기 전까지 작업 불가
- 어떤 자원을 점유하는 프로세스의 요청을 더 이상 허용하지 않으면, 점유 자원을 모두 반납하고, 필요 시 다시 자원 요청
- 모든 프로세스에 자원을 순서대로 할당
[보통 교착 상태 예방] 중요!!!
- 자원의 상호배제 조건 방지
- 상호배제는 자원의 비공유가 전제
- 여러 개의 프로세스가 동시 공유자원 사용 가능
- 점유와 대기 조건 방지
- 프로세스가 작업 수행 전, 필요 자원 모두 요청하고 획득해야 함
- 대기 조건 성립 안됨 (최대 자원 할당)
- 자원 할당 시, 시스템 호출된 프로세스 하나를 실행하는 데 필요한 모든 자원을 먼저 할당, 실행 후 다른 시스템 호출에 자원 할당
- 프로세스가 자원을 전혀 갖고 있지 않을 때만 자원을 요청하도록 허용. 프로세스가 자원을 더 요청하려면 자신에게 할당된 자원을 모두 해제해야 함
- 단점
- 자원 효율성 너무 낮음
- 기아 상태 발생 가능 (대화식 시스템에서 사용 불가)
- 비선점 조건 방지
- 전제 조건 : 이미 할당된 자원에 선점권이 없어야!!
- 요청 자원을 즉시 할당 받을 수 없어 기다려야 한다면, 현재 가진 자원을 모두 해제해야 함
- 프로세스가 작업을 시작할 때는 요청한 새로운 자원과 해제한 자원을 확보해야 함
- 두 프로세스에 우선 순위를 부여하고, 높은 우선순위의 프로세스가 그보다 낮은 우선 순위의 프로세스가 점유한 자원을 선점하여 해결
- 순환 대기 조건 방지 (한 방향)
- 모든 자원에 일련의 순서 부여, 각 프로세스가 오름차순으로만 자원 요청할 수 있게 함
- 순환 대기의 가능성을 제거하여 교착 상태 예방
- 자원을 집합을 R = {R1, R2, …, Rn}이라고 가정 (각 자원에 고유 숫자 부여에 의해 어느 자원의 순서가 빠른지 정의)
- 이것은 1:1 함수 F:R → N으로 정의 (N: 자연수 집합)
- 자원 R의 집합이 CD, 디스크, 프린터를 포함한다면 함수 F는 다음과 같이 정의
F(CD) = 2
F(디스크) = 4
F(프린터) = 7
- 교착 상태 예방 시 고려할 규칙
- 각 프로세스는 오름차순으로만 자원 요청 가능
- CD와 프린터를 동시에 사용해야 하는 프로세스는 CD 먼저 요청 후 프린터 요청
- 또 다른 해결 방법으로 프로세스가 자원 Rj 요청 때마다
F(Ri) ≥ F(Rj)가 되도록 Ri의 모든 자원 해제 ⇒ 순환 대기 조건 막을 수 있다. - 계층적 요청은 순환 대기 조건 가능성 제거하여 교착 상태 예방, 반드시 자원의 번호 순서로 요청해야 함
- 번호 부여 시 실제 자원 사용 순서를 반영해야 함
'Computer Science > Operating System' 카테고리의 다른 글
| 교착 상태 해결 - 회피 (0) | 2024.04.12 |
|---|---|
| 교착 상태란? (0) | 2024.04.12 |