[운영체제] 교착상태 해결 기법
교착상태 해결 기법 - 회피
교착상태 회피 기법
교착상태의 예방보다 덜 엄격한 조건을 요구함으로써 자원을 좀 더 효율적으로 이용하는 것을 목적으로 함
교착상태가 일어날 가능성을 인정하고(세 가지 필요조건 허용) 교착상태가 일어나려고 할 때 적절히 회피하며, 이는 예방보다 더 병행성을 허용함
회피 기법은 크게 두 가지 방법 제시됨
- 프로세스의 시작 거부
- 프로세스의 요구가 교착상태를 일으킬 수 있다면 프로세스 시작을 중지 함
- e.g.) 현재 수행 중인 모든 프로세스의 최대 자원 요구량과 새로운 프로세스의 최대 요구량을 합한 자원 요구량을 수용할 수 있으면 새로운 프로세스를 수용
- 자원 할당의 거부
- 프로세스가 요청한 자원을 할당했을 때, 교착상태가 발생할 수 있다면 요청한 자원을 할당하지 않음
- 일반적으로 은행가 알고리즘(Banker’s Algorithm)이라 부름
- 교착상태 회피를 위해 자원이 언제 요구되는지에 대한 추가정보가 필요함
- 각 프로세스마다 요청과 해제에 대한 정확한 순서를 파악하고 있다면 요청에 따른 프로세스 대기 여부를 결정 가능함 - 요구를 받아들일 지 또는 기다리게 할지를 결정하기 위해 각 프로세스에 대한 요구와 해제를 미리 알고 있어야 함
- 필요한 정보의 양과 종류에 따라 다양한 교착상태 회피 알고리즘을 적용 할 수 있음
- 프로세스가 요청할 자원마다 최대치 정보를 미리 파악할 수 있다면 시스템이 교착상태가 되지 않을 확실한 알고리즘을 만들 수 있음
안정상태와 불안정상태
- 교착상태 회피 알고리즘은 시스템이 순환-대기 조건이 발생하지 않도록 자원 할당 상태를 검사함
- 자원 할당 상태는 사용 가능한 자원의 수, 할당된 자원의 수, 프로세스들의 최대 요구 수에 의해 정의됨
- 안정한 상태
- 각 프로세스에 자원을 할당할 수 있고(최대치까지), 교착상태를 방지할 수 있음
- 프로세스의 순서 <P1, P2, …, Pn>이 안정 순서란 의미는 모든 Pi가 요청하는 자원이 현재 사용 가능한 자원과 j > i인 모든 Pj가 점유하고 있는 자원들로 충족될 수 있음을 나타냄
- 프로세스가 Pi가 필요한 자원을 즉시 사용할 수 없다면, Pi는 모든 Pj가 끝날 때까지 기다렸다가 자원을 확보, 필요한 모든 자원 확보 시 지정된 작업을 끝내고 자원을 반납함
- Pi가 종료하면 Pi+1은 필요한 자원을 확보할 수 있으므로 처리를 계속 진행할 수 있음
- 불안정한 상태
- 안정한 상태처럼 프로세스의 자원 할당 및 해제의 순서가 명확히 존재하지 않는 경우
시스템 상태 변화
동일한 자원 12개와 프로세스 P0, P1, P2를 가진 시스템의 경우를 예를 들어 시스템 상태 변환을 설명함
시스템의 안정 상태
- 프로세스 P0은 자원을 10개 요구, P1은 4개, P2는 9개 요구함
- t0 시간에 프로세스 P0가 자원을 5개 점유, 프로세스 P1은 2개, 프로세스 P2는 2개를 점유 할 경우 사용가능한 자원은 3개임
- 실행 과정
- t0시간에 시스템은 안정상태이며, <P1, P0, P2> 순서는 안정 조건을 만족함
- 프로세스 P1은 사용가능한 자원을 2개 할당받아 실행한 후 반납 가능하므로 시스템의 여분 자원은 5개임
- P0은 사용가능한 자원 5개를 할당받아 실행 한 후 반납가능함
- 프로세스 P2가 필요한 자원을 할당받고 실행한 후 반납가능함
불안정상태
- 사용가능한 자원 1개를 어느 프로세스에 할당해도 프로세스를 만족시킬 수 없음
- 프로세스 P0에 남은장치를 할당하고 반납 전까지 다른 프로세스가 자원을 요구하지 않는 경우 교착상태를 피할 수 있음
안정상태에서 불안정상태로의 변환
- 아래의 표에서 프로세스 P2가 자원을 1개 더 요구할 경우, 이를 허용 시 불안정상태로 변환
구분 | 현재사용량 | 최대사용량 |
---|---|---|
P0 | 5 | 10 |
P1 | 2 | 4 |
P2 | 3 | 9 |
사용가능한 자원수 | 2 |
- 실행 과정
- 프로세스 P1은 사용가능한 자원 2개를 할당받아 실행한 후 장치를 반환
- 프로세스 P0은 자원 5개를 할당 받았지만 최대 10개가 필요하므로 5개를 더 요청하나, 최대 사용량만큼 자원을 할당할 수 없으므로 대기
- 프로세스 P2는 추가로 자원을 6개 요청하므로, 시스템은 교착상태가 됨
- 해결 방법
- 다른 프로세스들이 처리를 종료하고 자원을 반납할 때 까지 프로세스 P2를 대기시키면 교착상태를 회피할 수 있음