Operating System(OS)에 이어서 Part2에는 다음과 같은 순서*로 알아보겠습니다.
*공룡책을 기반
[프로세스 관리]
1. 프로세스
2. 스레드와 병행성
3. CPU 스케줄링
[프로세스 동기화]
4. 프로세스동기화
5. 동기화 예제
6. 교착상태
[메모리 관리]
7. 메인 메모리
8. 가상 메모리
[저장장치 관리]
9. 대용량 저장장치 구조
10. 입출력 시스템
[파일시스템]
11. 파일시스템 인터페이스
12. 파일시스템 구현
Operating System(OS) Part2 - 6. 교착상태(2/2)
4. 교착 상태 처리 방법 (Methods for Handling Deadlocks)
교착 상태를 처리하는 방법은 네 가지로 구분할 수 있습니다.
4.1 교착 상태 예방 (Deadlock Prevention)
교착 상태 예방은 교착 상태 발생 조건 중 하나라도 만족되지 않도록 하는 것입니다. 이는 자원 할당 정책을 통해 이루어집니다.
- 상호 배제: 자원의 공유 가능성을 최대화합니다. 일부 자원은 공유가 불가능하므로 이 조건을 항상 충족시키는 것은 어렵습니다.
- 점유와 대기: 프로세스가 자원을 요청하기 전에 모든 필요한 자원을 한 번에 요청하게 하거나, 자원이 점유되지 않았을 때만 새로운 자원을 요청하게 합니다.
- 비선점: 자원을 점유하고 있는 프로세스가 더 이상 필요하지 않은 자원을 강제로 해제하게 하거나, 필요한 자원을 얻지 못하면 현재 점유한 자원을 해제하도록 합니다.
- 순환 대기: 자원 유형에 순서를 부여하고, 프로세스가 자원을 요청할 때 정해진 순서대로 요청하게 합니다.
4.2 교착 상태 회피 (Deadlock Avoidance)
교착 상태 회피는 교착 상태가 발생할 가능성이 있는 자원 할당을 피하는 방법입니다. 이를 위해 시스템은 프로세스가 자원을 요청할 때마다 현재 상태와 미래의 자원 사용 가능성을 분석합니다. 대표적인 방법으로는 은행가 알고리즘 (Banker's Algorithm)이 있습니다.
- 은행가 알고리즘: 시스템은 각 프로세스가 최대 얼마만큼의 자원을 요청할 수 있는지를 미리 알고 있으며, 모든 자원 요청이 시스템을 안전한 상태로 유지하는지 확인합니다. 시스템이 안전한 상태라면 자원을 할당하고, 그렇지 않으면 요청을 거절합니다.
4.3 교착 상태 탐지 (Deadlock Detection)
교착 상태 탐지는 시스템이 주기적으로 자원 할당 상태를 검사하여 교착 상태를 발견하는 방법입니다. 교착 상태 탐지를 위해 자원 할당 그래프와 같은 자료구조를 사용합니다.
- 교착 상태 탐지 알고리즘: 자원 할당 그래프에서 사이클을 검사하여 교착 상태를 확인합니다. 사이클이 존재하면 교착 상태가 발생한 것입니다.
* 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받을 수 있습니다.
5. 교착 상태 회복 (Recovery from Deadlock)
교착 상태가 탐지되면 이를 회복하기 위한 조치가 필요합니다.
- 프로세스 종료: 교착 상태를 해소하기 위해 교착 상태에 있는 하나 이상의 프로세스를 종료합니다.
- 비용 고려: 종료할 프로세스를 선택할 때, 각 프로세스를 종료하는 비용을 고려합니다. 우선순위가 낮거나 종료 비용이 적은 프로세스를 먼저 종료합니다.
- 자원 선점: 프로세스에서 자원을 강제로 회수하여 교착 상태를 해소합니다. 선점된 자원을 사용하는 프로세스는 이후에 다시 자원을 요청할 수 있습니다.
- 롤백: 자원을 선점할 때 프로세스를 이전 안전 상태로 롤백할 수 있도록 체크포인트를 사용합니다.
6. 결론
교착 상태는 운영체제에서 자주 발생할 수 있는 복잡한 문제입니다. 이를 예방하거나 회피하고, 탐지 및 회복하는 다양한 방법을 이해함으로써 시스템의 안정성과 효율성을 높일 수 있습니다. 적절한 교착 상태 처리 방법을 선택하는 것은 시스템의 요구 사항과 특성에 따라 달라질 수 있으며, 각 방법의 장단점을 고려하여 최적의 해결책을 적용해야 합니다.
'IT Auditor Study > 운영체제' 카테고리의 다른 글
[Part2-공룡책] 8. 가상 메모리 - Operating System(OS) (2) | 2024.06.06 |
---|---|
[Part2-공룡책] 7. 메인 메모리 - Operating System(OS) (0) | 2024.06.06 |
[Part2-공룡책] 6. 교착상태(1/2) - Operating System(OS) (0) | 2024.06.06 |
[Part2-공룡책] 5. 동기화 예제 - Operating System(OS) (0) | 2024.06.06 |
[Part2-공룡책] 4. 프로세스 동기화 - Operating System(OS) (0) | 2024.06.06 |