DeadLock Avoidance
교착상태 회피
교착상태 회피 기법은 교착 상태 발생을 위한 4가지 조건 중 1, 2, 3을 허용하며, 또한 4처럼 자원 할당 순서를 미리 정하지 않는다.
자원을 할당할 때 교착 상태가 발생 가능한 상황으로 진행하지 않도록 고려한다.
- 미래의 자원 요청 정보 필요
- 현재 자원의 가용 개수와 프로세스의 자원 요구향을 미리 알고 있어야 가능하다.
자원 할당 거부 (Resource Allocation Denial)
자원을 할당할 때 교착상태가 발생할 가능성이 있는지 여부를 동적으로 판단.
교착 상태의 가능성이 없을 때 자원 할당
- 안전한 상태를 계속 유지할 수 있으면 자원 할당
- But, 각 프로세스들이 필요한 자원들을 미리 운영체제에게 알려야 한다.
- 시스템 상태 구분
- 안전한 상태(safe state)
- 교착상태가 발생하지 않도록 프로세스에게 자원을 할당할 수 있는 진행 경로가 존재
- 지금 들어온 요청을 허용해도 다른 프로세스들의 요청을 전부 만족시키는 것
- 예) banker’s algorithm
- 안전하지 않은 상태(unsafe state)
- 안전한 자원 할당 경로가 없는 상태
- 이미 돌고 있는 프로세스들이 알아서 반납하지 않는 한, 지금 요청한 프로세스가 자원을 사용할 수 없는 경우
- 안전한 상태(safe state)
프로세스 시작 거부 (Process Initialization Denial)
- 교착상태가 발생할 가능성이 있으면 프로세스 시작 거부
- 모든 프로세스들이 요구한 자원의 개수가 전체 자원 개수보다 적으면, 교착상태가 발생하지 않는다. (C < R)
- 새로운 프로세스와 기존의 프로세스들이 요구하는 자원의 개수가 그 자원의 전체 개수보다 적은 경우에 수행을 허용하는 것 (C - A < V)
'CS > OS' 카테고리의 다른 글
분산 적재 방식 (0) | 2022.06.01 |
---|---|
메모리 관리 (0) | 2022.05.31 |
Dining Philosophers Problem - 식사하는 철학자 문제 (0) | 2022.05.27 |
Dead Lock - Resource-Allocation Graph (0) | 2022.05.27 |
Semaphore as Condition Variable (0) | 2022.05.26 |