공부기록

교착상태 회피 본문

CS/OS

교착상태 회피

코타쿠 2021. 5. 14. 18:01
  • 교착상태 회피
    • 회피 방법은 발생 조건 1~3은 허용
    • 자원 할당시 교착상태가 발상 가능하지 않도록 고려
    • 예방 방법에 비해 더 많은 병행성을 제공 (효율성이 높음)
    • 교착상태 회피는 프로세스가 자원을 요청하고 그 자원이 사용가능 할 때 그대로 할당해 주지 않고, 이 할당이 교착상태를 발생 시킬 가능성이 있는지 조사
    • 교착 상태 발생 가능성이 있다면 자원을 할당하지 않음
    • 문제점 - 현재 자원의 가용 개수와 프로세스 자원 요구량을 미리 알고있어야 한다.
    • 회피 기법
      • 프로세스 시작거부
        • 프로세스가 시작하려 할 때 요구하는 자원 할당이 교착상태 발생의 가능성이 있으면, 프로세스를 시작시키지 않는 방법
      • 자원 할당 거부
        • 수행중인 프로세스가 요구하는 추가적인 자원 할당이 교착상태 발생의 가능성이 있으면, 자원을 할당하지 않는 방법
  • 프로세스 시작 거부
    • 자원 R = (R1, R2, ..., Rn)
    • 요구 C
      C11 .... C1M
      ... ... ...
      CN1 ... CNM
    • row1부터 각 column에 대해서 R이 채울 수 있는 자원이면 R에서 채우고 다음 행으로 넘어간다.
    • 다음 행으로 넘어갈 수 없다면 멈춘다.
    • 모든 프로세스들이 요구한 자원의 개수가 전체 자원 개수보다 적으면 교착 상태가 발생하지 않는다.
    • 교착 상태 회피를 위한 프로세스 시작 거부 방법은 다음 행으로 넘어 갈 수 있다면 새로운 프로세스의 시작을 허가하고, 그렇지 않다면 허가하지 않는 것이다.
    • 집합의 모든 프로세스들이 시작될 수 있는지를 검사한다.
    • 비효율적이다.
      • 최악의 경우를 가정하여 계산하기 때문에 비효율 적이다.
  • 자원 할당 거부
    • 은행원 알고리즘
    • 시스템의 상태를 안전한 상태 (safe state), 그렇지 않은 상태 (unsafe state)로 구분
  • safe state
    • V = R - A
    • C - A 벡터에서 P2가 수행가능하다.
    • P2의 A를 V에 더함
    • 계속 반복해서 모든 프로세스를 수행할 수 있다면 safe
      • 모든 프로세스가 자신의 자원요구량을 모두 만족하여 수행을 마칠 수 있는 경로가 존재한다.
  • unsafe state
    • C-A에서 현재의 V로 진행할 수 있는 경로가 없다.
  • 교착상태 회피의 장점
    • 교착상태 예방에 비해 자원 할당이 더 자유로움
    • 시스템에서 자원 효율이 높음
  • 교착상태 회피의 단점
    • 각 프로세스들이 사용할 최대 자원 요구량을 미리 운영체제에게 알려줘야함
    • 프로세스들은 서로 독립적이어야함
      • 프로세스 간 수행 순서가 종속적인 경우가 없어야 한다.

'CS > OS' 카테고리의 다른 글

메모리 관리 요구 조건  (0) 2021.05.17
메모리 곤리의 개요  (0) 2021.05.17
교착 상태 예방  (0) 2021.05.14
교착상태의 원리  (0) 2021.05.14
프로세스와 스레드  (0) 2021.05.14