상세 컨텐츠

본문 제목

운영체제 - 교착 상태

공부

by myeongjaechoi 2024. 4. 20. 18:07

본문

교착 상태

  • 무한정 대기 상태
  • 자원 점유를 못해 교착 상태 발생
  • 교착 상태에서 프로세스를 진행할 수 없음
  • 교착 상태에서 다수의 프로세스가 동시에 작업 불가

식사하는 철학자 문제

  • 교착 상태를 설명하기 위한 대표적인 예
  • 원형 식탁에 둘러 앉아 식사
  • 왼쪽에 있는 포크를 잡은 뒤 오른쪽에 있는 포크를 잡아야 식사가 가능

교착 상태 발생 조건

  • 상호 배제 - 프로세스간 자원을 공유할 수 없을 때
  • 비선점 - 프로세스간 자원을 빼앗을 수 없을 때
  • 점유와 대기 - 프로세스가 어떤 자원을 점유한 상태 + 다른 자원을 할당 받기를 대기한 상태
  • 원형 대기 - 점유와 대기를 하는 프로세스 간의 관계가 원형

식사하는 철학자에서의 교착 상태

  • 상태 배제 - 포크는 한 철학자가 사용하면 다른 철학자 사용 X
  • 비선점 - 포크는 한 철학자가 사용하면 다른 철학자가 빼앗을 수 없음
  • 점유와 대기 - 모두 왼쪽 포크를 잡으면 오른쪽 포크를 잡지 못해서 식사X -> 오른쪽 포크 기다림
  • 원형 대기 - 원형 식탁

교착 상태와 아사 현상의 차이

  • 아사 현상 - 우선 순위가 낮은 프로세스들이 CPU를 할당 받지 못해 실행이 지연
  • 교착 상태 - 교착 상태 발생 조건을 모두 만족시킨 프로세스들의 무한정 대기 상태

교착 상태 해결 방법

  • 교착 상태 예방 - 교착 상태 발생 조건 중에서 하나라도 발생되지 않도록 막음
  • 교착 상태 회피 - 시스템이 안정 상태이면 자원 할당, 불안정 상태이면 자원 할당X
  • 교착 상태 검출 및 복구 - 교착 상태가 검출되면 교착 상태를 발생시킨 프로세스 강제 종료 + 발생 전으로 시스템을 복구

교착 상태 예방

  • 상호 배제 막음 - 모든 자원을 공유하도록 하여 교착 상태를 막음
    • 단점 - 현실적으로 모든 자원을 공유할 수 없음
  • 비선점 막음 - 모든 자원을 빼앗을 수 있도록 함
    • 단점 - 임계영역과 상호 배제를 보장할 수 없음, 아사현상 발생
  • 점유와 대기 막음 - 프로세스가 시작 초기 모든 자원을 점유하여 대기하지 않도록 함
    • 프로세스가 모든 자원을 점유하거나 불가능하면 모든 자원 반남
    • 프로세스들은 모든 자원을 점유한 순서대로 실행
    • 단점 - 자원 낭비가 심함
  • 원형 대기 막음 - 모든 자원에 숫자를 부여하고 숫자가 큰 방향으로만 자원을 할당
    • 단점 - 현실적X Ex) 프린터 사용한 다음 마우스 사용하게

교착 상태 회피

  • 안정 상태 - 최대 자원의 수를 요구하는 경우라도 모든 프로세스들이 작업 완료할 수 있는 상태
    • 가용 자원 >= 기대 자원
  • 불안정 상태 - 가용자원 < 기대자원

교착 상태 검출 및 복구

  • 시스템에서 교착 상태가 발생하는 것을 허용
  • 가장 현실적인 방법
  • Timeout을 이용한 방법 - 일정 시간동안 작업이 진행되지 않는 프로세스는 교착 상태가 발생한 것으로 간주
  • 자원 할당 그래프를 이용한 방법
  • 복구 - 체크포인트와 롤백을 이용한 시스템 복구
    • 체크포인트 - 이전 시스템 상태로 복구하기 위한 백업 시점
    • 스냅샷 - 체크포인트에서 하드디스크에 저장되는 시스템 상태 백업 데이터
    • 롤백 - 체크포인트로 시스템 복구

관련글 더보기