- 교착 상태 (deadlock)
일어나지 않을 사건을 기다리며 진행이 멈춰 버리는 현상 - 자원 할당 그래프 (resource-allocation graph)
- 어떤 프로세스가 어떤 자원을 사용하고 있고, 어떤 프로세스가 어떤 자원을 기다리고 있는지 등을 표현하는 간단한 그래프
- 프로세스는 원으로, 자원의 종류는 사각형으로 표현
- 사용할 수 있는 자원의 갯수는 사각형 내에 점으로 표현
- 프로세스가 어떤 자원을 할당받아 사용 중이라면, 자원에서 프로세스를 향해 화살표로 표시.
- 프로세스가 어떤 자원을 기다리고 있다면, 프로세스에서 자원을 화살표로 표시.
- 교착 상태 발생 조건
- 상호 배제 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 상태.
- 점유와 대기 자원을 할당받은 상태에서, 다른 자원을 할당받기를 기다리는 상태.
- 비선점 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못하는 상태.
- 원형 대기 자원 할당 그래프가 원으로 그려지며, 원의 형태로 자원을 대기하는 상태.
- 교착 상태 예방
- 상호 배제 : 모든 자원을 공유 가능하게 만들어야 하므로, 현실적으로 무리.
- 점유와 대기 : 자원의 활용이 낮아지고, 기아 현상 우려.
- 비선점 조건 : 비선점 조건이 필요한 경우에는 범용성이 떨어짐.
- 원형 대기
- 모든 자원에 번호를 붙이고, 오름차순으로 자원을 할당.
- 네가지 중 가장 실용적인 방법이지만, 번호를 붙이는 방식에 따라 활용률이 떨어질 수 있음.
- 교착 상태 회피
- 교착 상태가 발생하지 않을 정도로만 자원을 할당하는 방식.
- 안전 상태 : 교착 상태가 발생하지 않고, 모든 프로세스가 정상적으로 자원을 할당받고 종료될 수 있는 상태.
- 불안전 상태 : 교착 상태가 발생할 수도 있는 상황. 안전 순서열이 없는 상태.
- 안전 순서열 : 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서.
- 교착 상태 검출 후 회복
- 교착 상태의 발생 후, 사후에 조치하는 방식.
- 선점을 통한 회복 : 교착 상태가 해결될 때까지 한 프로세스마다 자원을 몰아주는 방식.
- 프로세스 강제 종료를 통한 회복 교착상태에 놓여져있는 프로세스들을 일정한 규칙에 따라 강제 종료하면서, 교착 상태를 제거하는 방식.
- 타조 알고리즘 : 교착상태를 아예 무시하는 방식.
참고 : 혼자 공부하는 컴퓨터구조 + 운영체제 (강민철 저)
'CS지식 > 운영체제' 카테고리의 다른 글
| 운영체제 Ch.7 파일 시스템 (1) | 2023.09.05 |
|---|---|
| 운영체제 Ch.6 가상 메모리 (0) | 2023.01.30 |
| 운영체제 Ch.4 동기화 (0) | 2023.01.29 |
| 운영체제 Ch.3 CPU 스케쥴링 (0) | 2023.01.28 |
| 운영체제 Ch.2 프로세스와 스레드 (0) | 2023.01.20 |