페이징이란?
페이징(paging)은 운영체제가 가상 메모리와 물리 메모리를 효율적으로 관리하기 위해 사용하는 대표적인 메모리 관리 기법이다. 핵심 아이디어는 메모리를 고정된 크기의 블록(페이지)으로 나누고, 필요한 페이지만 메모리에 적재해서 사용하는 것이다.
지난 Part1 글에서 가상 메모리와 물리 메모리의 개념에 대해 알아보았다. 페이징 기법에 대해 알아보기 전에 간단히 가상메모리와 가상 주소의 개념을 복습해보자.
가상메모리와 메모리
- 가상메모리는 프로세스(프로그램)가 사용하는 논리적인 메모리 공간이다.
- 실제로는 물리메모리(RAM)와 디스크(보조기억장치)에 걸쳐 존재한다.
- 가상메모리는 고정된 크기의 블록인 페이지(page) 단위로 나뉜다.
- 메모리도 같은 크기의 블록인 페이지 프레임(page frame)으로 나뉜다.
- 이때 가상 페이지를 메모리 상의 페이지 프레임에 매핑해서 사용하게 된다.
가상주소의 구조
프로세스는 메모리를 접근할 때 가상주소를 사용한다.
이 주소는 두 부분으로 나뉜다:
- p: 페이지 번호 (가상메모리에서 몇 번째 페이지인지)
- d: 변위(오프셋), 해당 페이지 안에서 몇 바이트 떨어진 위치인지
예를 들어 v = (3, 8)이라는 가상 주소는
→ “가상메모리의 3번 페이지 안에서 8번째 바이트 위치”라는 뜻이다.
페이지 사상표(Page Table)
운영체제는 페이지 사상표라는 자료구조를 통해 가상 주소를 실제 물리 주소로 변환해준다.
페이지 사상표에는 다음과 같은 정보가 들어 있다:
- 가상 페이지 번호
- 물리 페이지 프레임 번호 (페이지가 메모리에 있을 때만 유효함)
- 존재 비트 : 해당 페이지가 현재 물리 메모리에 존재하는지 여부 (1이면 메모리에 있음, 0이면 없음)
- 디스크에 저장된 위치 정보 (존재 비트가 0일 때만 유효)
데이터 참조 과정
이제 프로세스가 가상 주소 v = (3, 8)에 있는 a를 읽으려고 한다고 해보자.
데이터 참조는 다음 순서로 이루어진다.
- 프로세스가 (3, 8)이라는 가상 주소를 CPU에 넘김
- 하드웨어(MMU**, TLB 등)이 페이지 사상표에서 페이지 3이 메모리에 있는지 확인
- 이때 확인하는 건 "페이지 3 전체가 메모리에 있는지" 여부다.
(그 페이지에 a가 있는지 여부는 확인하지 않는다.)
- 이때 확인하는 건 "페이지 3 전체가 메모리에 있는지" 여부다.
- 페이지 3이 메모리에 없다면 → 페이지 폴트 발생
- 운영체제가 개입해서 디스크에서 페이지 3 전체를 읽어와 메모리의 빈 페이지 프레임에 적재한다.
(페이지 안에 있는 모든 데이터가 통째로 메모리에 올라온다.) - 사상표(페이지 테이블) 업데이트: 운영체제는 사상표를 업데이트하여 해당 페이지가 어떤 페이지 프레임에 위치하는지 표시한다.
- 페이지 폴트가 처리된 후, 운영체제가 명령을 재개함.
- 운영체제가 개입해서 디스크에서 페이지 3 전체를 읽어와 메모리의 빈 페이지 프레임에 적재한다.
- 페이지가 메모리에 존재하면 → MMU가 페이지 사상표에서 해당 프레임 번호를 확인한다 (예: 5번 프레임)
- 그 다음, 변위 8을 더해 물리 주소 = 5 × 페이지 크기 + 8 을 계산한다.
(페이지와 페이지 프레임의 크기가 동일하기 때문에 페이지 내 변위는 그대로 사용함) - 최종적으로 CPU가 직접 메모리에 있는 그 물리 주소에 접근하여 a를 읽어온다.
MMU(Memory Management Unit)의 역할
프로세스(또는 CPU)는 가상 주소만 알고 있다. 이 가상 주소를 물리 주소로 바꾸는 일을 담당하는 게 MMU이다.
MMU는 주소 변환을 위해 페이지 사상표를 사용해서, 가상 페이지 번호 → 페이지 프레임 번호 변환, 그리고 변위(오프셋)를 더해서 최종 물리 주소를 생성한다.
즉, CPU는 단지 (3, 8)이라는 주소를 실행 중인 명령어에 의해 내보낼 뿐이고, 그 주소를 물리 주소로 바꾸는 모든 절차는 MMU가 자동으로 처리하는 것이다.
결국 각 단계별로 실행 주체를 정리하면 다음과 같다.
가상 주소 생성 : 실행 중인 프로세스 (즉, CPU에서 명령어 실행)
페이지 사상표 확인 : MMU
존재 비트 검사, 프레임 번호 획득, 물리 주소 계산: MMU
페이지 폴트 발생 시 개입 : 운영체제
이렇게 페이지 사상표를 직접 이용하여 동적 주소변환을 하는 것을 직접사상이라고 한다.

'Journey to CS > KNOU CS' 카테고리의 다른 글
| [운영체제] 가상메모리와 주소 변환 - Part4. 페이징/세그먼테이션 혼용기법 (0) | 2025.06.10 |
|---|---|
| [운영체제] 가상메모리와 주소 변환 - Part3. 연관/직접사상의 동적 주소변환 과정 (0) | 2025.06.10 |
| [DBS] 트랜잭션 - Part 2. 회복 가능한 스케줄과 비연쇄적 스케줄 (0) | 2025.06.09 |
| [운영체제] 단일/다중 프로그래밍 환경에서의 메모리 관리 방식을 비교해 보자 (0) | 2025.06.09 |
| [운영체제] 환형대기 조건(사이클)을 차단하여 교착상태를 예방하는 방법 (0) | 2025.06.09 |