두 개 모두 메모리 관리 기법 중에서도 불연속 메모리 할당 기법에 해당하는방식이다. 프로세스가 메모리 상 여러 영역에 분산되어 적재된다. 실제 가상 메모리는 두 가지 방식 중 하나를 채택해 구현된다.
공통적인 장점은 메모리 공간을 효율적으로 사용할 수 있다는 것이다. 연속성의 제약이 없어, 어디든 할당 가능한 여유 공간이라면 적재할 수 있기 때문이다.
프로세스를 페이지라고 하는 고정된 크기로 나누는 방식이다. 단점은 내부 단편화가 발생할 수 있다는 것이다. 페이지 단위로 나누어 떨어지지 않는 경우에 프로세스가 할당받은 공간 내부에 사용하지 못하는 빈 공간이 발생한다.
페이지 테이블
각 프로세스는 페이지와 프레임의 매핑 정보를 담은 페이지 테이블을 가지고 있다. 이는 논리적 주소를 물리적 주소로 변환하기 위해 필요한 정보로, 메인 메모리에 저장되어 있다. 주요 정보로는 프레임 (페이지에 할당된 물리 메모리 공간)의 시작 주소, 유효 비트가 있다.
프로세스를 세그멘트라고 하는 의미론적 가변 단위 크기로 나누는 방식이다. 장점은 단위별 보호와 공유가 가능하다는 것이다. 단점은 메모리 할당 및 회수가 빈번히 발생한다면 프로세스가 할당받은 공간의 외부에 사용하지 못하고 남는 공간이 생기는 외부 단편화가 발생할 수 있다.
세그먼트 테이블
각 프로세스는 세그먼트와 프레임의 매핑 정보를 담은 세그먼트 테이블을 가진다. 물리 정보에는 물리 메모리 상의 세그먼트 시작 주소, 세그먼트 크기, 유효비트, 권한 비트가 있다.
페이지와 프레임은 크기가 동일하며, 페이지를 프레임에 매핑하여 사용한다.
고정 크기의 블록을 할당할 때, 필요한 크기보다 더 큰 블록이 할당되면서 발생하는 메모리 낭비를 말한다.
가변 크기의 블록을 할당할 때 전체적으로 작은 빈 공간이 존재하여 큰 프로세스를 할당할 수 없는 현상이다.
가상 주소는 페이지 번호와 페이지 오프셋으로 구성된다.
가상 주소 = 페이지 번호+ 페이지 오프셋
페이지 테이블에서 페이지 번호를 조회하여 프레임 번호를 찾아낸다.
프레임 번호와 오프셋을 더해 실제 데이터가 저장되어 있는 물리 주소를 계산한다.
물리 주소 = (프레임 번호 * 페이지 크기) + 오프셋
운영페제는 페이지 테이블의 엔트리에 읽기/쓰기/실행 권한 비트를 저장한다.
Segmentation Fault는 잘못된 메모리 접근으로 발생하는 오류이다. 페이징과 세그멘테이션이 메모리 보호 기능을 제공하면서 잘못된 접근을 차단하는 과정에서 해당 오류가 발생한다.