교착상태 발견
교착상태 발견 알고리즘
- 자원 할당이 요구될 때마다 매번 수행될 수도 있고
- 주기적으로 가끔 수행될 수도 있음
- 요청 행렬과 할당 행렬 필요
-
- P는 프로세스, R은 자원
- 자원 벡터: 각각의 자원에 대해 할당할 수 있는 자원의 개수
- 가용 벡터: 자원 벡터에서 해당 자원의 값 - 할당 행렬의 열 전체
| P1 | P2 | P3 | P4 |
|---|
| | | 1(할당행렬이 0 ⇒ 교착상태 유발X) |
| R1 | R2 | R3 | R4 | R5 |
|---|
| 0 | 0 | 0 | 0 → 1 (반환 후) | 1 |
- P3가 종료되고 난 후 자원 반환
- P1, P2는 자원 벡터에서 할당 행렬을 빼면 음수로 되기 때문에 종료하지 못하는 프로세스임
| P1 | P2 | P3 | P4 |
|---|
| 교착상태(종료할 수 없는데 할당행렬이 있음) | 교착상태(종료할 수 없는데 할당행렬이 있음) | 1 | 1(할당행렬이 0 ⇒ 교착상태 유발X) |
교착상태 회복 알고리즘
- 교착상태에 포함되어 있는 모든 프로세스 중지
- 교착상태에 포함되어 있는 각 프로세스의 수행를 롤백시킴. 미리 정의한 체크포인트까지 되돌린 후 다시 수행
- 교착상태가 없어질 때까지 교착상태에 포함되어 있는 프로세스들 하나씩 종료시킴
- 교착상태가 없어질 때까지 교착상태에 포함되어 있는 자원을 하나씩 선점시킴
교착상태에 대한 통합적인 전략
전략
- 자원들을 유형에 따라 서로 다른 클래스로 구분
- 자원 클래스들 간에는 할당 순서를 두어 환형 대기를 막음
- 클래스 내부의 자원들 간에는 각 클래스에 적절한 교착상태 해결 방법을 사용
시스템 자원의 클래스
- 스왑 공간
- 보조 기억장치 상의 메모리 블록
- 프로세스 스와핑용
- 필요한 모든 자원을 한꺼번에 요청
- 프로세스 자원
- 테이프 드라이브나 파일 같은 할당 가능한 장치 자원
- 프로세스가 이 클래스에 속한 자원의 예상 사용 시간을 미리 예측 가능
- 자원 할당 순서를 미리 결정하는 교착상태 예방 방법도 사용 가능
- 주 메모리
- 페이지나 세그먼트 등의 단위로 프로세스들에게 할당되는 자원
- 선점을 허용하는 교착상태 예방 방법
- 내부 자원
- 입출력 채널 같은 지원
- 자원 할당 순서를 미리 결정하는 교착상태 예방 방법 사용 가능