[운영체제] 교착상태

공부·2022년 12월 10일
0

교착 상태의 특징

필요조건 : 필요하지만 결과를 보장하지 않는다.
충분조건 : 충분하여 결과를 보장한다.

교착 상태의 필요 조건
하나라도 만족하지 못 하면 교착 상태가 일어나지 않는다.
1. 상호 배제 : 자원 하나에 한 프로세스만 점유할 수 있다.
2. 점유와 대기 : 점유된 자원을 기다리는 다른 프로세스가 있어야 한다.
3. 비선점 : 가로챌 수 없다.
4. 순환 대기 : 순환이 만들어진다.


대기가 없으므로 교착상태가 아니다.
R -> P : P가 R을 점유하고 있다.
P -> R : P가 R을 사용하기 위해 대기하고 있다.


P3가 R2를 대기하고 있으므로 교착상태이다.


사이클이 있지만 P2가 대기하고 있는 자원이 없으므로 R1의 점유상태가 종료 예정이다. 그래서 교착상태가 아니다.

교착 상태 처리 방법

(1) 교착 상태 예방

네 가지 발생 조건 중 하나만 성립하지 않도록 한다. 사용 제약 조건을 정적으로 사전에 설정한다.

  1. 상호 배제 (Mutual Exclusion)
    임계구역에 대해 무결성을 훼손하지 않아야 하므로 이를 통해 교착을 방지하기는 어렵다.
  2. 점유와 대기 (Hold and Wait)
    요청할 자원(미래의 자원)을 미리 지정하여 다른 프로세서들이 점유하지 않도록 한다. 그러나 자원의 낭비가 매우 심하다.
  3. *비선점 (No preemption)
    점유중인 자원을 강제로 가로챈다. 그래서 수앻 중간 결과를 저장하고 중단해야 한다.
  4. 순환 대기 (Circular Wait)
    자원에 번호를 매겨 우선순위를 만든다. 높은 순서의 자원을 기다리는 건 가능하지만 낮은 순서의 자원을 기다리는 건 불가능하게 만들어 사이클을 통제한다. 하지만 낮운 순서의 자원은 점유할 수 없다. 그러나 제약이 커서 불편하다.

(2) 교착 상태 회피

사용 제약 조건을 동적으로 실행 중에 설정한다. 교착 상태 유발 가능성이 존재하면(불안정 상태), 자원 할당을 연기한다.

안정 상태 vs 불안정 상태

안정상태 : 안정 순열이 존재한다.
불안정상태 : 발생할 가능성이 존재한다.

요청을 받아들였는데 안정상태라면 받아들이고 아니라면 받아들이지 않는
다.

안정 순열이란?
영구적으로 끝낼 수 있는지 확인한다.

P2가 종료 됐을 때 요청할 수 있는 자원의 개수가 남은 자원의 개수보다 크다면 안정 순열이다. P3가 자원을 3개 점유하고 P2가 종료 됐을 때, P1이 5개를 요청했다면 남은 자원의 개수는 4개이기 때문에 불안정 순열이 된다.

profile
리액트

0개의 댓글