본문 바로가기
책/혼공 컴퓨터구조+운영체제

운영체제 - 교착 상태 해결 방법(예방, 회피, 검출 후 회복)

by 코딩하는 돼징 2024. 2. 15.
반응형

1. 교착 상태 예방

교착 상태 발생 조건(상호 배제, 점유와 대기, 비선점, 원형 대기)중 하나를 없애기

01 상호 배제 없애는 경우

모든 자원을 공유 가능하게 만든다는 말과 같다. 이는 현실적으로 사용하기에는 무리가 있다.

02 점유와 대기를 없애는 경우

만약 점유와 대기를 없앤 다면 특정 프로세스에 자원을 모두 할당하거나 아예 할당하지 않는 방식으로 배분된다. 이론적으로는 해결할 수 있지만 자원의 활용률이 낮아지는 문제가 생긴다.

03 비선점 조건을 없애는 경우

비선점 조건을 없애면 자원을 이용 중인 프로세스로부터 해당 자원을 빼앗을 수 있게된다. 선점이 가능한 자원(e.g. CPU)에 한해 효과적이다. 그러므로 모든 자원이 선점 가능한 것이 아니다.

04 원형 대기 조건을 없애는 경우

모든 자원에 번호를 붙이고 오름차순으로 자원을 할당하면 원형대기는 발생하지 않는다.  하지만 자원에 번호를 붙이는 것은 어려운 작업이다. 그리고 어떤 자원에 어떤 번호를 붙이느냐에 따라 활용률이 달라질 수 있다.


2. 교착 상태 회피

교착 상태는 여러 프로세스가 서로 필요로 하는 자원을 소유한 채 대기하고 있는 상태로 각 프로세스가 다른 프로세스가 점유한 자원을 기다리며 자원을 해제하지 않는 상황이다. 이를 무분별한 자원할당으로 인한 문제로 간주하는 것이 일반적이다. 무분별한 자원 할당을 피하기 위해서는 프로세스가 필요로 하는 자원을 미리 예약하거나 필요로 자원을 모두 할당할 수 있는지 미리 확인해야하고 자원 할당 시에는 배분할 수 있는 자원의 양을 고려하여 교착 상태가 발생하지 않을 만큼만 자원을 배분해야 한다. 이를 통해 모든 프로세스가 필요한 자원을 얻을 수 있고 교착 상태를 피할 수 있다.

01 안전 순서열

교착상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서

02 안전 상태

교착 상태 없이 모든 프로세스가 자원을 할당 받고 종료될 수 있는 상태이다.  안전 순서열이 존재하여 각 프로세스에게 자원을 안전하게 항당하는 순서가 있다.

03 불안전 상태

교착 상태가 발생할 수도 있는 상태이다. 안전 순서열이 없는 상태이다.


3. 교착 상태 검출 후 회복

교착 상태와 발생을 인정하고 사후에 조치하는 방식이다. 프로세스가 자원을 요구하면 일단 할당하고 교착 상태가 검출되면 회복, 선점을 통한 회복, 프로세스가 강제 종료를 통한 회복이 있다.

01 선점을 통한 회복

교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식이다. 교착 상태에 놓인 프로세스 중 하나를 선택하고 해당 프로세스가 점유한 자원을 강제로 해제하여 다른 프로세스에 할당한다.

02 프로세스가 강제 종료를 통한 회복

교착 상태에 놓인 프로세스가 모두 강제 종료한다. 교착 상태가 해결될 때까지 한 프로세스씩 강제로 종료하는 방식도 있다. 하지만 이 방ㅂ버은 해당 프로세스가 실행 중이던 작업을 중단시키므로 작업 내역을 손실할 위험이 있다. 또한 프로세스를 강제로 종료하는 과정은 시스템에 오버헤드를 발생시키기 때문에 효율적이지 않을 수 있다.

 

 

 

 

 

 

참고 :  본 내용은개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제강의를 수강하여 작성하였습니다. https://www.inflearn.com/course/%ED%98%BC%EC%9E%90-%EA%B3%B5%EB%B6%80%ED%95%98%EB%8A%94-%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C/dashboard

 

 

 

 

 

반응형

댓글