🏗️ Build Up
- 프로세스는 기본적으로 필요로 하는 자원이 있다.
- 자원이란?
- 모든 장치와 내부 시스템 부품들은 자원이다.
- ex) 파일, 네트워크 (소켓 연결), 메모리 영역 등이 있다.
시스템 자원은 컴퓨터 시스템 내에 제한된 물리적 부품과 논리적 구성 요소를 아울러 이르는 용어이다.
💨What
데드락이란 무엇인가.

- 요약하자면, 시스템 자원에 대한 요청이 서로 뒤엉킨 상태이다.
- 즉, 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴 경우 무한정 기다리는 상태를 말한다.
발생조건
상호배제 | 한번에 하나의 프로세스만 해당 자원을 사용할 수 있다. |
점유 대기 | 자원을 최소한 하나 보유하고, 다른 프로세스에게 할당된 자원을 점유하기 위해 대기하는 프로세스가 존재해야 한다. |
비선점 | 이미 할당된 자원을 강제로 뺏을 수 없다. |
순환 대기 | 대기 프로세스의 집합이 순환 형태로 자원을 대기하고 있어야 한다. |
✅How [해결 방법 및 예방 방법]
예방 (4가지)
교착 상태 발생 조건 중 하나를 제거함으로써 해결하는 방법
상호배제 조건 부정 | 여러 프로세스가 공유 자원을 사용할 수 있게 한다. |
점유 대기 조건 부정 | 프로세스가 실행되기 전 필요한 모든 자원 할당한다. |
비선점 조건 부정 | 높은 우선순위의 프로세스가 해당 자원을 선점할 수 있도록 한다. |
순환 대기 조건 부정 | 순환 형태로 대기 하지 않도록 한 쪽 방향으로 만 요구할 수 있도록 한다. |
회피
- 은행원 알고리즘
- 프로세스가 자원을 요구할 때 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는지를 사전에 검사하여 교착 상태를 회피하는 기법
탐지 → 획복
- 탐지 : 자원 할당 그래프를 통해 교착 상태를 탐지
- 회복 : 프로세스 모두 중지, 자원을 선점하도록 허용