스물두줄

컴퓨터시스템응용기술사 · 컴퓨터 구조 및 운영체제

교착 상태

교착 상태는 둘 이상의 프로세스가 서로 상대가 점유한 자원을 기다리며 진행하지 못하는 상태다. 두 사람이 서로 상대 손의 것을 달라고 하면서 자기 것은 놓지 않고 기다리는 상황과 같다. 교착은 자원 경쟁의 결과이지 프로세스 하나의 오류가 아니다. 교착과 기아는 구분해…

주요 장면

  1. 0:02 교착 상태란
  2. 0:24 필요조건 네 가지
  3. 0:49 자원 할당 그래프
  4. 1:14 교착과 기아 구분
  5. 1:43 해결 방법 비교
  6. 2:12 복구 예시
  7. 2:40 정리

대본

교착 상태란

교착 상태는 둘 이상의 프로세스가 서로 상대가 점유한 자원을 기다리며 진행하지 못하는 상태다.

두 사람이 서로 상대 손의 것을 달라고 하면서 자기 것은 놓지 않고 기다리는 상황과 같다.

교착은 자원 경쟁의 결과이지 프로세스 하나의 오류가 아니다.

교착과 기아는 구분해서 알아야 한다.

필요조건 네 가지

교착은 Coffman 조건 4가지가 동시에 성립할 때만 발생한다.

상호 배제, 점유와 대기, 비선점, 순환 대기가 그 네 가지다.

네 조건은 독립된 원인이라 어느 하나만 깨뜨려도 교착을 막을 수 있다.

실무에서는 자원에 순서 번호를 부여해 순환 대기를 없애는 방법이 가장 현실적이다.

자원 할당 그래프

자원 할당 그래프에서 P에서 R로 가는 간선은 요청, R에서 P로 가는 간선은 할당이다.

이 그래프에서는 P1→R1→P2→R2→P1 고리가 생겼다. 순환이 생긴 것이다.

자원 인스턴스가 하나씩이면 이 순환이 곧 교착 상태다.

그래서 탐지 방식은 주기적으로 그래프의 순환을 검사한다.

교착과 기아 구분

교착 상태와 기아 상태는 시험에서 자주 혼동되므로 구별해야 한다.

교착은 관련 프로세스 모두가 영원히 멈추는 것이고, 기아는 특정 프로세스만 자원을 받지 못하는 것이다.

기아는 우선순위 정책 때문에도 생기므로 원인이 교착과 다르다.

해결 방법 비교

앞 문제의 정답은 기아 상태다.

교착 상태 대응은 예방, 회피, 탐지와 복구, 무시로 나뉜다.

예방은 할당 전에 조건을 깨고, 회피는 할당할 때마다 안전 상태를 검사한다.

탐지 및 복구는 발생을 허용한 뒤 순환을 찾아 프로세스 종료나 선점으로 푼다.

무시 기법은 타조 알고리즘이라고도 하며, 범용 OS에서 많이 쓰인다.

복구 예시

가상의 예로 P1과 P2가 R1과 R2를 얽어 순환을 이룬 상황을 보자.

복구의 첫 단계는 희생자 후보를 정하는 것이다. 여기서는 우선순위가 낮은 P2를 고른다.

P2를 종료하면 R2가 해제되어 P1이 R2를 얻을 수 있다.

종료 대신 자원만 선점하면 P2를 롤백 시점으로 되돌린 뒤 R2를 넘긴다. 이후 순환이 없는지 다시 검사한다.

정리

정리하면 교착은 순환 대기로 프로세스들이 무한히 기다리는 상태다.

예방은 조건을 부정하고, 회피는 안전 상태를 검사하며, 탐지와 복구는 발생 후 처리한다.

답안에서는 교착과 기아를 구분하고, 예방과 회피와 탐지의 시점 차이를 한 문장으로 쓰자.

같은 장의 영상