다중 프로그래밍 시스템에 여러 프로세스를 수용하기 위해 주기억장치를 동적으로 분할하는 메모리 관리 작업이 필요하다.
연속 메모리 관리
프로그램 전체가 하나의 커다란 공간에 연속적으로 할당된다.
고정 분할 기법 : 주기억장치가 고정된 파티션으로 분할된다. (내부 단편화 발생)
분할 된 메모리보다 프로세스의 메모리가 적으면 사용되지 않는 메모리가 생겨 내부 단편화가 발생한다.
동적 분할 기법: 파티션들이 동적으로 생성되며 자신의 크기와 같은 파티션에 적재된다. (외부 단편화 발생)
남은 공간은 100MB인데 70MB의 프로세스가 작동할 수 없는 것이 외부 단편화이다.
불연속 메모리 관리
프로그램의 일부가 서로 다른 주소 공간에 할당될 수 있는 기법이다.
페이지는 고정 크기를 갖고 세그멘테이션은 가변 크기를 갖는다.
각 프로세스는 프레임들과 같은 길이를 가진 균등 페이지로 나뉜다. 외부 단편화는 생기지 않지만 소량의 내부 단편화가 존재한다.
논리 메모리는 Page라고 불리는 고정 크기의 블록으로 나누어지고, 물리 메모리는 Frame이라 불리는 페이지와 같은 크기의 블록들로 나누어진다. 보조 메모리 역시 프레임과 같은 블록들로 나눈다.
가상 메모리 페이징
프로세스 페이지를 전부 로드시킬 필요가 없다.
필요한 페이지가 있으면 나중에 자동으로 부른다.
각 프로세스가 여러 세그먼트들로 나뉜다. 내부 단편화가 생기지 않지만 외부 단편화가 존재할 수 있다.
메모리 사용 효율이 개선되고 동적 분할을 통한 오버헤드가 감소한다.
페이징에서처럼 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 Segment로 분할한다.
세그먼트 테이블에는 각 세그먼트의 기준(세그먼트의 시작 물리 주소)와 한계(세그먼트의 길이)를 저장한다.
서로 다른 크기의 세그멘트들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 자유 공간들이 많은 수의 작은 조각들로 나누어져 못 쓰게 될 수도 있다.(외부 단편화)