본문 바로가기
CS/OperatingSystem

[운영체제] 교착상태 개요와 처리방법

by 별토끼. 2016. 11. 8.
반응형


  • Deadlock (교착상태)의 정의



- 두 개 이상의 프로세스가 필요한 자원을 기다리면서 무한정 중지된 상태



  • Deadlock (교착상태)의 발생 원인

- 제한된 자원의 이용률을 높이고 시스템 효용성을 높이려 한 것의 부작용




  • Deadlock의 발생 사례

1. 파일을 요청할 때

2. 다중 주변장치를 할당할 때

3. 디스크를 공유할 때 발생

4. 네트워크에서 발생

5. 전용장치를 할당할 때 발생

6. 스풀링 시스템에서 발생



  • Deadlock 발생 필요충분조건

상호배제 + 점유와 대기 + 비선점 + 순환대기 



  • Deadlock 처리기법

- Deadlock Prevention (예방)

- Deadlock Avoidance (회피)

- Deadlock Detection (탐지)

- Deadlock Recovery (복구)




1.  Deadlock Prevention

앞서 언급한 4가지 필요충분 조건이 발생하지 않도록 하는 방법이다.


-상호배제 

자원에 따라 다르므로 상호배제는 유지

ex) Read-only 경우 가능

write의 경우 상호배제를 해야함 (공유가 불가능)

-점유와 대기 방지

필요한 자원을 한꺼번에 요청하고 동시에 허용될때까지 프로세스 보류

-비선점 방지

강제로 자원을 회수하여 방지한다.

-순환대기 방지

모든 자원에 순서를 부여하여 순서 순으로만 자원을 할당한다.



2. Deadlock Avoidance

예방은 문제를 해결할 수는 있으나 장치의 비효율적 사용, 시서템 처리성능 저하의 문제 발생 -> 회피 대책을 사용

-프로세스 시작거부 : 

최대 요구량(현재 프로세스) + 최대요구량 > 최대값

-자원 할당의 거부 : 

자원 할당시 Deadlock 가능성이 높으면 할당 거부


* Deadlock Avoidance Algorithm

-자원 할당 그래프

-은행가알고리즘


2-1. Resource Allcoation Graph Algorithm

-단일 Instance

-Cycle이 존재하는가? -> Yes : 불안정상태

   No : 안정상태 (자원 할당 가능)


2-2. Banker's Algorithm

 -다중 Instance


 




3. Deadlock Detection

     교착상태가 발생하도록 허용하되 교착상태의 발생을 탐지하고 복구

-Detection Algorithm

-Recovery Algorithm


3-1. Detection Algorithm

- Multiple instances of resource

  Banker's algorithm의 변형 알고리즘을 활용한다.

*Available 

*Allocation

*Request ( != Need : Banker's algorithm과 차이점)

*Request[i,j]

- Single instance of resource

  wait-for graph (프로세스만 갖고 만든 그래프) 활용 알고리즘

-Cycle이 존재하는가? -> Yes : 불안정상태

            No : 안정상태(자원 할당 가능)



4. Deadlock Recovery

교착상태 복구 방법에는 프로세스 중단, 자원 선점 방법이 있다.

4-1. 프로세스 중지

 - 방법1 : 교착상태와 관련된 모든 프로세스를 중단

 - 방법2 : 교착상태가 해결될 때 까지 한 프로세스씩 중지

4-2. 자원 선점

 - 희생자의 선택

 - 이 때 희생자는 Rollback을 해줘야만 안전하다.

 - Starvation (기아 상태) : 특정 프로세스만 자원을 선점하지 못하는 상태

  : 해결책으로는 rollback 횟수를 측정하는 방법을 이용한다.

반응형

'CS > OperatingSystem' 카테고리의 다른 글

[운영체제] 교착상태와 기아상태의 차이점  (0) 2016.11.22

댓글