👩‍💻 알고리즘/🎛️ 컴퓨터 구조 & OS

[혼공학습단 12기] 13강 - 교착 상태

오브 🧙‍♂️ 2024. 8. 24. 03:41

[ 교착 상태 ] 

일어나지 않을 사건을 기다리며 진행이 멈춰버리는 현상 

( EX.  식사하는 철학자 문제 )

 

자원 할당 그래프

교착 상태를 간단히 표현할 수 있는 그래프

 

방법

1. 프로세스는 원으로, 자원의 종류는 사각형으로 표현

2. 사용할 수 있는 자원의 개수는 자원 사각형 내에 점으로 표현

3. 프로세스가 자원을 할당받아 사용 중이라면 자원에서 프로세스를 향해 화살표를 표시

4. 프로세스가 자원을 기다리고 있다면 프로세스에서 자원으로 화살표를 표시

 

=> 교착 상태가 발생하면 그래프가 원 모양이 된다.

 

교착 상태 발생 조건

1. 상호 배제

한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상황

2. 점유와 대기

자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상황

3. 비선점

어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못하는 상황

4. 원형 대기

프로세스들과 프로세스가 요청 및 할당받은 자원이 원의 형태를 이룬 상황

 

교착 상태 해결

1. 예방

교착 상태 발생 조건 중 하나를 충족하지 못하게 하는 방법

( 4가지 조건이 다 만족해야 교착 상태 발생 )

 

2. 회피

교착 상태가 발생하지 않을 정도로 자원을 할당하는 방법

안전 상태

교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서를 안전 순서열이라 하고, 안전 순서열대로 프로세스들에 자원을 배분하여 교착 상태가 발생하지 않는 상태 ( <-> 불안정 상태 )

 

3. 검출 후 회복

3-1. 선점을 통한 회복

교착 상태가 해결될 때까지 힌 프로세스씩 자원을 몰아주는 방식

다른 프로세스로부터 자원을 강제로 빼앗고 한 프로세스에 할당

3-2. 프로세스 강제 종료를 통한 회복

교착 상태에 놓인 프로세스를 모두 강제 종료할 수도 있고, 교착 상태가 없어질 때까지 한 프로세스씩 강제로 종료할 수도 있음. 전자는 가장 확실하지만 많은 작업 내역을 잃을 수 있고, 후자는 교착 상태가 없어졌는지 여부를 확인하는 과정에서 오버헤드를 야기함.