데드락이란?
두 개 이상의 프로세스가 자원을 점유한 상태에서 다른 프로세스가 점유하고 있는 자원을 요구하며, 서로의 작업을 끝나기만을 기다리며 둘 다 영원히 끝나지 않는 것.
교착상태의 발생 조건
아래의 4가지가 모두 성립되어야 한다.
1. 상호 배제
- 자원은 한 번에 한 프로세스만 사용 가능.
2. 점유 대기
- 최소한 하나의 자원을 점유하고 있으며, 다른 프로세스에 할당되어 사용하고 있는 자원을 점유하기 위해 대기 상태가 있어야 함.
3. 비선점
- 다른 프로세스에 할당된 자원은 사용이 끝날때 까지 강제로 빼앗을 수 없음
4. 순환 대기
- 여러 프로세스가 있을 때, 각 프로세스들이 꼬리를 물며 점유한 자원을 대기한 상태여야하고, 마지막 프로세스가 첫 프로세스가 점유한 자원을 요구해야함. 비유하자면 circular 상태.
데드락 해결법
예방, 회피, 탐지 및 회복의 방법으로 나뉘어진다.
교착상태 예방
데드락의 발생조건 4가지 중 하나라도 발생하지 않게 하는 방법.
1) 자원의 상호배제 조건 방지
- 모든 자원 공유를 허용 => 단, 동기화 문제 발생 가능.
2) 점유와 대기 조건 방지
- 모든 자원에 대해 선점을 허용
3) 비선점 조건 방지
- 필요 자원을 한번에 모두 할당한다.
4) 순환대기 조건 방지
- 자원에게 순서를 부여 프로세스 순서의 증가 방향(한 방향)으로만 자원을 요청한다.
교착상태 회피
프로세스가 자원을 요구할 때, 자원을 할당한 후에도 안정상태로 남아있는지 확인 후 교착상태를 회피하는 기법이다.
- 프로세스가 자원을 요구할 때, 자원할당 요청을 보류하고 자원을 할당한 후에도 안정상태로 남아있는지를 사전에 검사해서 교착상태를 회피하는 기법. 안정 상태에 있으면 자원을 할당하고, 그렇지 않으면 다른 프로세스들이 자원을 해지할때까지 대기한다.
교착상태 탐지
시스템에 데드락이 발생했는지 여부를 탐색하는 것으로, 현재 시스템의 자원할당 상태를 가지고 파악함.
교착상태 회복
교착상태를 일으킨 프로세스를 종료하거나, 할당된 자원을 해제하면서 회복하는 것
1. 프로세스 종료법 :
- 1. 교착 상태의 프로세스를 모두 중지하는 기법.
- 2. 교착 상태가 제거될 때까지 한 프로세스씩 중지한다.
2. 자원 선점법:
- 자원을 빼앗긴 프로세스는 강제 종료 후 재시작하는 방법.
'CS > Operating Systems' 카테고리의 다른 글
Context Switching (0) | 2023.09.10 |
---|---|
프로세스와 스레드의 차이 (0) | 2023.09.03 |
동시성과 병렬성 (0) | 2023.09.01 |
교착 상태 (0) | 2021.09.26 |
프로세스 주소공간 (0) | 2021.08.18 |