OS
5. 교착 상태 - 패스트캠퍼스 백엔드 부트캠프 3기
gkss2tpt
2025. 2. 19. 10:49
1. 교착 상태란 : 일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상
- 두 개 이상의 프로세스가 각자 가지고 있는 자원을 무작정 기다린다면 그 어떤 프로세스도 더 이상 진행 할 수 없는 교착 상태가 된다.
- 식사하는 철학자 문제 : 교착 상태가 어떤 상황에서 왜 발생하는지, 나아가 교착 상태를 어떻게 해결할 수 있는지를 엿볼 수 있는 가상의 문제 시나리오
- 자원 할당 그래프 : 어떤 프로세스가 어떤 자원을 사용하고 있고, 기다리고 있는지를 표현한 간단한 그래프
- 첫째, 프로세스는 원으로, 자원의 종류는 사각형으로 표현
- 둘째, 사용할 수 있는 자원의 개수는 자원 사각형 내에 점으로 표현
- 셋째, 프로세스가 어떤 자원을 할당받아 사용 중이라면 자원에서 프로세스를 향해 화살표를 표시
- 넷째, 프로세스가 어떤 자원을 기다리고 있다면 프로세스에서 자원으로 화살표를 표시
- 교착 상태 발생 조건 : 상호 배제, 점유와 대기, 비선점, 원형 대기가 모두 만족될 때 교착 상태가 발생할 가능성이 생긴다.
- 상호 배제 : 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없을 때
- 점유와 대기 : 자원을 할당받은 상태에서 다른 자원을 할당받기를 기다리는 상태
- 비선점 : 다른 프로세스의 자원을 강제로 빼앗지 못할때
- 원형 대기 : 자원 할당 그래프가 원의 형태로 그려지는 상태, 프로세스들이 원의 형태로 자원을 대기하는 것
2. 교착 상태 해결 방법
- 교착 상태 예방 : 프로세스들에 자원을 할당할 때 상호 배제, 점유와 대기, 비선점, 원형 대기 중 하나의 조건이라도 만족시키지 않게 할당하면 교착 상태는 발생하지 않는다.
- 자원의 상호 배제를 없앤다 : 모든 자원을 공유 하게 만든다.
- 점유와 대기를 없앤다 : 운영체제는 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분
- 단점 : 자원의 활용률이 낮아진다, 자원을 많이 사용하는 프로세스는 자원을 적게 사용하는 프로세스에 비해 동시에 자원을 사용할 타이밍을 확보하기 어렵고, 이는 기아 현상을 야기한다.
- 비선점 조건을 없앤다 : 자원을 이용 중인 프로세스로부터 해당 자원을 빼앗는다.
- 단점 : 범용성이 떨어진다.
- 원형 대기 조건을 없앤다 : 모든 자원에 번호를 붙이고, 오름차순으로 자원을 할당한다.
- 단점 : 모든 컴퓨터 시스템 내에 존재하는 수많은 자원에 번호를 붙이는 일이 쉽지않고, 특정 자원의 활용률이 떨어질 수 있다.
- 교착 상태 회피 : 교착 상태가 발생하지 않을 정도로만 자원을 할당하는 방식
- 안전 상태 : 교착 상태가 발생하지 않고 모든 프로세스가 정상적으로 자원을 할당받고 종료될 수 있는 상태
- 불안전 상태 : 교착 상태가 발생할 수도 있는 상황
- 안전 순서열 : 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서를 의미
- 교착 상태 검출 후 회복 : 교착 상태 발생을 인정하고 사후에 조치하는 방식
- 프로세스들이 자원을 요구할 때마다 그때그때 모두 할당하며, 교착 상태 발생 여부를 주기적으로 검사
- 선점을 통한 회복 : 교착 상태가 해결될 때까지 다른 프로세스로부터 자원을 강제로 빼앗고 한 프로세스에 할당하는 방식
- 프로세스 강제 종료를 통한 회복
- 교착 상태에 놓인 프로세스를 모두 강제 종료 : 한 방에 교착 상태를 해결할 수 있는 가장 확실한 방법 이지만 많은 프로세스들이 작업 내역을 잃게 될 가능성이 있다.
- 교착 상태가 없어질 때까지 한 프로세스씩 강제 종료 : 작업 내역을 잃는 프로세스는 최대한 줄일 수 있지만 교착 상태가 없어졌는지 여부를 확인하는 과정에서 오버헤드를 야기한다.
- 교착 상태 무시 : 잠재적 문제를 무시로 대처하는 방식 - 타조 알고리즘