비교 차트
비교 기준 | 이중 자물쇠 | 굶주림 |
---|---|---|
기본 | 교착 상태는 프로세스가 진행되지 않고 차단되는 곳입니다. | 기아는 우선 순위가 낮은 프로세스가 차단되고 우선 순위가 높은 프로세스가 진행되는 곳입니다. |
발생 조건 | 상호 배제, 보류 및 대기, 선점 및 순환 대기가 동시에 발생합니다. | 우선 순위 시행, 통제되지 않은 자원 관리. |
다른 이름 | 순환 대기. | 평생. |
자원 | 교착 상태에서는 요청 된 리소스가 다른 프로세스에 의해 차단됩니다. | 기아 상태에서 요청 된 리소스는 우선 순위가 높은 프로세스에서 계속 사용됩니다. |
예방 | 상호 배제 방지, 보류 및 대기, 순환 대기 및 선점 허용 | 노화. |
교착 상태의 정의
교착 상태는 CPU의 여러 프로세스가 CPU 내에서 사용 가능한 제한된 수의 리소스를두고 경쟁하는 상황입니다. 여기서 각 프로세스는 리소스를 보유하고 다른 프로세스에서 보유한 리소스를 얻기 위해 대기합니다. 모든 프로세스는 순환 방식으로 리소스를 기다립니다. 아래 그림에서 프로세스 P1은 프로세스 P2에서 요청한 리소스 R2를 획득하고 프로세스 P1은 R2에서 다시 보유한 리소스 R1을 요청하고 있음을 알 수 있습니다. 그래서 프로세스 P1과 P2는 교착 상태를 형성합니다.
- 상호 배타 : 다른 프로세스가 동일한 리소스를 요청할 경우 한 번에 하나의 프로세스 만 리소스를 사용할 수 있습니다. 리소스를 사용하는 프로세스가 리소스를 해제 할 때까지 기다려야합니다.
- 대기 중 및 대기 중 : 프로세스가 자원을 보유하고 다른 프로세스에서 보유하고있는 다른 자원을 확보하려고 대기 중이어야합니다.
- 선점 금지 : 자원을 보유한 프로세스는 선점 될 수 없습니다. 자원을 보유하는 프로세스는 작업을 완료 할 때 자원을 자발적으로 해제해야합니다.
- 순환 대기 : 프로세스는 순환 방식으로 자원을 기다려야합니다. 세 개의 프로세스 {P0, P1, P2}가 있다고 가정합니다. P0은 P1이 보유한 자원을 기다려야합니다. P1은 프로세스 P2가 보유한 자원을 확보하기 위해 대기해야하며 P2는 P0이 보유한 프로세스를 획득하기 위해 대기해야합니다.
교착 상태에 빠질 수있는 프로그램을 감지 할 수있는 일부 응용 프로그램이 있지만. 그러나 운영 체제는 절대로 교착 상태를 방지 할 책임이 없습니다. 교착 상태가없는 프로그램을 설계하는 것은 프로그래머의 책임입니다. 교착 상태 발생에 필요한 위의 조건을 피함으로써 수행 할 수 있습니다.
기아의 정의
기아는 자원에 대한 프로세스 요청이 있고 그 자원이 다른 프로세스에 의해 계속 사용 된 후 요청 프로세스가 기아에 직면했을 때 정의 될 수 있습니다. 기아 상태에서 실행 준비가 된 프로세스는 CPU가 리소스를 할당 할 때까지 기다립니다. 그러나 다른 프로세스가 요청 된 리소스를 계속 차단하기 때문에이 프로세스는 무기한 대기해야합니다.
기아 문제는 일반적으로 우선 순위 스케줄링 알고리즘 에서 발생합니다. 우선 순위 스케줄링 알고리즘에서 우선 순위가 높은 프로세스는 항상 리소스가 할당되므로 우선 순위가 낮은 프로세스가 요청 된 리소스를 가져 오지 못하게합니다.
고령화 는 기아 문제를 해결할 수 있습니다. 에이징은 리소스를 오래 동안 기다려온 프로세스의 우선 순위를 점차 높입니다. 에이징은 우선 순위가 낮은 프로세스가 자원을 무기한 대기하는 것을 방지합니다.
OS의 교착 상태와 기아 상태의 주요 차이점
- 교착 상태가 발생하면 프로세스가 실행되지 않고 진행되며 각 프로세스는 다른 프로세스에서 획득 한 리소스를 기다리는 동안 차단됩니다. 한편, 기아 상태는 우선 순위가 높은 프로세스가 우선 순위가 낮은 프로세스가 리소스를 확보하여 낮은 우선 순위 프로세스를 무기한 차단하는 것을 방지함으로써 리소스를 지속적으로 획득 할 수있는 조건입니다.
- Deadlock은 네 가지 조건이 발생할 때 발생합니다. 상호 배제, 보류 및 대기, 선점 없음 및 순환 대기 가 동시에 발생합니다. 그러나 리소스를 할당하는 동안 프로세스 우선 순위가 적용 되거나 시스템에 제어되지 않은 리소스 관리가있을 때 기아가 발생합니다.
- 교착 상태는 종종 원형 대기 라는 이름으로 불리는 반면, 기아는 ' 살아있는 자물쇠 '라고합니다.
- Deadlock에서는 리소스가 프로세스에 의해 차단되는 반면, 기아 상태에서는 우선 순위가 높은 프로세스가 지속적으로 프로세스를 사용합니다.
- 교착 상태는 상호 배제, 대기 및 대기, 순환 대기와 같은 조건을 피하고 오랫동안 자원을 보유하고있는 프로세스의 선점을 허용함으로써 방지 할 수 있습니다. 반면에, 기아는 노화 로 예방할 수 있습니다.
결론:
교착 상태와 기아 모두 프로세스 실행을 차단하여 지연시킵니다. 교착 상태로 인해 프로세스가 굶어 죽을 수있는 한편, 기아로 인해 프로세스가 교착 상태에서 벗어날 수 있습니다.