eunah.log
로그인
eunah.log
로그인
[CS] 교착 상태 해결 방법
정은아
·
2024년 2월 5일
팔로우
1
CS
구름톤 풀스택 4기
[도서] 혼자 공부하는 컴퓨터 구조 + 운영체제
목록 보기
31/36
운영체제는 교착 상태를 회피할 수도, 예방할 수도, 검출 후 회복할 수도 있다. 각각의 방법에 대해 알아보자
교착 상태 해결 방법
1. 예방
교착 상태 발생 조건에 부합하지 않게 자원을 분배하는 방법이다.
2. 회피
교착 상태가 발생치 않도록 자원을 조금씩 할당하며, 교착 상태 위험이 있으면 자원을 할당하지 않는 방법이다.
3. 검출 후 회복
자원을 제약없이 할당하다가 교착 상태가 검출되면 이를 회복하는 방법이다.
교착 상태 예방
교착 상태 발생 조건 네 가지 중 하나를 충족하지 못하게 하는 방법
1. 자원의 상호 배제 예방
모든 자원을 공유 가능하게 만든다.
이론적으로 교착 상태를 없앨 수 있으나, 현실적으로는 모든 자원의 상호 배제를 없애기 어려워 실제 적용은 힘들다.
2. 점유와 대기 예방
특정 프로세스에 자원을 모두 할당하거나 아예 할당하지 않는 방식으로 자원을 배분한다.
한계
자원 활용률이 낮아질 우려가 있다.
당장 자원이 필요해도 기다리는 프로세스와 사용하지 않는 자원을 오래동안 할당받는 프로세스가 생긴다.
많은 자원을 사용하는 프로세스가 불리해진다. 동시에 자원을 사용할 타이밍을 확보하기 어렵기 때문이다.
많은 자원을 필요로 하는 프로세스는 무한정 기다리는 기아현상이 발생할 가능성이 크다.
3. 비선점 조건 예방
자원을 이용 중인 프로세스로 부터 해당 자원을 빼앗는다.
선점하여 사용할 수 있는 일부 자원에 효과적이다.
한계
모든 자원이 선점 가능한 것은 아니다. 한 프로세스 작업이 끝날 때까지 다른 프로세스가 기다려야 하는 자원도 존재한다.
모든 자원을 빼앗을 수 없기 때문에 범용성이 떨어지는 방법이다.
4. 원형 대기 조건 예방
모든 자원에 번호를 붙이고 오름차순으로 자원을 할당하면 원형대기는 발생하지 않는다.
원형 상황이 되는 것을 방지한다. 현실적이고 실용적인 방법이다.
한계
컴퓨터 시스템 내 모든 자원에 번호를 붙이기 어렵다.
각 자원에 어떤 번호가 붙는지에 따라 특정 자원 활용률이 떨어질 수 있다.
교착 상태 회피
교착 상태 발생이 무분별한 자원 할당으로 인해 발생한다고 간주한다.
따라서 회피는 교착 상태가 발생하지 않을 정도로 조절해서 자원을 할당하는 방식으로 교착 상태를 피한다.
안전 상태와 불안전 상태
1. 안전 상태(safe state)
교착 상태가 발생하지 않게 모든 프로세스가 정상적으로 자원 할당 및 종료 될 수 있는 상태
안전 순서열이 있는 상태는 안전 상태이다. 안전 순서열대로 프로세스에 자원을 배분시 교착 상태는 발생하지 않는다.
안전 순서열(safe sequence): 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서
2. 불안전 상태(unsafe state)
교착 상태가 발생할 수도 있는 상황
안전 순서열이 없는 상황
불안전 상태에 시스템이 놓이면 교착 상태가 발생할 위험이 생긴다.
운영체제의 교착 상태 회피
운영 체제는 불안전 상태가 애초에 되지 않게끔 자원을 할당한다.
시스템 상태가 안전 상태에서 안전 상태로 움직이는 경우에만 자원을 할당한다.
회피 방식은 항시 안전 상태를 유지하도록 자원을 할당하는 방식이다.
이를 위해 각 프로세스의 최대 요구량을 고려해서 자원을 할당한다. 최대 요구량이 - 현재 할당 가능 자원보다 큰 경우, 아예 자원 할당을 하지 않는다.
교착 상태 검출 후 회복
교착 상태 발생을 확인하고 사후에 조치하는 방식이다.
운영체제는 프로세스들이 자원을 요구할 때마다 모두 할당하며, 교착 상태 발생 여부를 주기적으로 검사한다.
교착 상태가 검출되면 2가지 방식을 통해 회복한다.
교착 상태 회복 방식
1. 선점을 통한 회복
교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식이다.
다른 프로세스로부터 자원을 빼앗고 한 프로세스에 자원을 모두 몰빵해서 프로세스 진행을 완료한다.
2. 프로세스 강제 종료를 통한 회복
가장 단순하고 확실한 방식이다.
교착 상태에 놓인 프로세스를 모두 종료한다.
장점: 교착 상태를 해결할 수 있는 가장 확실한 방법
단점: 많은 프로세스들의 작업 내역을 잃게 된다.
한 프로세스씩 종료할 수 있다.
장점: 작업 내역을 잃는 프로세스를 최대한 줄일 수 있다.
단점: 교착 상태가 없어졌는지 확인하는 과정에서 오버헤드를 야기한다.
교착 상태 무시
드물게 발생하는 잠재적 문제를 무시로 대처하는 방법을 타조 알고리즘(ostrich algorithm)이라고 한다.
문제 발생 빈도나 심각성에 따라 최대 효율을 추구하는 경우는 이 방식이 적합할 때도 많다.
정은아
꾸준함의 가치를 믿는 개발자
팔로우
이전 포스트
[CS] 교착 상태란
다음 포스트
[CS] 연속 메모리 할당
0개의 댓글
댓글 작성