지난 글에서는 주 기억 장치(Main Memory)의 역할과 관리 방식, 그리고 페이지 교체 정책(Page Replacement Policy)까지 정리했습니다.
하지만 물리 메모리(Physical Memory)의 크기는 한정되어 있습니다.
여러 프로세스(Process)가 동시에 실행되는 환경에서 모든 데이터를 항상 메모리에 올려 두는 것이 불가능합니다.
또한 각 프로세스(Process)는 서로 독립적인 메모리 공간을 가져야 합니다.
만약 여러 프로세스(Process)가 같은 주소 공간을 직접 공유한다면, 서로의 데이터를 침범하거나 시스템 전체가 불안정해질 수 있습니다.
이러한 문제를 해결하기 위해 운영체제(OS)는 각 프로세스(Process)에게 독립적인 가상 주소 공간을 제공하고, 실제 메모리(Physical Memory)와는 분리된 방식으로 메모리를 관리합니다.
즉, 가상 메모리(Virtual Memory)는 다음과 같은 목적을 가집니다.
가상 메모리(Virtual Memory)는 프로그램(Program)이 실제 물리 메모리(Physical Memory)보다 더 큰 메모리 공간을 사용하는 것처럼 보이게 해주는 메모리 관리 기법입니다.
이 때, 프로그램이 사용하는 주소와 실제 RAM 안의 주소가 서로 다를 수 있습니다.
프로세스(Process)는 자신만의 연속된 주소 공간을 가지고 있는 것처럼 동작하지만, 실제로 그 데이터는 물리 메모리(Physical Memory)의 여러 위치에 나뉘어 저장될 수 있습니다.
프로세스(Process)가 보는 메모리는 가상 주소 공간(Virtual Address Space)이고, 실제 RAM 안의 위치는 물리 주소 공간(Physical Address Space)라고 합니다.
운영체제(OS)와 하드웨어(Hardware)는 이 둘을 연결해 주는 역할을 하며, 이를 통해 프로그램(Program)은 복잡한 물리 메모리 구조를 의식하지 않고도 실행될 수 있습니다.
논리 주소(Logical Address)와 물리 주소(Physical Address)로 나눔으로써 각 프로세스(Process)는 자신 만의 독립적인 주소 공간을 쓰는 것처럼 보이게 할 수 있습니다.
또한, 실제 메모리(Physical Memory)는 비연속적으로 사용하면서도, 프로세스(Process)는 연속된 메모리를 사용하는 것처럼 동작할 수 있습니다.
논리 주소(Logical Address)는 CPU가 프로그램(Program)을 실행하면서 생성하는 주소입니다.
다른 말로 가상 주소(Virtual Address)라고도 합니다.
프로세스(Process)는 자신이 연속된 메모리 공간을 사용하는 것처럼 생각하고 이 논리 주소(Logical Address)를 기준으로 동작합니다.
물리 주소(Physical Address)는 실제 주 기억 장치(Main Memory) 안에서 데이터가 저장된 위치를 의미합니다.
즉, RAM 안의 실제 번지를 가리키는 주소입니다.

CPU가 생성한 논리 주소(Logical Address)를 물리 주소(Physical Address)로 연결하는 과정을 주소 변환(Address Translation)이라고 합니다.
주소 변환(Address Translation)은 일반적으로 하드웨어에 포함된 MMU(Memory Management Unit)이 담당합니다.
MMU는 CPU가 만든 논리 주소(Logical Address)를 받아, 운영체제(OS)가 관리하는 정보를 참고하여 물리 주소(Physical Address)로 변환합니다.
이 과정 덕분에 프로세스(Process)는 물리 메모리의 실제 배치를 몰라도 접근하여 정상적으로 실행될 수 있습니다.
현대 운영체제(OS)는 가상 메모리(Virtual Memory)를 구현할 때 주로 페이징(Paging) 방식을 사용합니다.
프로세스(Process)가 사용하는 가상 주소 공간은 여러 개의 페이지(Page)로 나뉘고, 실제 물리 메모리는 같은 크기의 프레임(Frame)으로 나뉩니다.
프로세스(Process)를 물리 메모리의 연속된 한 공간에 둘 필요가 없어지고 서로 떨어진 프레임(Frame)에 저장할 수 있게 됩니다.

페이지 테이블(Page Table)은 각 페이지(Page)가 현재 어떤 프레임(Frame)에 매핑되어 있는지를 기록한 표입니다.
CPU가 논리 주소(Logical Address)에 접근하면 운영체제(OS)와 MMU는 페이지 테이블(Page Table)을 참고하여 그 페이지(Page)의 물리 주소(Physical Address)를 찾습니다.
주요 포함 정보
위의 정보를 통해 페이지 테이블(Page Table)은 페이지(Page)의 상태를 함께 관리하는 자료구조라고 볼 수 있습니다.
매 메모리 접근마다 페이지 테이블(Page Table)을 조회하면 성능이 떨어질 수 있습니다.
이를 개선하기 위해 사용하는 것이 TLB(Translation Lookaside Buffer)입니다.
TLB는 최근에 자주 사용한 주소 변환 결과를 저장해 두는 고속 캐시(Cache)입니다.
CPU가 논리 주소(Logical Address)에 접근할 때, 먼저 TLB를 확인해서 곧바로 물리 주소(Physical Address)를 얻을 수 있습니다.


주소 변환 오버헤드(Address Translation Overhead)를 줄이기 위해 TLB를 도입했었습니다.
이제는 페이지 테이블(Page Table) 관리 비용을 줄이기 위한 방안을 알아보겠습니다.
다단계 페이지 테이블(Multi-level Page Table)은 페이지 테이블(Page Table)을 다시 여러 단계로 나누어 관리하는 방식입니다.
기본 아이디어는 단순합니다.
모든 가상 주소 공간이 항상 사용되는 것은 아닙니다.
즉, 실제로는 빈 공간이 많은데도 단일 페이지 테이블(Page Table)을 모두 만들어 두면 비효율적입니다.
따라서 가상 주소 공간 전체에 대해 거대한 하나의 페이지 테이블(Page Table) 을 만들지 말고, 실제로 필요한 부분에 대해서만 하위 페이지 테이블을 생성하자는 것입니다.
예를 들어 2단계 페이지 테이블 구조라면, 가상 주소(Virtual Address)는 보통 다음과 같이 나뉩니다.
CPU가 주소에 접근하면 먼저 상위 페이지 테이블(Outer Page Table)에서 하위 페이지 테이블(Inner Page Table)의 위치를 찾고, 그다음 하위 페이지 테이블(Inner Page Table)에서 실제 프레임 번호(Frame Number)를 찾게 됩니다.
가상 메모리(Virtual Memory)는 단순히 메모리를 더 크게 보이게 만드는 기술이 아니라, 운영체제(OS)가 제한된 물리 메모리(Physical Memory)를 효율적으로 관리하고 각 프로세스(Process)에 독립적인 주소 공간을 제공하기 위해 사용하는 핵심 기법입니다.
CPU는 논리 주소(Logical Address)를 사용해 프로그램을 실행하고, 운영체제(OS)와 MMU는 이를 실제 물리 주소(Physical Address)로 변환합니다.
이 과정에서 페이지 테이블(Page Table)은 주소 변환의 기준이 되고, 다단계 페이지 테이블(Multi-level Page Table)은 페이지 테이블의 메모리 낭비를 줄이며, TLB는 주소 변환 속도를 높여 줍니다.
| 주 기억 장치(Main Memory)의 동작 과정 및 원리 (0) | 2026.04.24 |
|---|---|
| 캐시 메모리의 동작 과정 (0) | 2026.04.21 |
| 메모리의 구조와 동작 방식은 어떻게 될까? (0) | 2026.04.20 |
| CPU의 구조와 동작 과정은 어떻게 될까? (1) | 2026.04.20 |
| 운영체제는 어떻게 프로그램을 실행할까? (0) | 2026.04.16 |