내 잡다한 노트

챕터6. 교착 상태 해결 방법 본문

운영체제

챕터6. 교착 상태 해결 방법

peanutwalnut 2022. 8. 29. 14:04

교착 상태를 해결하는 방법은 예방, 회피, 검출, 회복이 있다.

예방과 회피는 방식이 까다롭고 비효율적이라 사용하지 않는다. 보통 검출을 통해 교착 상태를 확인하고

회복으로 문제를 해결한다.

 

교착상태검출

운영체제가 프로세스의 작업을 관찰하며 교착상태 여부를 주시하는 방식.

보통 타임아웃방식과 자원그래프방식 2가지를 사용한다.

 

타임아웃을 이용한 방식

일정시간 동안 작업이 진행되지 않는 프로세스를 교착상태가 발생한 것으로 간주하여 처리하는 방식이다.

이건 교착상태가 잘 일어나지 않을 것이라는 가정을 하고 해결하는 방식이다보니 문제가 생길 수 있다.

1. 교착 상태가 아님에도 작업이 진행되지 못하는 프로세스가 강제종료될 수 있다.

2. 모든 시스템에 적용할 수 없다. 하나의 운영체제 내에서 동작하는 프로세스들은 그 상태를 감시할 수 있지만

분산시스템에 경우에는 네트워크 문제인지 교착 상태때문인지 알 수가 없다.

 

데이터베이스의 교착 상태 처리는 운영체제보다 복잡하다.

데이터를 조작할 때는 반드시 잠금을 얻은 후 작업을 시작한다. 타임아웃으로 데이터의 일관성이 깨지는

문제를 해결하기 위해 체크포인트와 롤백을 사용한다. 체크포인트는 문제가 발생하면 저장된 상태로 되돌아오기

위한 표시이다. 체크포인트를 설정하면 현재의 시스템 상태가 하드디스크에 저장되는데, 저장된 데이터를 스냅숍이라고 한다. 롤백은 문제가 발생해 과거의 체크포인트로 되돌아가는 것을 뜻한다.

 

자원할당그래프를 이용한 방식

단일 자원을 사용할 때 사이클이 있다면 교착상태이다. 다중자원일 때는 사이클이 있다고 해서 교착상태라고

판단할 수 없다. 

 

교착 상태 회복

교착 상태를 일으키는 모든 프로세스를 강제로 종료시키거나 그중에 하나를 골라 순서대로 종료시킨다.

모두 종료시키면 다시 실행할 때 교착상태가 일어날 가능성이 있다.

하나를 골라 종료할 때는 기준이 필요하다. 보통 우선순위, 작업시간, 자원을 많이 사용하는지를 본다.