이 포스트 내용은 박미진 컴퓨터일반시나공 정보처리기사 요약집를 참고하여 작성한 글입니다.

교착 상태

  • 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상

교착 상태의 필요조건

이름  
상호배제 (Mutual Exclusion) 한번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 함
점유와 대기 (Hold and Wait) 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 함
비선점 (Non-preemption) 프로세스가 종료되어야 할당받은 자원 해제 가능/ 자원은 강제로 뺏을 수 없다
환형 대기 (Circular Wait) 공유 자원과 공유 자원을 사용하기 위해 대 기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구 해야 함

4가지 모두 만족해야한다

교착 상태의 처리 기법

  • 예방(Prevention) 기법

이름  
상호배제 부정 한번에 여러 개의 프로세서가 공유자원을 사용할 수 있도록 하는 것이지만, 실제로는 구현하지 않음
점유와 대기 부정 프로세스가 실행되기 전 필요한 모든 자원을 할당하여 프로세스 대기를 없애거나 자원이 점유되지 않은 상태에서만 자원을 요구하도록 함
비선점 부정 자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고, 요구한 자원을 사용하기 위해 기다리게 함/ 자원 도중 해제 가능
환형 대기 부정 자원을 선형 순서로 분류하여 고유 번호를 할당 하고, 각 프로세스는 현재 점유한 자원의 고유 번호보다 앞이나 뒤 어느 한쪽 방향으로만 자원을 요구하도록 하는 것/ 즉 순서를 매긴다.
  • 회피(Avoidance) 기법

    교착 상태가 발생할 가능성을 배제하지 않고, 교착 상태가 발생하면 적절히 피해가는 방법으로, 주로 은행원 알고리즘(Banker’s Algorithm)이 대표적이다.

    은행원 알고리즘 - 프로세스가 어떤 자원을 요청하고 이 자원을 할당했을 때 교착상태가 발생할 수 있다면 자원을 할당하지 않는다.

    운영체제가 현재 모든 사용자들에게 그들 모두의 작업이 일정 기간 내에 끝나도록 해줄 수 있으면 현재 시스템의 상태는 안정하다고 하며 그렇지 않으면 현재 시스템의 상태가 불안전하다고 한다.

    불안전상태 : 교착상태는 불안전 상태이지만 불안전 상태라고 해서 모두 교착상태인 것은 아니다.

    thread

    불안전 상태
    • 안정 상태

      3개의 프로세스, 총 자원이 12개, 현재 할당량은 10개, 잔여량은 2개

      프로세스 현재할당량 최대요구량 추가요구량
      A 2 9 7
      B 4 6 2
      C 4 8 4

      프로세스 B → 프로세스 C → 프로세스A 순으로 자원을 할당하면 모든 프로세스의 수행을 마칠 수 있다.

      세부과정
      1) 잔여량 2개를 B한테 줌 → 기존 잔여량 4 + 2 로 인해 B완료 → 6개 반환
      2) 잔여량 6개 중 4개를 C한테 줌 → C완료
      3) 잔여량 2+6 개중 7개를 A한테 줌 → A완료

    • 불안정 상태

      3개의 프로세스, 총 자원이 12개, 현재 할당량은 11개, 잔여량은 1개

      프로세스 현재할당량 최대요구량 추가요구량
      A 6 9 3
      B 3 9 6
      C 2 4 2

      남은 자원 1개로 할당받아 완료될 수 있는 프로세스가 존재하지 않는다.

  • 발견(Detection) 기법

    시스템에 교착 상태가 발생했는지 점검하여 교착 상태에 있는 프로세스와 자원을 발 견하는 것으로, 자원 할당 그래프 등을 사용함
    프로그램 수행도중 교착상태 탐지 알고리즘 호출하여 점검

  • 회복(Recovery) 기법

    교착 상태를 일으킨 프로세스를 종료하거나 교착 상태의 프로세스에 할당된 자원을 선점하 여 프로세스나 자원을 회복하는 것
    프로세스 정지[^1]- 자원섬점(회복)
    ex) 작업관리자 [^1]: 희생자가 선택되어 기아 발생확률이 높아진다.

댓글 쓰기