본문 바로가기
CS

[CS] 운영체제 (5) 교착 상태

by BK0625 2023. 7. 28.
반응형

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

 

 

교착 상태가 발생할 조건은 다음과 같다

 

  1. 상호 배제 : 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상태
  2. 점유와 대기 : 자원을 할당 받은 상태에서다른 자원을 할당 받기를 기다리는 상태
  3. 비선점 : 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못하는 상태
  4. 원형 대기 : 프로세스들이 원의 형태로 자원을 대기하는 상태

 

위 네 가지 조건 중 하나라도 만족하지 않으면 교착 상태가 발생하지 않는다. 즉 위 네 가지 조건을 모두 만족해야 교착 상태가 발생할 수 있다.

 

 

교착 상태 해결 방법

이러한 교착 상태를 해결하기 위해선 말 그대로 예방, 회피, 검출 후 회복하는 방법이 있다.

 

교착 상태 예방

애초에 교착 상태가 발생하지 않도록 교착 상태 발생 조건 중 하나를 없애버리는 방식으로 예방한다.

 

  • 점유와 대기를 없애기 - 특정 프로세스에 자원을 모두 할당하거나 아예 할당하지 않는 방식으로 배분한다.. 자원의 활용률을 낮출 수 있는 방식이다.
  • 비선점 조건을 없애기 - 선점이 가능한 자원(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