교착 상태

심효은이다·2023년 6월 1일
0

정의

교착상태 : 2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태
아사현상 : 운영체제가 잘못된 정책을 사용하여 특정 프로세스의 작업이 지연되는 문제
교착상태 : 여러 프로세스가 작업을 진행하다 보니 자연 발생적으로 일어나는 문제

발생

시스템 자원 : 교착 상태는 다른 프로세스와 공유할 수 없는 자원을 사용할 때 발생
공유 변수 : 교착 상태는 공유 변수를 사용할 때 발생
응용 프로그램

  • 데이터베이스 같은 응용 프로그램에서도 교착 상태 발생
  • 데이터의 일관성을 유지하기 위해 잠금을 사용하는데 교착 상태가 발생할 수 있음

자원 할당 그래프

자원 할당 그래프

  • 프로세스의 방향성을 그래프로 표현
  • 프로세스는 원, 자원은 사각형으로 표현

다중 자원

  • 여러 프로세스가 하나의 자원을 동시에 사용
  • 수용 가능 프로세스 수를 사각형 안에 작은 동그라미로 표현

식사하는 철학자 문제

  • 왼쪽에 있는 포크를 잡은 뒤 오른쪽에 있는 포크를 잡아야만 식사 가능

교착상태 필요조건

4가지 조건 모두 발생해야 함

  • 상호 배제 : 한 프로세스가 사용하는 자원은 다른 프로세스와 공유할 수 없는 배타적인 자원
  • 비선점 : 한 프로세스가 사용 중인 자원은 중간에 다른 프로세스가 빼앗을 수 없는 비선점 자원
  • 점유와 대기 : 프로세스가 어떤 자원을 할당받은 상태에서 다른 자원을 기다리는 상태
  • 원형 대기 : 점유와 대기를 하는 프로세스 간의 관계가 원을 이루어야 함

상호 배제, 비선점 조건 : 자원이 어떤 특징을 가지는지를 나타냄
점유와 대기, 원형 대기 조건 : 프로세스가 어떤 해우이를 하고 있는지를 나타냄

식사하는 철학자 문제, 교착상태 필요조건

  • 상호배제 : 포크는 한 사람이 사용하면 다른 사람 사용 불가
  • 비선점 : 철학자 중 어떤 사람의 힘이 월등하여 옆 사람 포크 뺏기 불가
  • 점유와 대기 : 한 철학자가 두 자원을 다 점유하거나 반대로 두 자원을 다 기다리기 불가
  • 원형 대기 : 철학자들은 둥그런 식탁에서 식사를 함, 원을 이룬다는 것은 선후 관계를 결정할 수 없어 문제가 계속 맴돈다는 의미

교착상태 예방

상호 배제 예방

  • 시스탬 내 독점적 사용 가능 자원 삭제
  • 상호 배제 무력화 어려움

비선점 예방

  • 모든 자원 빼앗기 가능 방법
  • 아사현상 일으켜 무력화 어려움

점유와 대기 예방

  • 프로세스가 자원 점유 상태에서 다른 자원을 기다리지 못하게 하는 방법
  • 전부 할당 O / 할당 X
  • 자원이 아닌 프로세스의 자원 사용 방식을 변화시켜 교착 상태를 처리

단점

  • 모든 자원 자세히 알기 어려움
  • 자원 활용성 떨어짐
  • 많은 자원 사용하는 프로세스가 적은 자원ㅇ르 사용하는 프로세스보다 불리
  • 일괄 작업 방식으로 동작

원형대기 예방

  • 점유와 대기 프로세스들이 원형을 이루지 못하도록 막음
  • 모든 자원에 숫자 부여, 숫자 큰 방향으로만 자원 할당

원형 대기 예방과 교착 상태 해결


단점

  • 프로세스 작업 진행에 유연성 떨어짐
  • 자원의 변호를 어떻게 부여할 것인지 문제

교착상태 예방

=> 교착상태 유발하는 네가지 조건이 일어나지 않도록
=> 자원 보호하기 위해 상호 배제와 비선점 예방 어려움
=> 점유와 대기, 원형 대기는 프로세스 작업 방식을 제한하고 자원 낭비하기에 사용 불가

교착 상태 회피

  • 프로세스에 자원 할당 시 기준 자원 이상 나눠주면 교착 상태 발생하는지 파악하여 그 수준 이하로 자원 나눠줌
  • 교착 상태가 발생하지 않는 범위 내에서만 자원 할당, 교착 상태가 발생하는 범위에 있을 시 프로세스 대기
    => 할당되는 자원의 수를 조절하여 교착상태 피함

안정 상태 / 불안정 상태

  • 교착 상태 회피는 자원의 총수와 할당된 자원의 수를 기준으로 시스템 안정상태와 불안정상태로 나눔
  • 시스템이 안정 상태를 유지하도록 자원 할당
  • 할당 자원이 적으면 안정 상태 크고 늘어날 수록 불안정상태 커짐

은행원 알고리즘

  • 교착상태 회피 구현
  • 안정상태면 허용 불안정상태면 거부

할당 기준

  • 각 프로세스의 기대 자원과 비교하여 가용 자원이 하나라도 크거나 같으면 자원 할당

교착 상태 회피의 문제점

  • 프로세스가 자신이 사용할 모든 자원을 미리 선언해야 함
  • 시스템의 전체 자원 수가 고정적
  • 자원 낭비

교착 상태 검출

  • 운영체제가 프로세스의 작업을 관찰하며 교착 상태 발생 여부 계속 주시
  • 교착 상태 발견 시 이를 해결하기 위해 교착 상태 회복 단계

타임아웃

  • 일정 시간 동안 작업이 진행되지 않은 프로세스를 교착 상태가 발생한 것으로 간주하여 처리
  • 교착 상태가 자주 발생하지 않을 것이라는 가정하에 사용하기에 특별한 알고리즘이 없어 쉽구 구현 가능
  • 타임아웃이 되면 프로세스 종료

데이터베이스에서 타임아웃 문제

  • 데이터베이스에서 타임아웃으로 프로세스가 종료되면 일부 데이터의 일관성이 깨질 수 있음
  • 데이터의 일관성이 깨지는 문제를 해결하기 위해 체크포인트와 롤백 사용
    체크포인트 : 작업을 하다 문제 발생 시 저장 상태로 돌아오기 위한 표시
    롤백 : 작업을 하다 문제 발생 시 저장 상태로 돌아오는 것

교착 상태 회복

  • 교착 상태가 검출된 후 교착 상태를 푸는 후속 작업
  • 교착 상태 회복 단계에서 교착 상태를 유발한 프로세스 강제 종료

0개의 댓글