교착상태(deadlock)
두 개 이상의 프로세스가 자원을 점유한 상태에서 서로가 점유한 자원을 서로에게 요구하고 있어
그 프로세스들이 무한정 기다리고 있는 상태를 의미합니다.
교착상태의 4가지 필요요건
1. 상호배제(Mutual exclusion)
- 한 리소스는 한 번에 한 프로세스만이 사용할 수 있다.
- 사용중인 자원을 다른 프로세스가 사용하려면 요청한 자원이 해제될 때 까지 기다려야 한다.
2. 점유와 대기(Hold and wait)
- 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하며 대기하는 상태입니다.
3. 비선점(No preemption)
- 이미 할당된 자원을 강제로 빼앗을 수 없다.
- 프로세스가 task를 마친 후 리소스를 자발적으로 반환할 때 까지 기다려야 한다.
4. 환형 대기(Circular wait)
- 서로 다른 프로세스가 서로의 자원을 요구하고있는 즉, 환형 모양의 대기 상태를 말합니다.
* 위 4가지 모두 충족되어야 교착상태가 일어날 수 있습니다. 하나라도 제외되면 교착상태는 일어날 수 없습니다.
교착상태 해결방법
1. 데드락이 발생하지 않도록 예방하기
2. 데드락 발생 가능성을 인정하면서 적절하게 회피하기
3. 데드락 발생을 허용하지만 데드락을 탐지하여 데드락에서 회복하기
* 예방(Prevention)
- 교착상태 필요요건 4가지 중 하나라도 제거함으로 써 교착상태를 방지한다.
- 자원낭비가 가장 심한 방법이다.
* 회피(Avoidance)
- 교착상태가 발생할 가능성을 염두에 두고 발생 시 적절히 피해나가는 방법이다.
- 리스소 할당 측면에서 교착상태가 발생할 가능성이 있는 자원 할당을 하지 않는다.
- 주로 *은행원 알고리즘이 사용된다.
* 탐지(Detection)
- 교착 상태가 발생할 수 있도록 놔두고 교착상태가 발생하면 찾아내어 고치는 방법이다.
- 교착상태 발생 알고리즘과 자원 할당 그래프를 이용한다.
* 회복(Recovery)
- 교착 상태의 프로세스 강제중지
- 교착 상태가 제거될 때 가지 한 프로세스씩 중지
- 교착 상태가 필요로 하는 자원을 강제로 가져옴
** 은행원 알고리즘이란?
다익스트라가 제안한 기법으로, 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는데서 유래한 기법
각 프로세스에게 자원을 할당하여 교착 상태가 발생하지 않으며 모든 프로세스가 완료될 수 있는 상태는 안전상태,
교착 상태가 발생할 수 있는 상태는 불안전 상태라고 한다.
은행원 알고리즘을 적용하기 위해선 자원의 양과 사용자(프로세스) 수가 일정해야 하고 프로세스의 모든 요구를
유한한 시간안에 할당하는 것을 보장한다.
'IT지식 > Computer Science' 카테고리의 다른 글
데이터베이스 인덱스 효율적으로 사용하는 방법 (0) | 2025.02.02 |
---|---|
CPU 스케줄링 알고리즘 선점형, 비선점형 (1) | 2025.01.30 |
운영체제에서 자원의 접근 방식, 공유자원과 임계영역 (0) | 2025.01.30 |
프로세스와 스레드의 차이 (0) | 2025.01.30 |
프로세스간의 통신 IPC(Inter-Process Communication) (0) | 2025.01.30 |