개요

시스템 측면에서 자원의 요구가 뒤엉킨 상태를 말한다.
한 프로세스 집합 내의 프로세스들에 의해 발생할 사건(event)를 프로세스들이 서로 기다리고 있는 상태를 말한다.
둘 이상의 작업이 보류 상태에 놓여 중요한 자원을 이용하기 위해 기다릴 때 발생한다.
제한된 자원 이용률을 높이고 시스템 효율성을 증가시키기 위해 사용하는 병행처리기술과 자원공유에 따른 부작용이다.

초기 일괄처리시스템

사용자들이 작업제어카드에 작업을 완료하기 위해 필요한 자원을 명시하여 교착상태가 자주 발생하지 않는다.
운영체제가 요청한 자원이 준비 큐로 이동하기 전 사용 가능 여부를 확인하여 할당한다.
자원이 확보되지 않으면 작업이 준비 큐로 이동할 수 없어 교착상태가 발생하지 않는다.

대화식시스템

동적 자원 공유로 자원의 이용도를 높이는 과정에서 교착상태가 발생한다.

DVD Drive 와 Printer 가 각각 하나씩 존재하고 다음과 같은 경우

  • Process P: DVD Drive 점유 >> Printer 요청
  • Process Q: Printer 점유 >> DVD Drive 요청

Tape Drive 가 3개 존재하고 다음과 같은 경우

  • Process P: Tape Drive 점유
  • Process Q: Tape Drive 점유
  • Process R: Tape Drive 점유

프로세스 자원 이용 순서

  • 요청: 프로세스가 자원을 요청한다. 요청을 즉시 받아들여지지 않으면 다른 프로세스가 사용중이므로 할당 받을때 까지 대기한다.
  • 사용: 프로세스가 요청한 자원을 사용한다.
  • 해제: 프로세스가 자원 사용을 마친 후 할당 받은 자원을 되돌려준다.

교착상태 발생 CASE

  • 파일 요청: 파일을 이용해 작업이 실행되는 동안, 파일에 대한 다른 작업의 점유 요청이 인정되면 교착상태가 발생한다.
  • 전용장치 할당: 두 사용자(P1, P2)가 각각 테이프 드라이브 1대를 사용하고 한 테이프에서다른 테이프로 복사하는 작업을 할 경우 교착상태가 발생한다.
  • 스풀링 시스템: 디스크에 할당된 스풀 공간의 출력이 완료되지 않은 상태에서 다른 작업이 스풀 공간을 모두 차지하면 교착상태가 발생한다.
  • 디스크 공유: 디스크는 대표적인 공유 자원으로, 사용에 대한 제어가 없다면 교착상태가 발생할 수 있다.
  • 네트워크: 붐비거나 입출력 버퍼 공간이 부족한 네트워크 시스템이 메시지 흐름을 제어하는 적절한 프로토콜을 가지지 못한 경우 교착상태가 발생한다.

교착상태 발생 조건

  • 상호배제

  • 점유와 대기

  • 비선점

  • 순한대기

  • 강건너기 교착상태

    1
    2
    3
    4
    5
    6
    7
    - 여러 개의 돌로 된 징검다리가 있는 강을 건너는 경우
    - 강을 건너는 사람을 프로세스(P), 징검다리의 돌을 자원(Data)라 가정한다.
    - 두 사람이 동시에 서로 다른 방향에서 출발, 강 중간에서 만나면 '교착상태가 발생했다.' 할 수 있다.
    - 돌을 딛는 것을 자원 할당, 발을 떼는 것을 자원 해제로 볼 때 동시에 같은 돌을 딛이려 하면 교착상태가 발생한다.
    - 각 사람은 돌 하나를 딛고 다음 돌을 요구한다.(점유와 대기 조건 만족)
    - 사람이 딛고 있는 돌을 강제로 제거할 수 없다.(비선점 조건 만족)
    - 왼쪽에서 오는 사람은 오른쪽 사람을, 오른쪽에서 오는 사람은 왼쪽 사람을 기다린다.(순환대기 조건 만족)
  • 강건너기 교착상태 해결방안

    • 둘 중 한 사람이 되돌아간다.(복귀)
    • 강을 건너기 전에 상대편 강 쪽을 확인하고 출발한다.
    • 강의 한 쪽 편에 우선권을 부여한다.

교착상태 해결 기법

  • 시스템이 교착상태가 되지 않도록 예방
  • 가능한 교착상태를 회피
  • 교착상태를 허용하되 교착상태에서 다시 회복 가능하도록(사용하기 어려움, 오버헤드 증가)

예방 기법

  • 상호배제 문제 고려
  • 하벤더, 1986년 상호배제를 제외한 3가지 기본 방법 제안
    • 각 프로세스는 한번에 필요한 모든 자원을 요구해야하며, 요청한 자원을 모두 제공 받기 전까지는 작업을 진행할 수 없다.
    • 어떤 자원을 점유하고 있는 프로세스의 요구가 더 이상 허용되지 않으면 점유한 자원을 모두 반납하고 필요할 때 다시 자원을 요구해야 한다.
    • 모든 프로세스에 자원을 순서대로 할당해야 한다. 모든 프로세스에 각 자원을 유형별로 할당 순서를 부여한 후, 순서에 따라 자원을 요구한다.

상호배제 조건 방지

  • 상호배제 조건은 자원의 비공유를 전제로 한다.
  • 일반적으로 상호배제 조건을 거부하면 교착상태를 예방하는 것이 불가능하다.
  • 파일 쓰기는 배차적인 접근만이 허용되어야 한다.

점유와 대기 조건 방지

비선점 조건 방지

비선점 조건 방지 - 대안

순환 대기 조건 방지

교착상태 회피 기법