2. 교착 상태 회피
2.1 교착 상태 회피의 개념
: 교착 상태 회피는 할당되는 자원의 수를 조절하여 교착 상태를 피한다.
교착 상태 회피는 프로세스에 자원을 할당할 때 어느 수준 이상의 자원을 나누어주면 교착 상태가 발생하는지 파악하여 그 수준 이하로 자원을 나눠주는 방법이다.
교착 상태가 발생하는 범위에 있으면 프로세스를 대기시킨다.
교착 상태 예방은 프로세스 작업 방식을 제약하기 때문에 현실적으로 사용 불가능이지만,
교착 상태 회피는 시스템 운영 방식에 변경을 가하지 않기 때문에 더 유연하다.
교착 상태 회피는 자원의 총수와 현재 할당된 자원의 수를 기준으로 시스템을 안정 상태와 불안정 상태로 나누고 시스템이 안정 상태를 유지하도록 자원을 할당한다.
할당 자원이 적으면 안정 상태가 크고, 할당 자원이 많으면 불안정 상태가 커진다.
불안정 상태가 커질수록 교착 상태가 발생할 가능성이 높아진다.
2.2 은행원 알고리즘
교착 상태 회피를 구현하는 방법 중 하나이다.
은행이 대출을 해주는 방식과 유사하기 때문에 은행원 알고리즘이라고 불리게 되었다.
변수 | 설명 |
전체 자원(Total) | 시스템 내 전체 자원의 수 |
가용 자원(Available) | 시스템 내 현재 사용할 수 있는 자원의 수 (가용 자원 = 전체 자원 - 모든 프로세스의 할당 자원) |
최대 자원(Max) | 각 프로세스가 선언한 최대 자원의 수 |
할당 자원(Allocation) | 각 프로세스에 현재 할당된 자원의 수 |
기대 자원(Expect) | 각 프로세스가 앞으로 사용할 자원의 수 (기대 자원 = 최대 자원 - 할당 자원) |
자원을 할당할 때 기준
: 가용 자원이 기대 자원보다 큰 지
- 각 프로세스의 기대 자원과 비교하여 가용 자원이 하나라도 크거나 같으면 자원을 할당한다. 가용 자원이 기대 자원보다 크다는 것은 그 자원을 사용하여 작업을 끝낼 수 있는 프로세스가 있다는 의미로 안정 상태이다.
- 가용 자원이 어떤 기대 자원보다 크지 않으면 할당하지 않는다. 가용 자원을 사용하여 작업을 마칠 수 있는 프로세스가 없다는 의미이므로 불안정 상태이다.
안정 상태
각 프로세스의 기대 자원과 비교하여 가용 자원이 크거나 같은 경우가 한 번 이상인 경우
위 예시를 통해서 보면,
왼쪽의 경우 가용 자원이 2개일 때, P2가 기대 자원이 2이므로 작업을 끝낼 수 있는 프로세스가 있으므로 안정상태이다.
P2의 작업이 끝나고 자원 6개를 반환 후 나머지 프로세스에 할당하면 작업을 완료할 수 있다.
오른쪽의 경우 가용 자원으로 작업을 끝낼 수 있는 프로세스가 없기 때문에 불안정 상태이다.
2.3 교착 상태 회피의 문제점
- 프로세스가 자신이 사용할 모든 자원을 미리 선언해야 한다.
- 모든 프로세스가 사용할 자원을 미리 선언하는 것이 어렵다.
- 미리 선언한 내용이 정확하지 않을 경우 교착 상태 회피에서도 교착 상태가 발생할 수 있다. - 시스템의 전체 자원 수가 고정적이어야 한다.
- 시스템 자원 수는 유동적이기 떄문에 어렵다. - 자원이 낭비된다.
- 교착 상태가 발생하지 않을 수도 있는데 자원을 할당하지 않는 것이 자원 낭비이다.
- 최대 자원을 사용하지 않고 작업을 마치는 경우
'CS 스터디 > 운영체제' 카테고리의 다른 글
[입출력 시스템] 1. 입출력 시스템 (0) | 2023.08.24 |
---|---|
[교착 상태] 5. 교착 상태 검출 / 교착 상태 회복 (0) | 2023.08.10 |
[교착 상태] 3. 교착 상태 예방 (0) | 2023.08.10 |
[교착 상태] 2. 교착 상태 해결 방법 (0) | 2023.08.06 |
[교착 상태] 1. 교착 상태의 정의와 필요조건 (0) | 2023.08.06 |