본문 바로가기
컴퓨터 구조 + 운영체제/혼자 공부하는 컴퓨터 구조 + 운영체제

_운영체제_ 13. 교착 상태

by 코딩기 2024. 1. 10.
728x90

13-1. 교착 상태란

두개 이상의 프로세스가 각자 가진 자원을 무작정 기다리면서 발생

  • 식사하는 철학자 문제
    교착 상태를 잘 표현할 수 있는 고전적인 문제
- 식사하는 철학자
원통형 탁자에 둘러앉고, 각자 음식이 있으며, 양옆에 포크 배치, 사람 수만큼 있는 포크로 식사
 1. 왼쪽이나 오른쪽 포크가 사용 가능하면 집어든다
 2. 왼쪽 오른쪽을 둘다 집을 시 식사한다
 3. 식사가 끝나면 오른쪽->왼쪽 순서로 포크를 내려놓는다
 4. 반복
-> 전부 다 식사하려고 포크를 집어들 경우, 영원히 하지못함(교착 상태)

- 해결법
 1. 교착 상태 발생 시의 상황을 정확히 표현
 2. 교착 상태 발생의 근본적 이유 인지
  • 교착 상태 표현법 : 자원 할당 그래프
    어떤 프로세스가 어떤 자원을 사용하는지, 어떤 프로세스가 어떤 자원을 기다리는지 표현

Pasted image 20240110143929.png

1. 프로세스는 원, 자원은 사각형으로 표시
2. 사용 가능 자원의 개수는 사각형 내 점으로 표시
3. 프로세스가 어떠한 자원을 받아 사용 중일시, 자원->프로세스로 화살표 표시
4. 프로세스가 어떠한 자원을 기다릴 시, 프로세스->자원으로 화살표 표시

위 사진과 같이 원의 형태를 띄는 자원 할당 그래프는 교착 상태를 의미

  • 교착 상태 발생 조건
    대표적인 발생 조건은 4가지로 하나라도 만족하지 않을 시 교착 상태 발생X
- 발생 조건
 1. 상호 배제
  한 프로세스가 사용하는 자원을 다른 프로세스가 사용 불가능한 경우
 2. 점유와 대기
  어떠한 자원을 할당받은 프로세스가 다른 자원을 기다리는 경우
 3. 비선점
  프로세스가 자원을 비선점(자원 이용 프로세스 작업이 끝나야함)하는 경우
 4. 원형 대기
  자원 할당 그래프가 원으로 그려지는 경우

13-2. 교착 상태 해결 방법

예방, 회피, 검출 후 회복을 통한 교착 상태 해결

  • 교착 상태 예방
    프로세스에 자원 할당시, 교착 상태 발생 조건 중 하나라도 만족시키기 않도록 미리 설정
1. 상호 배제X
 모든 자원을 공유 가능토록 만듦 -> 현실적으로 불가능
2. 점유와 대기X
 운영체제가 특정 프로세스에 자원을 모두 할당 or 할당X
 -> 자원의 활용률이 낮아짐, 많은 자원을 사용하는 프로세스 불리
3. 비선점X
 자원 이용중인 프로세스의 자원을 강탈 가능
 -> 유도리가 없어서 범용성이 떨어짐
4. 원형 대기X
 -> 모든 자원에 번호를 붙이고 오름차순으로 자원 할당
 -> 컴퓨터 시스템 내 모든 자원에 일일히 번호붙이기는 현실적으로 불가능, 활용률 또한 감소

-> 교착 상태 방지를 보장하긴 하나, 여러 부작용 존재
  • 교착 상태 회피
    교착 상태가 발생하지 않을 정도로만 자원 할당
- 교착 상태 회피 용어
1. 안전 상태 : 교착 상태가 발생하지 않으면서 모든 프로세스가 정상적으로 자원 할당 후 종료
2. 불안전 상태 : 교착 상태 발생 가능 상태
3. 안전 순서열 : 교착 상태 없이 안전하게 프로세스에 자원을 할당할 수 있는 순서
 -> 교착상태가 발생하지 않는 순서가 안전 순서열이며, 이것이 곧 안전 상태
  • 교착 상태 검출 후 회복
    교착 상태 발생을 인정하고 후조치하는 방식
1. 선점을 통한 회복
 교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식
2. 프로세스 강제 종료를 통한 회복
 교착 상태에 놓인 프로세스를 전부 강제종료 혹은 하나씩 강제종료
 -> 전자는 확실하지만 많은 프로세스가 작업 내역을 잃을 수 있음, 후자는 오버헤드 야기