반응형
교착상태 필요조건
- 상호배제
- 점유대기
- 비선점
- 환형대기
상호배제
- 프로세스들이 자원에 대한 배타적인 통제권을 요구
- 적어도 하나 이상의 자원은 공동 사용될 수 없음
- 즉, 필요로 하는 자원을 다른 프로세스가 점유하고 있으면 반드시 대기해야 함
점유대기
- 프로세스가 이미 다른 자원을 할당받아 배타적으로 점유하고있는 상황에서 다른 프로세스가 점유하고 있는 자원이 해제되기를 기다리는 상호아
비선점
- 프로세스에 할당된 자원은 그 프로세스가 사용을 마치고 스스로 반환하기 전에 제거되지 않음
- 즉, 다른 프로세스에 의해서는 해제되지 않음
환형 대기
- 프로세스의 자원 점유 및 점유된 자원의 요구 관계가 환형을 이루며 대기
자원할당 그래프
정점 V = P U R
P: 프로세스
R: 자원
Q(p,r): 요구간선, p가 r을 요구함
S(p,r): 할당간선, r이 P에 할당됨
- 상호배제: 할당간선
- 점유대기: 할당간선+요구간선
- 비선점: 요구간선
- 환형대기: 사이클
교착상태 처리
교착상태 방지
- 교착상태의 필요조건 중 하나라도 발생할 수 없도록 막음
교착상태 회피
- 프로세스에 필요한 자원의 최대량의 대한 정보를 활용하여 교착상태가 발생하지 않도록 함
교착상태 탐지 및 복구
- 교착상태가 발생하면 이에 따른 적절한 조치를 취하여 정상 상태로 복구
교착상태 방지
1. 상호배제 조건의 제거
- 공유할 수 있는 자원: 상호배제와 무관
- 공유할 수 없는 자원: 반드시 상호배제 해야 함
- 상호배제 조건의 제거는 불가능
2.점유대기 조건의 제거
- 프로세스가 자원을 요청할 때 그 프로세스는 어떠한 자원도 할당받지 않은 상태여야 함
- 프로세스가 수행을 시작하기 전에 필요한 모든 자원을 한꺼번에 요구하여 할당받음 → 처리하지 않는 시간동안 리소스를 들고 있어서 자원 이용률이 매우 낮아질 수 있음
- 자원을 부분적으로 요청하여 할당받을 수 있도록 하되, 자원을 추가로 요청할 때에는 이전에 가지고 있던 자원을 반드시 모두 해제한 후 할당받음 → 기아상태가 발생할 수 있음
3.비선점 조건의 제거
- 자원을 점유하고 있는 프로세스가 즉시 사용할 수 없는 상황의 다른 자원을 요청하는 경우 점유하고 있던 자원을 해제 → 기아상태 발생 가능
- 프로세스가 가용하지 않는 자원을 요청, 그 자원이 할당된 프로세스가 다른 자원을 기다리며 대기 중인지 조사, 대기중이면 대기상태인 프로세스로부터 자원을 선점하여 요청한 프로세스에 할당. 대기 중이 아니라면 요청한 프로세스는 대기 → 상태를 쉽게 보관하고 복구할 수 있는 자원이 아니라면 적용이 불가능
4.환형대기 조건의 제거
- 프로세스는 자원을 일련번호 기준으로 항상 오름차순으로 요청
- 프로세스가 자원 r_i를 요구할 때마다 f(r_j) ≤ f(r_i)인 자원 r_i는 모두 해제
교착상태 회피
- 프로세스의 자원 사용에 대한 사전 정보를 활용하여 교착상태가 발생하지 않는 상태에 머물도록 하는 방법
- 사전 정보: 현재 할당된 자원, 가용상태의 자원, 프로세스들의 최대 요구랑
- 프로세스의 상태 영역: 안전 상태와 불안전 상태로 나뉜다
- 안전상태: 교착상태를 회피하면서 각 프로세스에게 그들의 최대 요구량까지 빠짐없이 자원을 할당할 수 있는 상태, 안전 순서열이 존재하는 상태이다.
- 불안전상태: 교착상태가 발생할 수 있는 상태. 안전 순서열이 존재하지 않는 상태이다.
안전 순서열
- 순서 있는 프로세스 집합 <p1, p2, p3, … pn >
- 각 p_i에 대해, p_1~p_i가 가용상태인지 체크
- 현재 리소스를 투입하여 먼저 해결할 수 있는 프로세스의 순서대로 처리
- 특정 프로세스가 리소스를 요구 했을 때, 안전 순서열을 유지하지 못하면 리소스를 할당해주지 않음
예시
r: 9개의 리소스, 6개를 프로세스에 할당해주고 3개가 남음
Pa: 7개의 리소스를 요구, 현재 0개의 리소스 할당됨
Pb: 3개의 리소스를 요구, 현재 1개의 리소스 할당됨
Pc: 9개의 리소스 요구, 현재 5개의 리소스 할당됨
- 현재 r에 남은 3개의 리소스를 이용해 해결가능한 프로세스는 Pb이기 때문에 Pb를 먼저 수행
- Pb에 할당되어있던 리소스 1개가 반환되어 r에는 4개의 리소스가 남음. 이를 이용하여 Pc를 수행
- Pc에 할당되어있던 리소스 5개가 반환되어 r에는 9개의 리소스가 남음. 이를 이용하여 Pa를 수행
- 안전 순서열은 < Pb, Pc, Pa > 로 결정되며, 이 케이스는 안전상태이다.
교착상태는 불안전상태에서 발생
- 프로세스가 가용상태의 자원을 요구하더라도 안전상태를 유지하기 위해 프로세스는 대기상태가 될 수 있음
교착상태 회피 알고리즘
각 자원 유형의 단위자원이 여러 개일 경우
- 은행원 알고리즘
각 자원 유형의 단위자원이 하나밖에 없는 경우
- 변형된 자원할당 그래프
은행원 알고리즘
- 자원을 요청받으면 그 자원을 할당해 주고 난 후의 상태를 계산해서 그것이 안전상태가 보장되는 경우에만 자원을 할당
- NEED = MAX - ALLOC
안전 알고리즘
- 현재 상태에서 안전 순서열이 존재하는지 체크
- 가용한 자원을 나타내는 WORK 변수를 이용, 초기값은 AVAIL
- 각 프로세스에 FINISH 변수를 이용하여 종료 상태를 체크
- 프로세스를 순회하며, NEED가 WORK보다 작다면 수행
- O(mn^2)
이후 리소스 요구가 들어온 경우, 요구값만큼 AVAIL의 값을 줄이고, 요구한 프로세스의 ALLOC, NEED값을 갱신한 다음 안전 알고리즘을 수행
변형된 자원할당 그래프
- 선언간선이 추가
- 선언간선: 앞으로 프로세스 p가 자원r을 요구하게 될 것임
교착상태 탐지
Shoshani와 Coffman 알고리즘
- 교착상태를 체크하는 알고리즘
- NEED 대신 REQ(현 시점에 요구하는 리소스 량)를 체크한다.
- 현재 상태에서 모든 프로세스가 처리 가능하면 교착상태가 아님
- O(mn^2)
시간복잡도가 크기 때문에 자주 실행하지 않는 것이 좋다.
- 즉시 받아들일 수 없는 할당요구가 있을 때
- 정해진 시간간격 또는 CPU 효율이 일정 수준 이하로 떨어질 때
교착상태 복구
복구의 주체
- 오퍼레이터: 수작업
- 시스템: 자동적으로 복구
복구의 방법
- 교착상태 프로세스를 종료
- 교착상태 프로세스로부터 자원을 회수
프로세스 종료
- 모든 교착상태 프로세스를 종료 → 복원 비용이 큼
- 사이클이 제거될 때까지 프로세스를 하나씩 종료 → 종료 대상을 선택하기 위한 비용이 큼
자원 회수
- 사이클이 제거될 떄까지 자원들 단계적으로 선점하여 다른 프로세스들에 할당
- 고려사항: 희생자 선택, 복귀, 기아사태
복합적 접근방법
- 자원 유형에 따라 방지, 회피, 탐지 및 복구 방법 중 적절하게 사용
- 때문에 실제 교착상태 처리는 더욱 복잡함
반응형
'공부 > CS공부' 카테고리의 다른 글
운영체제 - 분산 운영체제 정리 (방송통신대학교 운영체제) (0) | 2022.06.11 |
---|---|
운영체제 - 가상메모리 정리 (방송통신대학교 운영체제) (0) | 2022.06.11 |
운영체제 - 메모리관리 정리 (방송통신대학교 운영체제) (0) | 2022.06.11 |