- 교착 상태가 무엇인지 이해한다.
- 교착상태는 어떤 상황헤서 발생하는지 이해한다.
- 교탁 상태를 예방하고, 회피하고, 검출하는 방법에 대해 학습한다.
일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상
어떤 프로세스가 어떤 자원을 사용하고 있고, 또 어떤 프로세스가 어떤 자원을 기다리고 있는지를 표현한 간단한 그래프
➡ 교착 상태
가 발생한 상황은 자원 할당 그래프가 원의 형태
를 띄고 있음
- 상호 배제
- 점유와 대기
- 비선점
- 원형 대기
한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상황에서 교착 상태가 발생할 수 있음
어떠한 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다린다면 교착 상태가 발생할 수 있음
프로세스가 자원을 비선점(강제로 빼앗을 수 없음)하고 있으면 교착상태가 발생할 수 있음
자원 할당 그래프가 원형으로 그려지면 교착 상태가 발생할 수 있음
➡
네 가지 조건 중 하나라도 만족하지 않는다면 교착 상태가 발생하지 않지만, 모두 만족한다면 교착 상태가 발생할 가능성이 있음
- 예방
- 회피
- 검출 후 회복
교착 상태를 예방하는 방법은 교착 상태 발생 필요 조건 네가지 중 하나를 충족 못 하게 하는 방법
운영체제는 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분함
단점 1
: 자원의 활용률이 낮아질 우려가 있음단점 2
: 많은 자원을 사용하는 프로세스가 불리해짐➡
많은 자원을 필요로 하는 프로세스가 무한정 기다리게 되는 기아현상
야기선점하여 사용할 수 있는 일부 자원에 대해서는 효과적이나, 모든 자원이 선점 가능한 것은 아니기 때문에 다소 범용성이 떨어지는 방안
모든 자원에 번호를 붙이고, 오름차순으로 자원을 할당하면 원형 대기는 발생하지 않음
장점
: 앞선 세가지 방식보단 비교적 현실적이고 실용적인 방식 단점 1
: 모든 컴퓨터 시스템 내에 존재하는 수많은 자원에 번호를 붙이는 것이 간단하지 않음단점 2
: 각 자원에 어떤 번호를 붙이는지에 따라 특정 자원의 활용률이 떨어질 수 있음프로세스들에 배분할 수 있는 자원의 양을 고려하여 교착상태가 발생하지 않을 정도의 양만큼만 자원을 배분하는 방법
안전 상태
: 교착 상태가 발생하지 않고 모든 프로세스가 정상적으로 자원을 할당받고 종료될 수 있는 상태
불안전 상태
: 안전 순서열이 없어서 교착 상태가 발생할 수도 있는 상황
안전 순서열
: 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서
➡ 운영체제가 교착 상태를 회피하기 위해서는 시스템 상태가 안전상태
에서 안전상태
로 움직이는 경우에만 자원을 할당하면 됨
➡ 즉, 교착 회피 방식
은 항시 안전 상태를 유지하도록 자원을 할당하는 방식
교착 상태 발생을 인정하고 사후에 조치를 하는 방식
강제 종료 1번
- 교착 상태에 놓인 프로세스를 모두 강제 종료
장점
: 한 방에 교착 상태를 해결할 수 있는 가장 확실한 방식단점
: 프로세스들이 작업 내역을 잃게 될 가능성이 있음강제 종료 2번
- 교착 상태가 없어질 때까지 한 프로세스씩 강제 종료
장점
: 작업 내역을 잃는 프로세스는 최대한 줄일 수 있음단점
: 교착 상태가 없어졌는지 여부를 확인하는 과정에서 오버헤드 야기