[운영체제] 교착 상태란 무엇인가요?

orca·2023년 11월 30일

CS

목록 보기
10/46

교착 상태란 두 개 이상의 프로세스가 서로의 작업이 끝나기를 기다리는 상황입니다.

교착 상태 필요 조건

교착 상태는 네 가지 조건을 만족하는 상황에서 발생합니다. 상호 배제, 비선점, 점유와 대기, 원형 대기입니다.

  • 상호 배제 : 하나의 자원은 동시에 하나의 프로세스만 사용 가능
  • 비선점 : 프로세스가 자원을 해제하지 않는 한 자원을 가져올 수 없음
  • 점유와 대기 : 프로세스가 하나의 자원을 할당받고 다른 자원을 기다림
  • 원형 대기 : 프로세스들이 순환 형태로 서로를 기다림

교착 상태 해결 방법

교착 상태 방지

  • 상호 배제 제거
  • 비선점 제거
  • 점유와 대기 제거
  • 원형 대기 제거

교착 상태 회피

  • 시스템의 상태를 안정 상태와 불안정 상태로 구분함
    • 안정 상태 : 각 프로세스의 기대 자원과 비교하여 가용 자원이 크거나 같은 경우가 한 번 이상일 때
    • 불안정 상태 : 각 프로세스의 기대 자원과 비교하여 가용 자원이 크거나 같은 경우가 없을 때
  • 시스템이 안정 상태를 유지할 수 있도록 자원을 할당함

교착 상태 탐지 및 회복

  • 교착 상태 탐지
    • 대기 그래프 : 자원 할당 그래프에서 프로세스와 프로세스 간 기다리는 관계만 나타낸 그래프
    • 그래프 감소 : 대기 그래프에서 작업이 끝날 프로세스의 화살표를 연속적으로 지워가는 것
  • 교착 상태 회복
    • 교착 상태를 유발한 프로세스를 강제 종료
      1. 교착 상태에 빠진 모든 프로세스 종료
      2. 하나의 프로세스를 골라 종료
        • 우선 순위가 낮은 프로세스 먼저
        • 현재까지 진행 상황이 짧은 프로세스 먼저
        • 자원의 필요량이 많은 프로세스 먼저

0개의 댓글