반응형
교착 상태 해결 방법
지금까지 교착 상태의 개념과
대략적인 해결방안,
그리고 조건에 대해 알아보았다.
이번 시간에는 예방, 회피,
검출 후 회복과 같은 구체적인
교착 상태 해결 방법에 대해서 알아보겠다.
교착 상태 예방
교착 상태를 예방하는 방법은
위 게시물에서 알아본 교착 상태의
네 가지 조건들 중, 하나를 충족하지
못하게 하는 방법이다.
이에 대해 각 조건 별로
알아보면 다음과 같다.
네 가지 조건 중
하나라도 만족하지 않으면
교착 상태는 일어나지 않는다.
교착 상태 조건 별 예방 방법 | 설명 |
상호 배제 없애기 | 모든 자원을 공유하게 만듦으로 이론상 교착 상태를 해결할 수 있으나, 현실 사용에는 무리가 있다. |
점유와 대기 없애기 | 한 프로세스에 자원을 모두 할당하거나 아예 할당하지 않는 방식으로 배분함으로 교착 상태를 해결할 수 있으나, 자원의 활용율이 낮아질 우려가 있고 많은 자원을 사용하는 프로세스가 불리해지는 기아 현상이 발생할 수 있다. |
비선점 없애기 | 자원을 빼앗을 수 있으므로 CPU와 같은 일부 자원에 대해서는 효과적이다. 그러나 모든 자원이 선점이 가능한 것은 아니므로 범용성이 떨어진다. |
원형 대기 없애기 | 모든 자원에 번호를 붙여 오름차순으로 자원 할당하는 현실적인 방법으로 구현할 수 있으나, 번호를 일일이 붙이는 작업이 복잡하고 번호를 부여하는 방식에 따라 특정 자원의 활용률이 떨어질 수 있다. |
위와 같이 교착 상태를 예방하는 방식은
이론적으로는 가능하지만
여러 부작용이 따른다.
교착 상태 회피
교착 상태 회피 방식은
안전 상태를 유지하도록
자원을 할당하는 방식이다.
여기서 안전 상태(Safe state)란
모든 프로세스가 정상적으로 자원을 할당받고
종료될 수 있는 순서인 안전 순서열이
있는 상태를 말하며,
반대로 교차 상태가 발생할 수 있는,
즉 안전 순서열이 없는 상태를
불안전 상태(Unsafe state)라고 한다.
교착 상태 검출 후 회복
교착 상태 검출 후 회복은
교착 상태를 인정하고
사후에 조치하는 방식이다.
이를 위해 운영체제는 프로세스들이
자원을 요구할 때마다 모두 할당하며,
교착 상태 발생 여부를 주기적으로 검사한다.
만약 교착 상태가 검출되면
다음과 같은 방식으로 회복한다.
회복 방법 | 설명 |
선점을 통한 회복 | 교착 상태가 해결될 때까지 한 프로세스에 자원을 몰아주는 방식 |
프로세스 강제 종료를 통한 회복 | 교착 상태 프로세스를 모두 강제 종료하거나 교착 상태가 없어질 때까지 한 프로세스 씩 강제 종료하는 방식 |
번외) 타조 알고리즘
타조 알고리즘(Ostrich algorithm)은
교착 상태를 아예 무시하는 방법이다.
다소 의아한 방식일 수 있으나
문제 발생 빈도나 심각성에 따라
이 방식이 적합할 때도 많다고 한다.
반응형
'개인 학습 > 운영체제' 카테고리의 다른 글
18 - 메모리 할당 (0) | 2023.02.13 |
---|---|
17 - 스와핑: 메모리 관리 기법 (0) | 2023.02.13 |
15 - 교착 상태 발생 조건 (0) | 2023.02.09 |
14 - 교착 상태 (0) | 2023.02.09 |
13 - 동기화 기법의 종류 (0) | 2023.02.09 |