오래 못 할 짓 하지 않기
[ 운영체제 ] 11. 교착 상태 해결 방법 본문
교착 상태 해결 방법 3가지
1. 예방 : 애초에 교착 상태가 발생하지 않도록
: 교착 상태 발생 조건 중 하나를 없애버리기
( 상호 배제, 점유와 대기, 비선점 , 원형 대기 )
- 상호 배제를 없애기
: 모든 자원을 공유하게 만든다?
→ 현실적으로 불가능
- 점유와 대기 없애기
: 특정 프로세스에 자원을 모두 할당 or 아예 할당 X 인 방식으로 배분
→ 자원의 활용률을 떨어뜨린다.
- 비선점 없애기
: 선점이 가능한 자원 (ex:CPU)에 한해 효과적
하지만 모든 자원이 선점 가능한 것은 아니다. ex) 프린터
- 원형 대기 조건 없애기
:
=
- 한계점
1) 모든 자원에 번호를 붙이는 것은 어렵다.
2) 어떤 자원에 어떤 번호를 붙이냐에 따라 활용률이 달라진다.
[ 교착 상태 예방 : 결론 ]
교착 상태가 발생하지 않음은 보장 가능하지만
부작용이 따른다.
2. 회피
● 교착 상태를 무분별한 자원 할당으로 인해 발생했다고 간주
교착 상태가 발생하지 않을 만큼 조심히 할당하기
= 배분할 수 있는 자원의 양을 고려하여 교착 상태가 발생하지 않을 만큼만 자원 배분
[ 방법 ]
1) 안전 순서열
: 교착 상태 없이 안전하게 프로세스들에게 자원을 할당할 수 있는 순서
ex) a-b-c 이렇게 할당하면 교착 상태 발생
c-a-b 이렇게 할당하니까 교착 상태 X => c-a-b가 안전 순서열
12개의 자원이 있음 / P1,P2,P3가 할당 받은 걸 합하면 9개
= 12 - 9 = 자원 3개가 남아있음 (배분 할 수 있음)
안전 순서열 : P2→ P1→P3
만약 P3에게 자원을 하나 더 할당한 채로 시작했다면
불안전 상태로, 교착 상태가 발생할 수 있다.
[ 요약 ]
- 안전 상태 → 안전 상태로 움직이는 경우에만 자원을 할당하는 방식
= 항시 안전 상태를 유지하도록 자원을 할당하는 방식
ex) 은행원 알고리즘
2) 안전 상태
: 교착 상태 없이 모든 프로세스가 자원을 할당 받고 종료될 수 있는 상태
= 안전 순서열이 있는 상태
3) 불안전 상태
: 교착 상태가 발생할 수도 있는 상태
= 안전 순서열이 없는 상태
2. 검출 후 회복
: 교착 상태가 일어난 이후에 조치하는 방식
- 프로세스가 자원을 요구하면 일단 할당하고 , 교착 상태가 검출되면 회복
● 회복 방법 2가지
1. 선점을 통한 회복
: 교착 상태가 해결될 때까지 한 프로세스씩 자원을 몰아주는 방식
2. 프로세스 강제 종료를 통한 회복
1) 교착 상태에 놓인 프로세스 모두 강제 종료 ( → 작업 내역을 잃을 위험 )
2) 교착 상태가 해결될 때까지 한 프로세스씩 강제 종료 ( → 오버헤드)
추가
교착 상태 무시
▶ 타조 알고리즘
교착 발생 빈도를 고려하여 효율성있게 무시하는 방법도 있다.
(출처)
유튜브 한빛미디어
'3학년 1학기 > 운영체제 (OS)' 카테고리의 다른 글
[ 운영체제 ] 13. 페이징을 통한 가상 메모리 관리 (0) | 2024.01.18 |
---|---|
[ 운영체제 ] 12. 메모리 할당 (0) | 2024.01.14 |
[ 운영체제 ] 10. 교착 상태 (0) | 2024.01.13 |
[ 운영체제 ] 9. 프로세스 동기화 기법 (0) | 2024.01.12 |
[ 운영체제 ] 9. 프로세스 동기화 (0) | 2024.01.11 |