본문 바로가기

교착상태의 해결방안

교착상태의 해결방안

 

-교착상태 예방

  상호 배제 부정 : 상호 배제를 하지 않는 시스템으로 구축한다. 공유 자원을 동시에 접근이 허용 되므로 컴퓨터 시스템의 신뢰성은 보장 할수 없다.

  비 선점 부정 : 선점을 인정하는 것으로 언제든 실행 중인 프로세스나 공유자원을 중단하거나 빼앗을 수 있게 한다.

                       교착상태 예방 방법으로 가장 현실적이고 실현가능한 방식이다.

  점유와 대기 부정 : 각 프로세스는 한 번에 자신에게 필요한 모든 자원을 요구해야 하며, 이 요구가 만족되지 않으면 작업을 진행할 수 없다.

                          어떤 자원을 갖고 있는 프로세스가 더 이상 요구가 수용되지 않으면 원래 갖고 있던 자원을 일단 반납하고 필요하다면 다시 그 자원이나 다른 자원을 요구해야 한다.

  환형 대기 부정 : 환영 상태를 선형 대기 상태로 변환하는 것으로 모든 자원들을 선형 순서로 분류한다.

프로세스는 자신이 가지고 있는 자원의 앞과 뒤의 순서에 있는 자원들을 자유롭게 요청하게 하지 못하게 한다.

모든 프로세스에 각 자원 유형별로 할당 순서를 부여한다. 즉, 만일 한 프로세스가 주어진 유형의 자원을 할당받았으면 그 프로세스는 순서에 따라 나중에 위치하는 유형의 자원만을 요구할 수 있게 한다.

 

 

-교착상태 회피

프로세스가 자원을 요구할 때 시스템이 안전 상태를 유지할 수 있는 프로세스의 자원 요구만을 할당하여 주는 방안으로 자원 분배를 교착상태가 발생하지 않는 범위 내에서 하는 방안이다.

교착 상태 회피 방안으로 사용하는 알고리즘에는 Dijkstra가 제안한 기법인 은행원 알고리즘이 대표적이다.

 

 

-교착상태 발견

컴퓨터의 중단 원인이 교착상태인지 아니면 다른 이유인지를 파악하는 방안이다.

자원들과 프로세스들을 인접행렬로 표현하여 파악한다.

 

-교착상태 회복

교착상태를 회복하기 위해서는 교착상태가 발생한 프로세스들 중에 희생양을 정하는 일이다.

희생양이 정해지면 그 프로세스를 잠시 중단시키고 점유하고 있던 자원을 빼앗는 일이다.

자원을 빼앗을 희생양을 정하는 기준은 다음과 같다.

1.우선순위가 낮은 프로세스의 자원을 선점하여 프로세스를 일시 중단시킨다.

2. 처리된 진행 상태가 적은 프로세스의 자원을 선점하여 프로세스를 일시 중단시킨다.

3.자원을 적게 사용하고 있는 프로세스의 자원을 선점하여 프로세스를 일시 중단시킨다.