반응형
교착 상태는 일어나지 않을 사건을 기다리며 진행이 멈춰버린 현상이다. 교착 생태가 일어난 자원 할당 그래프는 원의 형태를 띄고 있다.

교착 상태가 발생할 조건은 다음과 같다
- 상호 배제 : 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상태
- 점유와 대기 : 자원을 할당 받은 상태에서다른 자원을 할당 받기를 기다리는 상태
- 비선점 : 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못하는 상태
- 원형 대기 : 프로세스들이 원의 형태로 자원을 대기하는 상태
위 네 가지 조건 중 하나라도 만족하지 않으면 교착 상태가 발생하지 않는다. 즉 위 네 가지 조건을 모두 만족해야 교착 상태가 발생할 수 있다.
교착 상태 해결 방법
이러한 교착 상태를 해결하기 위해선 말 그대로 예방, 회피, 검출 후 회복하는 방법이 있다.
교착 상태 예방
애초에 교착 상태가 발생하지 않도록 교착 상태 발생 조건 중 하나를 없애버리는 방식으로 예방한다.
- 점유와 대기를 없애기 - 특정 프로세스에 자원을 모두 할당하거나 아예 할당하지 않는 방식으로 배분한다.. 자원의 활용률을 낮출 수 있는 방식이다.
- 비선점 조건을 없애기 - 선점이 가능한 자원(CPU 등)에 한해 효과적이다. 모든 자원이 선점 가능한 것이 아니라는 문제가 있다.
- 원형 대기 조건 없애기 - 자원에 번호를 붙이고 오름차순으로 할당한다. 이 방식으로 하면 원형 대기는 발생하지 않는다. 단 자원에 번호를 붙이는 것은 어려운 작업이며 어떤 자원에 어떤 번호를 붙이느냐에 따로 활용률이 달라진다.
교착 상태가 발생하지 않음은 보장할 수 있으나 여러가지 부작용이 있을 수 있다.
교착 상태 회피
교착 상태를 무분별한 자원 할당으로 인해 발생했다고 간주한다. 그래서 교착 상태가 발생하지 않을만큼 조심히 할당한다. 배분할 수 있는 자원의 양을 고려하여 교착 상태가 발생하지 않을 만큼만 자원을 배분한다.
- 안전 순서열 - 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서
- 안전 상태 - 교착 상태 없이 모든 프로세스가 자원을 할당 받고 종료될 수 있는 상태(안전 순서열이 있는 상태)
- 불안전 상태 - 교착 상태가 발생할 수도 있는 상태로 안전 순서열이 없는 상태이다. 안전 상태에서 안전 상태로 움직이는 경우에만 자원을 할당하는 방식으로 항시 안전 상태를 유지하도록 자원을 할당한다.
교착 상태 검출 후 회복
교착 상태의 발생을 인정하고 사후에 조치하는 방식이다. 프로세스가 자원을 요구하면 일단 할당하고 교착 상태가 검출되면 회복을 하는 방식이다.
선점을 통한 회복 - 교착 상태가 해결될 때까지 한 프로세스 씩 자원을 몰아주는 방식
프로세스 강제 종료를 통한 회복 - 교착 상태에 놓인 프로세스를 모두 종료한다. 작업 내역을 읽을 위험이 있다.
교착 상태가 해결될 때까지 한 프로세스 씩 강제 종료 - 오버헤드가 발생할 위험이 있다.
반응형
'CS' 카테고리의 다른 글
[CS] 프로세스,스레드,멀티스레드 (0) | 2024.02.29 |
---|---|
[CS] HTTP Method 종류 (0) | 2023.08.30 |
[CS] 운영체제 (4) 동기화 (0) | 2023.07.27 |
[CS] 운영체제 (3) CPU 스케줄링 (0) | 2023.07.20 |
[CS] 운영체제 (2) 프로세스 (1) | 2023.07.14 |