교착상태 발견

교착상태 발견 알고리즘

  • 자원 할당이 요구될 때마다 매번 수행될 수도 있고
  • 주기적으로 가끔 수행될 수도 있음
  • 요청 행렬과 할당 행렬 필요
  • P는 프로세스, R은 자원
  • 자원 벡터: 각각의 자원에 대해 할당할 수 있는 자원의 개수
  • 가용 벡터: 자원 벡터에서 해당 자원의 값 - 할당 행렬의 열 전체
P1P2P3P4
1(할당행렬이 0 교착상태 유발X)
  • 임시벡터 : 가용 벡터를 처음 복사
R1R2R3R4R5
0000 1 (반환 후)1
  • P3가 종료되고 난 후 자원 반환
  • P1, P2는 자원 벡터에서 할당 행렬을 빼면 음수로 되기 때문에 종료하지 못하는 프로세스임
P1P2P3P4
교착상태(종료할 수 없는데 할당행렬이 있음)교착상태(종료할 수 없는데 할당행렬이 있음)11(할당행렬이 0 교착상태 유발X)
R1R2R3R4R5
00011

교착상태 회복 알고리즘

  • 교착상태에 포함되어 있는 모든 프로세스 중지
  • 교착상태에 포함되어 있는 각 프로세스의 수행를 롤백시킴. 미리 정의한 체크포인트까지 되돌린 후 다시 수행
  • 교착상태가 없어질 때까지 교착상태에 포함되어 있는 프로세스들 하나씩 종료시킴
  • 교착상태가 없어질 때까지 교착상태에 포함되어 있는 자원을 하나씩 선점시킴

교착상태에 대한 통합적인 전략

전략

  • 자원들을 유형에 따라 서로 다른 클래스로 구분
  • 자원 클래스들 간에는 할당 순서를 두어 환형 대기를 막음
  • 클래스 내부의 자원들 간에는 각 클래스에 적절한 교착상태 해결 방법을 사용

시스템 자원의 클래스

  • 스왑 공간
    • 보조 기억장치 상의 메모리 블록
    • 프로세스 스와핑용
    • 필요한 모든 자원을 한꺼번에 요청
  • 프로세스 자원
    • 테이프 드라이브나 파일 같은 할당 가능한 장치 자원
    • 프로세스가 이 클래스에 속한 자원의 예상 사용 시간을 미리 예측 가능
      • 시간을 운영체제에 알려서 구현 가능
    • 자원 할당 순서를 미리 결정하는 교착상태 예방 방법도 사용 가능
  • 주 메모리
    • 페이지나 세그먼트 등의 단위로 프로세스들에게 할당되는 자원
    • 선점을 허용하는 교착상태 예방 방법
  • 내부 자원
    • 입출력 채널 같은 지원
    • 자원 할당 순서를 미리 결정하는 교착상태 예방 방법 사용 가능