티스토리 뷰
교착 상태 해결 방법
교착 상태를 해결하는 방법은 예방, 회피, 검출, 회복 방법이 있다.
해결 방법 | 특징 |
교착 상태 예방 | 교착 상태를 유발하는 네 가지 조건을 무력화 한다. |
교착 상태 회피 | 교착 상태가 발생하지 않는 수준으로 자원을 할당한다. |
교착 상태 검출 | 자원 할당 그래프를 사용하여 교착 상태를 발견한다. |
교착 상태 회복 | 교착 상태를 검출한 후 해결한다. |
교착 상태 예방
- 상호 배제 예방
- 비선점 예방
- 점유와 대기 예방
- 원형 대기 예방
📗 상호 배제 예방
시스템 내에 있는 상호 배타적인 모든 자원, 즉 독립적으로 사용할 수 있는 자원을 없애버리는 방법이다. 시스템 내의 모든 자원을 공유할 수 있다면 교착 상태가 발생하지 않는다.
📗 비선점 예방
모든 자원을 빼앗을 수 있도록 만드는 방법이다. 하지만 어떤 기준으로 빼앗을지, 빼앗은 시간 중 얼마나 사용할지 등 결정하기 어렵고 아사 현상을 일으킬 수도 있다.
📗 점유와 대기 예방
프로세스가 자원을 점유한 상태에서 다른 자원을 기다리지 못하게 하는 방법이다. 다시 말해 '전부 할당하거나 아니면 아예 할당하지 않는'방식을 적용하는 것이다.
📗 원형 대기 예방
점유와 대기를 하는 프로세스들이 원형을 이루지 못하도록 막는 방법이다. 그러나 프로세스 작업 진행에 유연성이 떨어지고 자원의 번호를 어떻게 부여할 것인지에 대한 문제가 존재한다.
교착 상태 회피
프로세스에 자원을 할당할 때 어느 수준 이상의 자원을 나누어주면 교착상태가 발생하는지 파악하여 그 수준 이하로 자원을 나누어주는 방법이다.
문제점
- 프로세스가 자신이 사용할 모든 자원을 미리 선언해야 한다.
- 시스템의 전체 자원 수가 고정적이어야 한다.
- 자원이 낭비된다.
*은행원 알고리즘
은행이 대출해주는 방식
☞ 대출 금액이 대출 가능한 범위(안정 상태) 내이면 허용되지만 그렇지 않으면 거부
*안정 상태
☞ 각 프로세스의 기대 자원과 비교하여 가용 자원이 크거나 같은 경우가 한 번 이상인 경우
교착 상태 검출
운영체제가 프로세스의 작업을 관찰하면서 교착 상태 발생 여부를 계속 주시하는 방식이다.
📗 타임아웃
일정 시간 동안 작업이 진행되지 않은 프로세스를 교착상태가 발생한 것으로 간주하는 방법이다.
문제점
- 엉뚱한 프로세스가 강제 종료될 수 있다.
- 모든 시스템에 적용할 수 없다.
📗 자원 할당 그래프를 이용한 교착 상태 검출
교착 상태가 없는 자원 할당 그래프
실선 : 점유
점선 : 대기
교착 상태가 있는 자원 할당 그래프
이 방법은 프로세스의 작업 방식을 제한하지 않으면서 교착 상태를 정확하게 파악할 수 있다는 것이 장점이다.
그러나 오버헤드가 발생하는 단점이 있다.
교착 상태 회복
교착 상태를 유발한 프로세스를 강제로 종료하여 교착 상태를 회복한다.
- 교착 상태를 일으킨 모든 프로세스를 동시에 종료
- 교착 상태를 일으킨 프로세스 중 하나를 골라 순서대로 종료
좋아요는 로그인하지 않아도 누를 수 있습니다!
'운영체제' 카테고리의 다른 글
[쉽게 배우는 운영체제] 7장 : 물리 메모리 관리 [OS] (0) | 2021.09.10 |
---|---|
[쉽게 배우는 운영체제] 6장 연습문제(심화문제) 정답 [OS] (0) | 2021.09.06 |
[쉽게 배우는 운영체제] 6장 : 교착 상태 (1/2) [OS] (0) | 2021.09.05 |
[쉽게 배우는 운영체제] 5장 연습문제(심화문제) 정답 [OS] (0) | 2021.09.03 |
[쉽게 배우는 운영체제] 5장 : 프로세스 동기화 (2/2) [OS] (0) | 2021.09.03 |
- Total
- Today
- Yesterday
- 연습문제
- 그리디
- 자바스크립트
- 파이썬
- 정리
- 우종정
- 자바
- py
- 백준
- 프로그래머스
- java
- JS
- C++
- 운영체제
- CPP
- 답
- BFS
- 풀이
- 알고리즘
- Python
- OS
- 쉽게배우는자바프로그래밍
- 쉽게 배우는 자바 프로그래밍
- 쉽게배우는
- 문자열
- 해답
- Web
- 정답
- 정렬
- 구현
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |