2025-12-18
오늘 배운 것
13-1 교착 상태란
식사하는 철학자 문제
- 동그란 원탁에 다섯 명의 철학자가 앉아 있음
- 식사 순서
- 계속 생각을 하다가 왼쪽 포크가 사용 가능하면 집어듬
- 계속 생각을 하다가 오른쪽 포크가 사용 가능하면 집어듬
- 왼쪽과 오른쪽 포크를 모두 집어들면 정해진 시간동안 식사를 함
- 식사 시간이 끝나면 오른쪽 포크를 내려놓음
- 오른쪽 포크를 내려놓은 뒤 왼쪽 포크를 내려 놓음
- 다시 1번 부터 반복
- 문제 : 모든 철학자가 동시에 포크를 집어 식사를 하면 어떤 철학자도 식사를 할 수 없고 영원히 생각만 하는 상황 발생
- 교착 상태 : 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상
자원 할당 그래프
- 프로세스는 원으로 자원의 종류는 사각형으로 표현
- 사용할 수 있는 자원의 개수는 자원 사각형 내에 점으로 표현
- 프로세스가 어떤 자원을 할당 받아 사용 중이라면 자원에서 프로세스를 향해 화살표를 표시
- 프로세스가 어떤 자원을 기다리고 있다면 프로세스에서 자원으로 화살표를 표시
교착 상태 발생 조건
상호 배제
- 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없을 때 교착 생태 발생
점유와 대기
- 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태
비선점
- 비선점 자원은 그 자원을 이용하는 프로세스의 작업이 끝나야만 비로소 이용할 수 있기 때문에 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못했기 때문에 교착 상태 발생
원형 대기
13-2 교착 상태 해결 방법
교착 상태 예방
- 상호 배제 없애기
- 모든 자원을 공유가능하게 만든다 → 현실적으로 무리
- 점유와 대기 없애기
- 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분
- 단점
- 자원 활용률 낮아짐
- 많은 자원을 사용하는 프로세스가 불리함
- 비선점 조건을 없애기
- 선점하여 사용할 수 있는 일부 자원에 대해서는 효과적
- 그렇지 않은 것은 사용할 수 없음
- 원형 대기 조건 없애기
- 모든 자원에 번호를 붙이고, 오름차순으로 자원을 할당
- 단점
- 모든 컴퓨터 시스템 내에 존재하는 수많은 자원에 번호를 붙이는 일은 어려움
- 각 자원에 어떤 번호를 붙이는지에 따라 특정 자원의 활용률이 떨어짐
교착 상태 회피
- 한정된 자원의 무분별한 할당으로 인해 발생하는 문제를 해결
- 안전 상태
- 교착 상태가 발생하지 않고 모든 프로세스가 정상적으로 자원을 할당 받고 종료될 수 있는 상태
- 불안정 상태
- 안전 순서열
- 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서
- 교착 상태 회피하기 위해서는 시스템 상태가 안전 상태에서 안전 상태로 움직이는 경우에만 자원을 할당
교착 상태 검출 후 회복
- 교착 상태 발생을 인정하고 사후에 조치하는 방식
선점을 통한 회복
- 교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식
프로세스 강제 종료를 통한 회복
- 교착 상태에 놓인 프로세스를 모두 강제 종료 하거나
- 교착 상태가 없어질 때까지 한 프로세스씩 강제 종료
타조 알고리즘