[운영체제] 데드락을 해결하기 위한 3가지 방법

728x90

데드락을 해결하기 위한 방법은 크게 3가지로 구분된다.

예방 , 회피 , 탐지와 회복 의 3가지 주제로 설명하며 탐지와 회복은 하나의 주제로 묶인다.

 

예방은 데드락의 4가지 발생조건을 하나라도 발생하지 않게 하는 방법을 말한다.

상호배제,점유대기,비선점,순환대기 중 한개라도 예방할 수 있다면 데드락을 해결할 수 있다.

상호배제의 예방 : 프로세스들이 동시에 공유자원을 사용할 수 있게 한다.

점유대기 예방 : 프로세스가 자원을 점유하고 있으면 다른 자원을 기다리지 않게 만든다.

비선점 예방 : 우선순위 별로 프로세스끼리 자원을 빼앗아 올 수 있게 만든다.

순환대기 예방 : 프로세스가 자원을 순환 형태로 대기하게 하지 않고 그냥 프로세스를 일렬로 세워서

한 방향으로만 자원을 요구할 수 있게 한다.

 

회피는 프로세스에 자원을 할당하기 전에 어느수준이상의 자원을 나누어 주게 되면 데드락이 발생하는지

미리 파악해 그 수준 이하로만 자원을 할당하게 하는것을 말한다. 이를 구현한 알고리즘으로 은행원 알고리즘

이 있는데 추가적으로 포스팅할 예정이다.

 

탐지와 회복은 운영체제가 프로세스 작업을 계속 관찰하면서 데드락 발생 여부를 탐지하고 데드락이 처리된

프로세스 모두를 직접 종료하거나 우선순위가 낮은 프로그램을 종료하는등의 조치를 하는것을 말한다.