CS/운영체제

[운영체제] 교착 상태 발생 조건과 해결 방법

s_omi 2024. 11. 29. 10:57
728x90
반응형
SMALL

교착 상태란?

프로세스를 실행하기 위해서는 자원이 필요한데, 두 개 이상의 프로세스가 각자 상대방이 가지고 있는 자원을 무작정 기다린다면 그 어떤 프로세스도 더 이상 진행할 수 없는 교착 상태가 된다.

교착 상태는 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상를 말한다.

 

교착 상태

1.  발생 조건

아래 조건 중 하나라도 만족하지 않는다면 교착 상태가 발생하지 않지만, 아래 조건이 모두 만족될 때 교착 상태가 발생할 가능성이 생긴다.

  • 상호 배제: 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상황
  • 점유와 대기: 어떠한 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태
  • 비선점: 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 않고 그 자원을 이용하는 프로세스의 작업이 끝나야만 이용하는 특성
  • 원형 대기: 자원 할당 그래프에서 프로세스들이 원의 형태로 자원을 대기하는 것

 

2.  해결 방법

운영체제는 이러한 교착 상태를 크게 예방, 회피, 검출 후 회복, 3가지 방법으로 해결한다.

프로세스들에 자원을 할당할 때 상호 배제, 점유와 대기, 비선점, 원형 대기 중 하나의 조건이라도 만족시키지 않게 할당하면 교착 상태는 발생하지 않는다.

 

2.1 예방

  • 상호 배제
    • 현실적으로 모든 자원의 상호 배제를 없애기는 어렵기에 이 방식을 현실에서 사용하기에는 다소 무리가 있다.
  • 점유와 대기
    • 운영체제는 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분한다.
    • 자원의 활용률이 낮아져 기아 현상을 야기한다.
  • 비선점
    • 일부 자원에 대해서는 효과적이지만 한 프로세스의 작업이 끝날 때까지 다른 프로세스가 기다려야 하는 자원도 있어 다소 범용성이 떨어진다.
  • 원형 대기
    • 모든 자원에 번호를 붙이고, 오름차순으로 자원을 할당하면 원형 대기는 발생하지 않는다.
    • 모든 컴퓨터 시스템 내에 존재하는 수많은 자원에 번호를 붙이는 일은 간단한 작업이 아니거니와 각 자원에 어떤 번호를 붙이는지에 따라 특정 자원의 활용률이 떨어질 수 있다.

 

2.2 회피

  • 안전 순서열: 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서
  • 안전 상태: 안전 순서열대로 모든 프로세스에 자원을 배분하여 교착 상태가 발생하지 않는 상태
  • 불안전 상태: 안전 순서열이 없는 상황으로 교착 상태가 발생할 수도 있는 상황
  • 정의
    • 교착 상태가 발생하지 않을 정도로만 조심 조심 자원을 할당하는 방식
    • 프로세스들에 배분할 수 있는 자원의 양을 고려하여 교착 상태가 발생하지 않을 정도의 양만큼만 자원을 배분하는 방법
    • 항시 안전 상태를 유지하도록 자원을 할당하는 방식

 

2.3 검출 후 회복

교착 상태 발생을 인정하고 사후에 조치하는 방식을 말한다.

검출 후 회복 방식에서 운영체제는 프로세스들이 자원을 요구할 때마다 그때그때 모두 할당하며, 교착 상태 발생 여부를 주기적으로 검사한다.

 

  • 종류
    • 선점을 통한 회복: 교착 상태가 해결될 때까지 다른 프로세스로부터 자원을 강제로 빼앗고 한 프로세스씩 자원을 몰아서 할당하는 방식
    • 프로세스 강제 종료를 통한 회복: 강제 종료하는 방식
      • 운영체제는 교착 상태에 놓인 프로세스를 모두 강제 종료
        • 한 방에 교착 상태를 해결할 수 있는 가장 확실한 방식
        • 그만큼 많은 프로세스들이 작업 내역을 잃게 될 가능성이 있음
      • 교착 상태가 없어질 때까지 한 프로세스씩 강제 종료
        • 작업 내역을 않는 프로세스는 최대한 줄임
        • 교착 상태가 없어졌는지 여부를 확인하는 과정에서 오버헤드를 야기
728x90
반응형
LIST