교착상태2

OwlSuri·2023년 4월 21일
0

방통대 운영체제

목록 보기
7/12

교착상태 회피

  1. 프로세스의 자원 사용에 대한 사전 정보를 활용하여 교착상태가 발생하지 않는 상태에 머물도록 하는 방법
  2. 사전정보
  • 현재 할당된 자원
  • 가용상태의 지원
  • 프로세스들의 최대 요구량

안전상태와 안전순서열

  1. 안전상태 -> 교착상태가 발생하지 않음
  • 교착상태를 회피하면서 각 프로세스에 그그들의 최대요구랭까지 빠짐없이 자원을 할당할 수 있는 상태
  • 안전순서열이 존재하는 경우
  1. 불안전상태
  • 안전순서열이 존재하지 않는 경우

안전순서열

  1. 순서있는 프로세스의 집합 <P1, P2,.......,Pn>
  2. 각 Pi에 대, Pi가 추가로 요구할 수 있는 자원의 양이 현재가용상태의 자원으로 충당되러가 혹은 여기에 Pj(단 j<i)에 할당된 자원까지 포함하여 충당 가능한 경우



  • P1이 한개를 먼저 요구했을경우 -> 교착강태 가능성 있음

교착상태 회피

  1. 교착상태는 불안전상태에서만 발생가능
  2. 항상 안전상태를 유지해야함
  3. 프로세시그 가용상태의 자원을 요구하더라도 프로세스는 대기상태가 될 수 있음
    • 자원이용율은 다소 낮아질 수 있음

교착상태 회피 알고리즘

  1. 각 자원의 단위자원이 하나밖에 없는 경우
    -> 변형된 자원할당 그래프 이용
  • 자원 정점에 표시하던 단위자원의 개수 제거
  • 선언간선 (Piri) 추가

    - 앞으로 프로세스 Pi가 자원 rj를 요구하게 될 것임
    - 요구간선과 구분을 위해 점선으로 표시

    -> 프로세스를 마칠떄까지 추가적으로 필요한 자원
  • 자원을 요구받으면 해당 선언간선을 요구간선으로 변경
  • 그 요구간선을 할당간선으로 변환해도 사이클이 생기지 않는 경우에만 자원을 할당하고 할당간선으로 변환
  1. 각 자원의 단위자원이 여러개일 수 있는 경우
    -> 은행원 알고리즘 이용
  • 자원을 요구받으면 그 자원을 할당해주고 난 후이 상태를 계산해서 그것이 안전상태인지 확인
  • 안전상태가 보장되는 경우에만 자원을 할당(안전하지않으면 할당안함)


-> 할당하지 않음

교착상태 탐지 및 복구

  1. 사후에 처리하는 방법
  2. 교착상태 탑지
  • 시스템의 교착상태 여부를 조사하기 위해 주기적으로 상태조사 알고리즘 수행
  1. 교착상태 복구
  • 교착상태가 탐지된 경우 적절한 조치를 취해 정상상태로 복구

교착상태 탐지

교착상태 복구

  1. 교착상태가 탐지되면 복구 조치
  2. 복구의 주체
  • 오퍼레이터 : 수작업
  • 운영체제 : 자동
  1. 복구방법
    -> 교착상태 프로세스 종료
  • 모든 교착상태 프로세스를 종료 -> 진행했던 내용에 대한 복원비용이 큼
  • 사이클이 제거될 때까지 교착상태 프로세스를 하나씩 종료 -> 종료대상을 선택하기 위한 비용 매 프로세스 종료 후 교착상태 재확인을 위한 비용

-> 교착된 프로세스가 할당받은 자원을 해제

  • 사이클이 제거될때까지 할당된 자원을 단계적으로 선범하여 다른 프로세스들에 할당
  • 프로세스와 자원 선택기준
    - 프로세스 진척도, 사용중인 자원의 수 등
  • 프로세스의 복귀 시점도 제반 요소를 고려하여 결정
  • 기아상태에 빠지지 않도록 프로세스 선택시 복구 횟수 고려
profile
기억이 안되면, 기록을 -

0개의 댓글