[이어드림스쿨 1주차] 메모리 관리 - 페이징과 세그멘테이션

메모리 관리 - 페이징과 세그멘테이션
✅ 1. 페이지(Paging)란?
➡ 가상 주소와 물리적 주소를 매핑하는 단위이다.
➡ 메모리를 작은 크기의 블록(페이지) 단위로 나누어 관리하는 방식이다.
📌 특징:
한 페이지 크기는 보통 4KB 또는 8KB이다.
페이지 단위로 메모리를 나누어 관리하기 때문에 공간을 효율적으로 활용 가능하다.
물리적 메모리와 가상 주소를 연결하는 페이지 테이블(Page Table)이 필요하다.
📌 비유:
책을 일정한 크기의 페이지 단위로 나누어 관리하는 것과 같다.
📖 각 페이지에는 일정한 정보가 포함되며, 필요한 페이지만 빠르게 찾을 수 있다.
✅ 2. 페이지 테이블(Page Table)이란?
➡ 가상 주소의 페이지와 실제 물리 메모리의 페이지를 매핑하는 표이다.
📌 특징:
프로세스가 접근하는 가상 주소는 실제 물리 주소와 다를 수 있다.
페이지 테이블을 통해 가상 주소를 실제 물리 주소로 변환한다.
페이지 번호 ↔ 물리 메모리 번호를 연결하여 관리한다.
📌 비유:
호텔 객실 배정표와 같다. 🏨
고객(프로세스)이 예약한 방(가상 주소)이 실제 배정된 방(물리 주소)과 다를 수 있으므로 객실 배정표(페이지 테이블)를 보고 확인해야 한다.
✅ 3. 스와핑(Swapping)이란?
➡ 메모리가 부족할 때, 사용 빈도가 적은 프로세스를 하드디스크로 이동하는 방식이다.
📌 특징:
새로운 프로세스를 실행할 공간이 부족하면 기존 프로세스(A, B, C) 중 하나를 하드디스크로 이동시킨다.
나중에 다시 필요하면 하드디스크에서 메모리로 불러온다.
📌 비유:
책상이 꽉 차면, 잘 사용하지 않는 책을 책장(하드디스크)으로 옮기는 것과 같다.
다시 필요해지면 책장에서 꺼내 책상 위에 올려놓고 사용한다.
✅ 4. 요구 페이징(Demand Paging)이란?
➡ 프로세스 전체를 스와핑하는 것이 아니라, 필요한 페이지만 메모리에 로드하는 방식이다.
📌 특징:
당장 필요한 페이지만 메모리에 올려 메모리 낭비를 줄일 수 있다.
프로세스 전체가 아닌 일부만 옮겨오기 때문에 속도가 빠르고 효율적이다.
📌 비유:
- 📚 책 전체를 책상에 펼쳐 놓지 않고, 필요한 페이지만 펼쳐서 보는 것과 같다.
✅ 5. 캐시(Cache)란?
➡ 자주 사용하는 데이터를 빠르게 사용하기 위해 임시로 저장하는 공간이다.
📌 특징:
메모리보다 속도가 빠르며, CPU와 데이터를 빠르게 교환하기 위해 사용된다.
자주 사용하는 데이터를 캐시에 저장해 다시 불러오는 속도를 빠르게 한다.
📌 비유:
✋ 손바닥에 적은 메모처럼, 중요한 정보를 쉽게 접근할 수 있도록 보관하는 것과 같다.
하지만 손바닥이 작아서 모든 정보를 적을 수 없는 것처럼, 캐시도 용량이 제한적이다.
✅ 6. 요구 페이징과 캐시의 관계
➡ 실제 물리 메모리는 하드디스크의 캐시 역할을 한다.
📌 특징:
자주 사용하는 데이터를 실제 메모리에 두어 빠르게 접근할 수 있도록 관리한다.
메모리에 없는 데이터는 느린 하드디스크에서 가져와야 하므로, 가급적 많이 쓰는 데이터를 메모리에 유지하려고 한다.
📌 비유:
- 책상(메모리) 위에 자주 보는 책을 두고, 책장(하드디스크)에서 필요할 때만 가져오는 것과 같다.
✅ 7. 페이징의 문제점: 내부 단편화(Internal Fragmentation)
➡ 페이지 크기가 고정되어 있어, 남는 공간이 생기는 현상이다.
📌 특징:
예를 들어 페이지 크기가 4KB이고, 데이터 크기가 3KB라면 1KB가 낭비된다.
작은 프로그램을 실행해도 정해진 페이지 크기만큼 공간이 할당되므로 비효율적일 수 있다.
📌 비유:
📦 큰 상자에 작은 물건을 넣으면 남는 공간이 생기는 것과 같다.
공간이 낭비되므로, 이를 줄이기 위해 적절한 페이지 크기를 선택해야 한다.
✅ 8. 세그멘테이션(Segmentation)이란?
➡ 메모리를 논리적인 의미 단위(코드, 데이터, 스택 등)로 나누어 관리하는 방식이다.
📌 특징:
프로그램의 논리적인 구조(코드, 데이터, 스택)를 독립적인 세그먼트로 나누어 관리한다.
세그먼트 크기는 일정하지 않으며, 필요에 따라 다르게 할당된다.
📌 비유:
🌸 꽃 그림을 의미 있는 부분(꽃잎, 줄기, 잎)으로 나누는 것과 같다.
의미를 유지하면서 나누므로, 중요한 데이터를 효과적으로 관리할 수 있다.
✅ 9. 페이징 vs 세그멘테이션
구분 | 페이징(Paging) | 세그멘테이션(Segmentation) |
기본 개념 | 메모리를 고정 크기(페이지)로 나누어 관리 | 메모리를 의미 단위(세그먼트)로 나누어 관리 |
크기 | 페이지 크기가 고정됨 | 세그먼트 크기가 가변적 |
주소 관리 | 페이지 테이블을 사용 | 세그먼트 테이블을 사용 |
단점 | 내부 단편화 발생 가능 | 외부 단편화 발생 가능 |
📌 비유:
페이징: 📏 일정한 크기로 무조건 자르는 방식 (퍼즐 조각)
세그멘테이션: ✂️ 의미 있는 단위로 나누는 방식 (꽃 그림 나누기)
✅ 10. 페이징과 세그멘테이션을 결합한 방식
➡ 세그멘트 단위로 나누고, 세그먼트를 다시 페이지로 나누는 방식이다.
📌 특징:
세그멘테이션의 논리적인 구조 유지 + 페이징의 효율적인 메모리 관리 장점 결합
외부 단편화를 줄일 수 있지만, 주소 변환 과정이 많아 속도가 느려질 수 있음
📌 비유:
- 도서관에서 책을 카테고리(세그먼트)로 나누고, 카테고리 안에서 페이지(페이징) 단위로 관리하는 것과 같다.
✅ 핵심 요약
✔ 페이징: 메모리를 일정한 크기(페이지)로 나누어 관리하는 방식
✔ 페이지 테이블: 가상 주소와 실제 물리 주소를 연결하는 표
✔ 스와핑: 사용하지 않는 프로세스를 하드디스크로 이동하여 메모리 확보
✔ 요구 페이징: 필요한 페이지만 메모리에 로드하여 효율적으로 사용
✔ 캐시: 자주 사용하는 데이터를 빠르게 접근할 수 있도록 저장하는 공간
✔ 내부 단편화: 고정된 페이지 크기 때문에 생기는 낭비 공간
✔ 세그멘테이션: 메모리를 의미 단위(코드, 데이터 등)로 나누어 관리하는 방식
✔ 페이징 + 세그멘테이션: 두 기법을 결합하여 장점을 활용하는 방식
Subscribe to my newsletter
Read articles from KiwiChip directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

KiwiChip
KiwiChip
I'm currently learning Python and studying RAG (Retrieval-Augmented Generation).