////
Search
Duplicate

교착 상태 - 주현

교착 상태

두 개 이상의 프로세스나 스레드가 서로가 자원을 얻지 못해서 다음 처리를 하지 못하는 상태
무한히 다음 자원을 기다리게 되는 상태
시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생

원인

필요조건 네가지 모두 만족 시켜야 교착 상태
1.
상호배제
한 프로세스가 자원을 독점, 다른 프로세스들은 접근 불가
2.
점유 대기
특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태
3.
비선점
다른 프로세스가 할당된 자원을 사용이 끝날 때까지 강제적으로 가져올 수 없음
4.
환형 대기
프로세스의 집합서 순환형태로 자원을 대기하고 있어야 함

해결 방법

책 내용

1.
자원을 할당할 때 애초에 성립 X 설계
2.
교착 상태 가능성이 없을 때만 자원이 할당, 프로세스당 요청할 자원들의 최대치를 통해 자원 할당 가능 여부를 판단하는 ‘은행원 알고리즘’ 사용 → 회피
3.
교착 상태가 발생하면 사이클이 있는지 확인, 관련 프로세스 하나씩 지움 → 탐지 및 복구

찾은 내용

1.
예방
예방
2.
회피
회피
3.
탐지 및 복구
탐지 및 복구
4.
무시
a.
교착 상태가 드물게 발생하는 시스템에서 일반적으로 사용하는 방법
b.
교착 상태 해결 비용 문제 때문 윈도우와 유닉스 포함 대부분의 운영체제가 이 방법 사용
c.
예시 - 프로세스 끄기 (응답 없음), 재부팅