728x90
반응형
교착상태 vs 기아상태
교착상태: 2개 이상의 프로세스가 서로의 자원이 unlock되기를 기다리면서 아무 일도 못하고 무한 대기하는 상태
기아상태: 특정 프로세스의 우선 순위가 낮아서 원하는 자원을 계속 할당받지 못하는 상태
1. 교착상태 (데드락, Deadlock)
- 정의: 교착상태는 둘 이상의 프로세스가 각자 다른 프로세스가 보유한 자원을 서로 기다리며 진행되지 못하는 상태이다. 이로 인해 각 프로세스가 필요로 하는 자원이 서로 잠겨 있어 모든 프로세스가 멈추게 된다.
- 조건: 교착상태는 네 가지 조건(상호 배제, 점유 및 대기, 비선점, 환형 대기)이 동시에 충족될 때 발생한다.
- 해결: 교착상태를 해결하기 위해서는 교착상태의 발생을 검출하고 회복하는 기법이나, 자원의 할당 순서를 정해 미리 예방하는 방법을 사용할 수 있다.
✅ 교착상태 발생원인 (조건)
교착상태는 이 4가지 조건이 동시에 충족될 때 발생한다.
- 상호배제: 프로세스들이 자원을 배타적으로 점유하여 다른 프로세스가 그 자원을 사용하지 못함.
- 점유와 대기: 프로세스가 어떤 자원을 할당 받아 점유하고 있으면서 다른 자원을 요구
- 비선점: 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없으며, 점유하고 있는 프로세스 자신만이 해제 가능
- 환형 대기: 프로세스간 자원 요구가 하나의 원형을 구성
🪄 교착상태 해결 방법
- 자원을 할당할 때 애초에 조건이 성립되지 않도록 설계한다.
- 교착 상태 가능성이 없을 때만 자원 할당되며, 프로세스당 요청할 자원들의 최대치를 통해 자원 할당 가능 여부를 파악하는 ‘은행원 알고리즘(Banker's Algorithm)’을 쓴다.
- 교착 상태가 발생하면 사이클이 있는지 찾아보고 이에 관련된 프로세스를 한 개씩 지운다.
- 교착 상태가 발생하면 사용자가 작업을 종료한다. 교착 상태는 매우 드물게 일어나기 때문에 이를 처리하는 비용이 더 크다.
2. 기아 상태(Starvation)
기아상태는 특정 프로세스의 우선 순위가 낮아서 원하는 자원을 계속 할당받지 못하는 상태를 말한다.
3. 교착 상태 vs 기아상태 차이
- 교착상태: 프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태
- 기아상태: 프로세스가 원하는 자원을 계속 할당 받지 못하는 상태
즉 교착 상태는 여러 프로세스가 동일한 자원 점유를 원할 때 발생하고,
기아 상태는 여러 프로세스가 자원을 점유하기 위해 경쟁할 때 특정 프로세스는 우선순위가 낮아서 영원히 자원 할당을 받지 못하는 것이다.
교착상태 | 기아상태 | |
정의 | 하나 이상의 프로세스가 자원을 쥐고 있으면서 다른 프로세스가 가진 자원을 요구할 때 Lock이 걸린 상태 | 낮은 우선순위의 프로세스가 높은 우선순위의 프로세스에 밀려 자원을 영원히 할당받지 못하는 상태 |
자원 | 자원은 일련의 프로세스가 순환 참조 때문에 Lock에 걸린다. | 자원은 계속해서 높은 우선순위의 프로세스에 할당된다. |
해결 방법 | - 교착상태 발생 조건 4가지 중 하나라도 만족시키지 않게 하기. - 회피 알고리즘 사용 - 교착상태를 감지하고 회복하거나 무시 |
CPU에 자원 분배 맡기기 프로세스의 선택을 랜덤으로 바꾸기 PriorityQueue와 같은 알고리즘 사용 |
프로세스의 상태 | 프로세스는 실행되지 않는다. | 우선순위 프로세스만 실행된다. |
▶ 교착상태와 기아상태의 차이점을 바탕으로, 프로세스 상태가 주어졌을 때 어떤 상태인지 알고 그 이유도 설명할 수 있어야 한다.
참고) https://lealea.tistory.com/244
https://namu.wiki/w/%EB%8D%B0%EB%93%9C%EB%9D%BD
https://coding-review.tistory.com/359
https://www.scaler.com/topics/operating-system/deadlock-in-os/
728x90
반응형