다중 프로그래밍 시스템에 여러 프로세스를 수용하기 위해 주기억장치를 동적으로 분할하는 메모리 관리 작업이 필요하다.

메모리 관리 기법

  1. 연속 메모리 관리

    프로그램 전체가 하나의 커다란 공간에 연속적으로 할당된다.

  2. 불연속 메모리 관리

    프로그램의 일부가 서로 다른 주소 공간에 할당될 수 있는 기법이다.

    페이지는 고정 크기를 갖고 세그멘테이션은 가변 크기를 갖는다.

페이징

image.png

각 프로세스는 프레임들과 같은 길이를 가진 균등 페이지로 나뉜다. 외부 단편화는 생기지 않지만 소량의 내부 단편화가 존재한다.

논리 메모리는 Page라고 불리는 고정 크기의 블록으로 나누어지고, 물리 메모리는 Frame이라 불리는 페이지와 같은 크기의 블록들로 나누어진다. 보조 메모리 역시 프레임과 같은 블록들로 나눈다.

세그멘테이션

image.png

각 프로세스가 여러 세그먼트들로 나뉜다. 내부 단편화가 생기지 않지만 외부 단편화가 존재할 수 있다.

메모리 사용 효율이 개선되고 동적 분할을 통한 오버헤드가 감소한다.

페이징에서처럼 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 Segment로 분할한다.

세그먼트 테이블에는 각 세그먼트의 기준(세그먼트의 시작 물리 주소)와 한계(세그먼트의 길이)를 저장한다.

서로 다른 크기의 세그멘트들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 자유 공간들이 많은 수의 작은 조각들로 나누어져 못 쓰게 될 수도 있다.(외부 단편화)