가상 메모리 (Virtual Memory)
이번에는 운영체제의 메모리 관리 기법인 가상 메모리에 대한 내용이다. CPU 내부에 데이터를 저장할 수 있는 공간인 레지스터는 메모리 전체 용량에 비해 매우 작아서, 메모리의 모든 정보를 저장할 수 없다. 그렇다면 운영체제는 어떻게 메모리 안에 있는 여러 프로그램의 정보를 효율적으로 관리할 수 있을까?
💡가상 메모리 (Virtual Memory)란?
- 실제 메모리(RAM)의 크기와는 별개로, 각 프로세스마다 자신만의 '가상 주소 공간(Logical Address Space)'을 사용하는 메모리 관리 기법이다.
- 각 프로세스마다 자신만의 논리적 주소(가상 주소, Logical Address)를 가지며, 이 주소는 실제 물리 메모리의 주소(Physical Address)와는 다름
논리 주소와 물리 주소

💡논리 주소 (Logical Address)
- 프로세스가 바라보는 주소, 0번지부터 시작 (각 프로세스별로 0번지 존재)
- 예를 들어, 현재 메모리 상에 웹 브라우저, 메모장, 게임 프로세스가 적재되어 있다면 이 모든 프로세스 각각 0번지부터 시작하는 논리 주소를 가지고 있는 셈이다.
💡물리 주소 (Physical Address)
- 실제 메모리 하드웨어 상의 주소
- 여러 프로세스가 같은 논리 주소(ex. 0번지)를 쓰더라도 실제로는 서로 다른 물리 주소에 매핑됨

💡MMU(Memory Management Unit)
- 논리 주소와 물리 주소 간의 변환을 담당하는 하드웨어
- MMU는 CPU와 메모리 사이에 위치하며, CPU가 이해하는 논리주소를 메모리가 이해하는 물리 주소로 변환하는 역할을 한다.
MMU를 기준으로 물리 주소와 논리 주소가 변환된다는 내용을 바탕으로, 프로세스가 이러한 주소 체계를 통해 어떻게 메모리에 할당되는지 알아보자. 가장 기본적인 메모리 할당 방식으로는 스와핑과 연속 메모리 할당이 있다.
스와핑과 연속 메모리 할당

💡스와핑(Swapping)
- 메모리 부족 시, 오랫동안 사용되지 않은 프로세스나 입출력 작업을 요구하며 대기 상태가 된 프로세스를 스왑 영역(Swap Space)라는 보조기억장치의 일부 영역으로 내보내고, 프로세스를 내보낸 자리에 생긴 빈 공간에 다른 프로세스를 적재하여 실행하는 메모리 관리 방식
- 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것을 스왑 아웃 (swap-out), 스왑 영역에 있는 프로세스가 다시 메모리로 옮겨오는 것을 스왑 인 (swap-in)이라고 한다.
- 스왑 아웃되었던 프로세스가 다시 스왑 인될 때, 스왑 아웃되지 전의 물리 주소와 다른 주소에 적재될 수 있다.
💡연속 메모리 할당과 외부 단편화
✅ 연속 메모리 할당
지금까지는 메모리 내에 프로세스들이 연속적으로 배치되는 상황을 가정하여 설명되었다.
- 연속 메모리 할당 (Contiguous Memory Allocation)
- 연속 메모리 할당은 프로세스들이 메모리 내에서 연속적으로 배치되는 방식이다.
- ex. 프로세스 A, B, C, D가 메모리 상에서 순서대로 쭉 이어져서 배치되는 구조

✅ 외부 단편화
이러한 연속 메모리 할당은 외부 단편화라는 문제점이 있다.
- 외부 단편화(External Fragmentation)
- 프로세스들이 할당/종료를 반복하면 메모리 내에 '조각난 빈 공간'이 발생하여 메모리 낭비가 되는 현상
- 예를 들어, 빈 공간이 50MB, 50MB가 떨어져 있는데, 80MB짜리 프로세스는 적재 불가
- 실제로 메모리 활용도가 떨어진다.
스와핑과 연속 메모리 할당은 다음 두 가지 문제점을 가진다. 외부 단편화 발생 그리고 프로세스의 크기가 실제 물리 메모리보다 크면 실행 불가능하다는 것이다. 이러한 문제를 해결하기 위한 메모리 관리 방식이 가상 메모리(Virtual Memory)이다.
페이징을 통한 가상 메모리 관리
가상 메모리(Virtual Memory) 방식은 실행하고자 하는 프로세스의 일부만 메모리에 적재하여, 실제 메모리보다 더 큰 크기의 프로세스를 실행 가능하게해준다. 대표적인 가상 메모리 관리 기법에는 페이징과 세그멘테이션이 있다. 그 중 페이징이 운영체제에서 범용적으로 사용된다.
가상 메모리 기법으로 생성된 논리 주소 공간은 가상 주소 공간(Virtual Address Space) 이라고도 부른다.

💡페이징(Paging)
- 프로세스의 논리 주소 공간을 페이지(Page) 라는 일정 크기의 단위로 나누고, 물리 주소 공간도 프레임(Frame)이라는 동일한 크기의 단위로 나눈 뒤, 페이지를 프레임에 할당하여 관리하는 기법
- 프로세스를 이루는 페이지들은 물리 메모리에서 불연속적으로 할당될 수 있다는 특징이 있다.
- 따라서, 연속 메모리 할당처럼 외부 단편화가 발생하지 않는다.
💡페이지와 프레임
- 페이지(Page) : 논리 주소 공간의 일정 크기 단위
- 프레임(Frame) : 물리 주소 공간의 일정 크기 단위
💡세그멘테이션 (Segmentation)

또 다른 가상 메모리 기법인 세그멘테이션에 대해서 간략하게 설명하자면, 프로세스를 세그먼트(segment)라는 가변적 크기의 단위로 분할하여 관리하는 방식이다. 페이징 기법처럼 프로세스를 나누는 단위가 일정하지 않더라도 유의미한 논리적 단위로 분할한다. 세그멘테이션 기법을 사용하면 세그먼트의 크기가 일정하지 않기 때문에 외부 단편화가 발생할 수 있다.
💡페이징 시스템에서의 스와핑
- 페이징 기법을 사용할 때에도 스와핑이 가능하다. 이때는 전체 프로세스가 아닌, 페이지 단위로 스와핑이 발생한다.
- 페이지가 메모리에서 보조기억장치로 나가는 것을 페이지 아웃(Page-out)이라 하고, 보조기억장치에서 메모리로 다시 들어오는 것을 페이지 인(Page-in)이라 한다.
- 이처럼 페이지 일부만 메모리에 적재하면 프로세스 전체가 메모리에 존재하지 않아도 실행이 가능하며, 페이징 기법을 사용하면 프로세스 크기가 물리 메모리보다 클 수 있다는 장점이 있다.
출처
https://www.hanbit.co.kr/store/books/look.php?p_code=B3079890360
이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접
기술 면접과 실무에 필요한 CS 지식, 한 권으로 끝내자!
www.hanbit.co.kr
이미지 출처
1) MMU
https://recipes.tistory.com/386
MMU (Memory Management Unit)
MMU는 CPU의 Memory 주소를 감쪽같이 속이는 거짓말쟁이에요. MMU는 표현하고 행동해요. CPU가 Memory를 Access할 때 마다 주소를 속인답니다. 주소를 속여서 어떻게 하느냐, Physical Address와 Virtual Address (Lo
recipes.tistory.com
2) 스와핑
[OS] Swapping과 Paging
스와핑(Swapping)메모리에서 사용되지 않는 프로세스를 보조기억장치로 옮겨서 생긴 메모리 상의 빈 공간에 또 다른 프로세스를 적재하여 실행하는 방식메인 메모리 공간이 부족할 때 사용한다.`
coji.tistory.com
3) 페이징
https://ddongwon.tistory.com/49
페이징(Paging)과 페이지 테이블(Page table)
페이징과 페이지 테이블은 현대 운영체제 메모리 관련 컨셉에서 아주 중요한 것이므로 잘 정리해두자! 1. 페이징(Paging) address space를 연속적으로 할당하지 말고, 페이지라는 단위로 쪼개서 사
ddongwon.tistory.com
4) 세그멘테이션
https://doh-an.tistory.com/24#google_vignette
[OS] 세그멘테이션 Segmentation
페이징 : 프로세스를 정확하게 일정한 간격(페이지)으로 잘라 메모리에 적재하는 방법 세그멘테이션 : 프로세스를 논리적 단위(세그먼트)로 잘라서 메모리에 적재하는 방법 ✔️세그멘테이션
doh-an.tistory.com
'CS > [도서] 이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접' 카테고리의 다른 글
| [운영체제] 3-6. (1) 파일 시스템 (File System) (3) | 2025.08.04 |
|---|---|
| [운영체제] 3-5. (2) 가상 메모리 (Virtual Memory) (3) | 2025.07.30 |
| [운영체제] 3-4. (2) CPU 스케줄링 (CPU Scheduling) (3) | 2025.07.28 |
| [운영체제] 3-4. (1) CPU 스케줄링 (CPU Scheduling) (2) | 2025.07.25 |
| [운영체제] 3-3. (2) 동기화와 교착 상태 (2) | 2025.07.22 |