5.3 교착상태 처리
> 교착상태 방지
- 교착상태의 필요조건 중 하나라도 발생할 수 없도록 막음
> 교착상태 회피
- 프로세스가 필요한 자원의 최대량에 대한 정보를 활용하여 교착상태가 발생하지 않도록 함
> 교착상태 탐지 및 복구
- 교착상태가 발생하면 이에 따른 적절한 조치를 취하여 정상 상태로 복구
5.3.1 방지
(1) 상호 배제 조건의 제거
- 공유할 수 있는 자원 : 상호 배제와 무관
- 공유할 수 없는 자원 : 반드시 상호배제 해야 함
☞ 상호배제 조건을 제거하여 교착상태를 방지하는 것은 불가능
(2) 점유 대기 조건의 제거
- 프로세스가 자원을 요청할 때 그 프로세스는 어떠한 자원도 할당받지 않은 상태여야 함
방법 1
> 프로세스가 수행을 시작하기 전에 필요한 모든 자원을 한꺼번에 요구하여 할당 받음
☞ 자원 이용률이 매우 낮아질 수 있음
방법 2
> 자원을 부분적으로 요청하여 할당받을 수 있도록 하되, 자원을 추가로 요청할 때에는
이전에 가지고 있던 자원을 반드시 모두 해제한 후 할당 받음
☞ 기아상태가 발생할 수 있음
(3) 비선점 조건의 제거
방법 1
> 자원을 점유하고 있는 프로세스가 즉시 사용할 수 없는 상황의
다른 자원을 요청하는 경우 점유하고 있던 자원을 해제
방법 2
> 프로세스가 가용하지 않은 자원을 요청
> 그 자원이 할당된 프로세스가 다른 자원을 기다리며 대기 중인지 조사
> 대기 중이면 대기 상태인 프로세스로부터 자원을 선점하여 요청한 프로세스에게
할당, 대기 중이 아니라면 요청한 프로세스는 대기
☞ 상태를 쉽게 보관하고 복구할 수 있는 자원이 아니라면 적용이 불가능
(4) 환형 대기 조건의 제거
- 모든 자원의 유형에 일련번호를 지정하기 위해 함수 f 정의
f: R -> N ( R : 자원 유형의 집합, N : 자연수 )
방법 1
> 프로세스는 자원을 일련번호 기준으로 항상 오름차순으로 요청
즉, 자원 ri를 점유하고 있는 경우 반드시 f(ri) < f(rj)를 요청할 수 있음
방법 2
> 프로세스가 자원 rj를 요구할 때마다 f(rj) ≤ f(ri)인 자원 ri는 모두 해제
☞ 함수 f의 정의는 전체 시스템의 성능에 큰 영향을 미치므로 실제로 사용되는 순서를 감안하여 정의해야 함
** 정리하기
- 교착상태(deadlock)는 2개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태이다.
- 교착상태의 필요조건은 상호 배제, 점유 대기, 비선점, 환형 대기 조건이며, 이 조건들이 모두 만족될 경우 교착상태가 발생할 수 있다.
- 교착상태를 처리하는 방법은 교착상태를 방지하는 방법, 교착상태를 회피하는 방법, 교착상태를 탐지하여 복구하는 방법 등이 있다.
- 교착상태를 방지하는 방법은 교착상태의 네 가지 필요조건 중 어느 하나라도 발생할 수 없도록 막는 방법이다.
'방송통신대학 > 운영체제' 카테고리의 다른 글
프로세스와 메모리 분할, 고정 분할 (0) | 2020.07.05 |
---|---|
교착상태 회피 알고리즘 (0) | 2020.07.02 |
교착상태 deadlock, 자원할당 (2) | 2020.06.30 |
프로세스 간의 통신IPC, Interprocess Communication (0) | 2020.06.23 |
프로세스의 상호협력 (0) | 2020.06.22 |