독학사- 운영체제 편을 공부하고 정리한 내용입니다.
교착상태 deadlock
2개 이상의 프로세스가 서로 작업이 끝나기를 기다리는 상태로 더 이상 진행이 불가능한 상황을 교착상태라고 한다.
교착상태와 기아현상
- 기아현상: 다른 우선순위 프로세스가 완료되고 운영체제로부터 자원을 할당받을 때까지 기다리는 현상
- 교착상태: 여러 프로세스가 같이 자원을 사용하다 발생하는 더 이상 진행이 불가능한 상태가 되는 현상
- 교착상태 예시
P1 프로세스는 프린터를 사용 중이면서 디스크에 대한 사용을 요청 중에 있다.
P2 프로세스는 디스크를 사용 중이면서 프린터에 대한 사용을 요청 중에 있다.
두 프로세스 중 한 프로세스가 자원을 반납하거나 사용 요청을 중지하지 않는 이상 더 이상 실행이 불가능하다.
교착상태 필요조건
---- "자원에 대한 필요 조건"
1) 상호 배제 Exclusive use of resources
둘 이상의 프로세스가 한 자원을 동시에 사용할 수 없다.
- 프로세스, 메모리, 입출력 장치 등 자원은 한 프로세스만 사용 가능한 배타적인 자원이다.
2) 비선점 자원 Non-preemptible resources
사용되고 있는 자원은 선점되지 않는다.
- 선점 자원과 비선점 자원
- 선점 자원: 선점을 당한 후 원래 프로세스에게 재할당될 때 문제가 되지않는 자원이다.
- ex) 메모리, 버퍼, 프로세서 등
- 비선점 자원: 선점을 당한 후 원래 프로세스에게 재할당될 때 문제가 되는 자원이다.
- ex) 프린터, 디스크 드라이브, 임계영역 등
---- "프로세스에 대한 필요 조건"
3) 점유와 대기 Hold and Wait
프로세스가 어떤 자원을 점유한 상태에서 다른 자원을 기다리는 상태여야 한다.
- 자원을 점유한 상태로 다른 프로세스가 점유 자원에 대한 사용을 방해한다.
4) 원형 대기 Circular Wait
점유와 대기를 하는 프로세스 간의 관계가 원(cycle)을 이루어야 한다.
※ 임계 영역과 교착상태
임계 영역에서 공유 자원에 대한 보호를 위해 잠금 기능이 있다면 공유 자원은 자동으로 둘 이상 프로세스에게 할당되지 않으며 (상호 배제) 선점되지 않는다. (비선점 조건)
따라서 임계 영역의 공유 자원을 사용하는 둘 이상의 프로세스가 점유와 대기, 원형 대기 관계를 만족한다면 교착상태가 발생한다.
교착상태 해결 방법
- 교착상태 예방 (Prevention)
필요조건 | 예방방법 | 문제점 |
상호 배제 | 모든 자원을 공유 | 모든 자원을 공유하는 것은 현실적으로 불가능 |
비선점 | 모든 자원 선점 가능 | 임계 영역에 대한 공유 자원 보호 문제 재할당시 문제가 되는 자원을 어떻게 처리할 것인가 |
점유와 대기 | 모든 자원을 한번에 할당 | 모든 자원을 할당하거나 하지않는 all or none 방식 사용하지 않는 자원에 대한 할당으로 자원 낭비 일괄 처리 방식으로 시스템 효율이 감소 |
원형 대기 | 자원에 순서를 부여 | 순서를 신중하게 부여해야함 |
- 교착상태 회피 (Avoidance)
- 프로세스마다 할당된 자원 상태를 감시하여 교착상태에 빠지는 상황을 피한다.
은행원 알고리즘
다익스트라가 제안한 교착상태를 회피하는 알고리즘으로 다음 상황을 가정한다.
- 프로세스 수가 고정
- 자원의 종류와 수가 고정
- 프로세스마다 요구하는 자원 종류 및 최대 자원의 수를 알고 있음
- 프로세스는 자원 사용 후 반드시 반납
은행원 알고리즘은 위 상황에서 교착상태에 빠지지 않는 안전한 프로세스 자원 할당 순서를 찾는 것이다.
- 예시
총 자원 수 = 11, 가용 자원 수 = 4 | |||
프로세스 | 요구되는 최대 자원 수 | 현재 할당된 자원 수 | 필요 자원 수 |
P1 | 5 | 2 | 3 |
P2 | 9 | 3 | 6 |
P3 | 6 | 1 | 5 |
P1 -> P3 -> P2 순서대로 자원을 할당하면 교착상태 없이 모든 프로세스를 완료할 수 있다.
실제 시스템은 프로세스 수와 자원의 수가 고정돼있지 않으며 프로세스마다 요구하는 자원 정보를 알고 있어야 한다.
- 교착상태 검출 (Detection)
- 타임아웃을 이용: 일정 시간 동안 작업이 진행되지 않으면 강제 종료한다.
- 자원 할당 그래프를 이용: 프로세스와 자원 간의 할당 및 요구에 대한 그래프를 그리고 사이클이 있는지 검사한다.
- 교착상태 회복 (Recovery)
- 특정 프로세스를 중단하거나 자원을 선점시킴으로 교착 상태로부터 벗어날 수 있다.
'Computer Science 기본 지식 > 운영체제' 카테고리의 다른 글
[운영체제] 가상 메모리 (1) 페이징과 세그먼테이션 (0) | 2021.01.19 |
---|---|
[운영체제] 주 메모리 관리 (0) | 2021.01.18 |
[운영체제] 프로세스 동기화 (0) | 2021.01.15 |
[운영체제] 프로세스 스케줄링 (0) | 2021.01.14 |
[운영체제] 프로세스와 스레드 (0) | 2021.01.13 |