혼자 공부하는 컴퓨터구조 + 운영체제 13장

doxxx·2023년 2월 10일
0
post-thumbnail

Ch.13 교착 상태

13.1 교착 상태란

식사하는 철학자 문제

서로가 점거하고 있는 자원을 서로가 기다리고 있을 때 발생한다.

자원 할당 그래프

교착 상태가 발생했을 때의 상황을 그래프로 표현한 것이다.

프로세스는 원으로, 자원은 사각형으로 표현한다.

자원의 개수는 자원 사각형 내에 점으로 표현한다.

프로세스가 어떤 자원을 할당받아 사용 중이라면 자원에서 프로세스를 향해 화살표를 그린다.

프로세스가 어떤 자원을 기다리고 있다면 프로세스에서 자원을 향해 화살표를 그린다.

교착 상태가 발생한 자원 할당 그래프는 원의 형태를 띈다.

교착 상태 발생 조건

교착 상태가 발생하기 위해서는 다음 네 가지 조건이 모두 충족되어야 한다.

  1. 상호 배제(Mutual exclusion): 자원은 한 번에 한 프로세스만 사용할 수 있다.
  2. 점유 대기(Hold and wait): 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다.
  3. 비선점(No preemption): 프로세스가 어떤 자원을 점유하고 있으면 다른 프로세스가 강제로 뺏을 수 없다.
  4. 순환 대기(Circular wait): 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다.

13.2 교착 상태 해결 방법

교착 상태 해결 방법에는 크게 세 가지가 있다.

교착 상태 예방

  1. 상호 배제 조건을 제거한다. 모든 자원을 공유하게 만드는 것이다. 현실적이지 않다.
  2. 점유 대기 조건을 제거한다. 자원을 할당받은 후에 다른 자원을 요구하지 않도록 한다. 자원의 활용률을 낮춘다.
  3. 비선점 조건을 제거한다. 자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 자원을 뺏을 수 있도록 한다. 선점이 가능한 자원에 한해 효과적이지만 선점이 불가능한 자원에 대해서는 효과가 없다.
  4. 순환 대기 조건을 제거한다. 자원을 요구하는 순서를 정해 순환을 없앤다. 자원의 활용률을 낮춘다.

교착 상태 회피

교착 상태가 무분별한 자원 할당으로 인해 발생했다고 간주한다. 따라서 자원을 할당하기 전에 교착 상태가 발생하지 않을 것이라고 예상되는 경우에만 자원을 할당한다.

안전 순서열: 시스템의 자원을 할당해도 교착 상태가 발생하지 않는 순서열
안전 상태: 안전 순서열이 있는 상태.
불안전 상태: 안전 순서열이 없는 상태.

교착 상태 검출 후 회복

사후에 조치하는 방식이다.

선점을 통한 회복: 교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식.
프로세스 강제 종료를 통한 회복: 교착 상태가 해결될 때까지 교착 상태에 있는 프로세스를 강제로 종료시키는 방식.

0개의 댓글