내부 및 외부 분류는 모두 시스템의 데이터 액세스 속도에 영향을 미칩니다. 그들은 고정 크기의 메모리 블록이 프로세스의 크기에 관계없이 프로세스에 할당 될 때 내부 조각화 가 발생하고 프로세스에 메모리가 동적으로 할당 될 때 외부 조각화 가 발생합니다. 아래에 나와있는 비교 차트의 도움으로 더 나아가서 차이점, 이유, 내부 및 외부 분열의 해결책을 논의합시다.
비교 차트
비교의 근거 | 내부 단편화 | 외부 단편화 |
---|---|---|
기본 | 이는 고정 된 크기의 메모리 블록이 프로세스에 할당 될 때 발생합니다. | 가변 크기 메모리 공간이 프로세스에 동적으로 할당 될 때 발생합니다. |
발생 | 프로세스에 할당 된 메모리가 프로세스에서 요청한 메모리보다 약간 큰 경우 할당 된 블록에 여유 공간이 생겨 내부 조각화가 발생합니다. | 프로세스가 메모리에서 제거되면 메모리에 여유 공간이 생겨 외부 조각화가 발생합니다. |
해결책 | 메모리는 가변 크기 블록으로 분할되어야하며 프로세스에 가장 적합한 블록을 할당해야합니다. | 압축, 페이징 및 분할. |
내부 단편화의 정의
내부 단편화는 메모리가 고정 크기 블록 으로 분할 될 때 발생합니다. 메모리에 대한 프로세스 요청이있을 때마다 고정 크기 블록이 프로세스에 할당됩니다. 프로세스에 할당 된 메모리가 요청 된 메모리보다 다소 큰 경우, 할당 된 메모리와 요청 된 메모리의 차이는 내부 단편화 입니다.
고정 크기 블록 안의이 남은 공간은 프로세스가 메모리 요청을 만족시키기에 충분하지 않기 때문에 어떤 프로세스에도 할당 할 수 없습니다. 예제를 통해 내부 조각화를 이해합시다. 메모리 공간은 18, 464 바이트의 고정 크기 블록으로 분할됩니다. 18, 460 바이트에 대한 프로세스 요청과 18, 464 바이트의 분할 된 고정 크기 블록이 프로세스에 할당됩니다. 결과적으로 내부 조각화 인 18, 464 바이트의 4 바이트가 비어있게됩니다.
내부 단편화로 인해 생성 된 내부 구멍을 추적하는 오버 헤드는 내부 구멍의 수보다 실질적으로 많습니다. 내부 단편화 문제는 메모리를 가변 크기 블록으로 분할 하고 최적 크기 블록을 메모리를 요청하는 프로세스에 할당함으로써 해결할 수 있습니다. 그러나 내부 분열 문제를 완전히 제거하지는 못하지만 어느 정도는 줄일 수 있습니다.
외부 단편화의 정의
외부 단편화는 프로세스의 메모리 요청을 충족시키기에 충분한 공간이 메모리에있을 때 발생합니다. 그러나 사용 가능한 메모리가 인접하지 않은 방식이므로 프로세스의 메모리 요청을 만족시킬 수 없습니다. 첫 번째 적합 또는 최적 맞춤 메모리 할당 전략을 적용하면 외부 조각화가 발생합니다.
프로세스가 메모리에서로드되고 제거 될 때 여유 공간은 메모리 공간에 구멍을 생성하며 메모리 공간에 많은 구멍이 있습니다. 이것은 외부 조각이라고합니다. 첫 번째 적합도 및 최적 적합이 외부 조각화의 양에 영향을 줄 수 있지만 완전히 제거 할 수는 없습니다. 압축 은 외부 단편화를위한 솔루션 일 수 있습니다.
압축 알고리즘은 모든 메모리 내용을 한쪽으로 셔플하고 하나의 큰 메모리 블록을 해제합니다. 그러나 압축 알고리즘은 비용이 많이 든다. 프로세스가 불연속 방식으로 물리적 메모리를 확보 할 수 있도록하는 외부 조각화 문제를 해결할 수있는 대체 솔루션이 있습니다. 이 솔루션을 구현하는 기술은 페이징 및 분할입니다.
내부 및 외부 조각화의 주요 차이점
- 내부 및 외부 조각화가 발생하는 근본적인 이유는 메모리가 고정 크기 블록 으로 분할 될 때 내부 조각화가 발생하는 반면 메모리가 가변 크기 블록 으로 분할 될 때 외부 조각화가 발생한다는 것입니다.
- 프로세스에 할당 된 메모리 블록이 요청 된 메모리보다 약간 커지면 할당 된 메모리 블록에 남아있는 여유 공간으로 인해 내부 조각화가 발생합니다. 반면에 프로세스가 메모리에서 제거되면 메모리에 구멍이 생겨 여유 공간이 생겨 외부 조각화라고 불립니다.
- 내부 단편화 문제는 메모리를 가변 크기 블록으로 분할하고 요청 프로세스에 가장 적합한 블록을 할당하여 해결할 수 있습니다. 그러나 외부 단편화를위한 솔루션은 압축이지만 구현하기에 비용이 많이 들기 때문에 프로세스가 물리적 메모리를 비 연속적으로 획득하도록 허용해야합니다. 이렇게하려면 페이징 및 분할 기법을 도입해야합니다.
결론:
내부 단편화 문제는 줄일 수는 있지만 완전히 제거 할 수는 없습니다. 페이징 및 세그먼테이션은 프로세스가 비 연속적으로 메모리를 차지할 수있게함으로써 외부 분열로 인해 해제 된 공간을 활용하는 데 도움이됩니다.