외부 단편화 발생 원인 : 프로세스의 메모리 크기는 모두 다르다. 한 프로세스에 할당되는 메모리는 연속적이어야 한다. 이 조건들 때문에 발생하는 메모리의 빈 공간의 크기들도 모두 다르다. 이것이 외부 단편화의 발생 원인이다.
이를 해결하기 위해,
Logical memory(프로세스의 메모리)를 동일한 크기로 자른다. 잘라진 한 조각조각을 Page라고 부른다.
Physical memory(실제 메모리)도 Logical memory와 동일한 크기로 자른다. 잘라진 한 조각조각을 Frame이라고 부른다.
각 Page를 각 Frame에 매핑하여 할당한다.
이렇게 되면, 하나의 프로세스를 굳이 연속적인 메모리에 할당할 필요가 없다. 빈 공간이 발생하지 않아 외부단편화가 발생하지 않는다.
Logical memory(프로세스의 메모리)를 동일한 크기의 블록(Page)로 자른다. 하지만, 모든 프로세스가 Page의 크기로 딱 나누어 떨어질 수 없다.
예를 들어, 프로세스의 메모리가 총 11MB인데, Page의 크기가 2MB라면, Page는 해당 프로세스를 실행시키기 위해서 6개(12MB)가 만들어져야 한다.
실제 프로세스의 총 메모리는 11MB이지만, 만들어진 Page들의 총 크기는 12MB인 것이다. 즉, 한 Page 내부에 1MB의 빈 공간이 있고, 이는 메모리 낭비가 된다.
이를 내부 단편화라고 한다.
하지만 외부 단편화에 비해 훨씬 적은 메모리를 낭비하기 때문에, 비교적 매우 효율적이다.