다섯 살도 알 수 있게 · 시스템SW

페이징·세그멘테이션이 뭐예요?

페이징과 세그멘테이션을, 부품 창고 선반을 같은 크기 칸으로 나눌지 쓰임새대로 나눌지 고르는 이야기로 풀어봤어요.

부품 창고 선반F0F1F2F3설계도 묶음설계도 묶음은 선반 한 칸보다 훨씬 커요선반 칸은 다 같은 크기인데, 짐은 크기가 제각각이에요메모리(선반)를 어떤 크기로 나눠야 할지가 문제예요

선반 칸은 다 같은 크기인데, 짐은 크기가 제각각이에요.메모리(선반)를 어떤 크기로 나눠야 할지가 문제예요.

작은 부품은 칸 안에 빈 자리가 남아요설계도 1설계도 2설계도 3큰 설계도 묶음은 여러 칸에 나눠 담아요같은 크기 칸으로만 나누면 생기는 일자투리 공간이 남고, 한 덩어리였던 큰 짐은 조각나요

같은 크기 칸으로만 나누면 작은 짐은 빈 자리를 남기고, 큰 짐은 여러 칸으로 조각나요.칸 크기가 같으면 관리는 쉽지만, 짐의 모양과는 맞지 않아요.

페이징은 같은 크기로, 세그멘테이션은 쓰임새대로 선반을 나눠요페이징: 모두 같은 크기P0P1P2P3안에 든 내용은 따지지 않아요세그멘테이션: 쓰임새별로, 크기는 제각각코드데이터스택설계도·부품·임시 작업대처럼 나눠요둘 다 가상 주소를 실제 메모리 위치로 바꿔주는 방식이에요

페이징은 메모리를 같은 크기로, 세그멘테이션은 쓰임새대로 나눠요.둘 다 가상 주소를 실제 메모리 위치로 바꿔주는 방식이에요.

페이징 — 같은 크기로페이지 번호와 칸 안 위치로 찾아요
세그멘테이션 — 쓰임새로코드·데이터·스택으로 나눠요
둘 다 대응표를 써요가상 주소를 실제 위치로 바꿔요
섞어 쓰기도 해요세그먼트를 다시 페이지로 잘라요
페이징같은 크기 칸(페이지)으로 잘라요크기만 보고 나눠요칸 안 자투리 낭비(내부 단편화)세그멘테이션쓰임새 단위(세그먼트)로 잘라요크기가 제각각이에요덩어리 사이 빈틈 낭비(외부 단편화)코드스택데이터빈틈빈틈세그먼트를 다시 같은 크기 페이지로 자르는 혼합 방식도 있어요

페이징은 칸 안에 자투리를, 세그멘테이션은 덩어리 사이에 빈틈을 남겨요.세그먼트를 다시 같은 크기 페이지로 자르는 혼합 방식도 있어요.

페이지 테이블P0 → F7P1 → F2P2 → F5위치는 페이지마다 프레임 번호 하나예요칸 크기가 같아서 길이는 안 적어요세그먼트 테이블코드: 시작 100, 길이 40데이터: 시작 300, 길이 25스택: 시작 500, 길이 15크기가 제각각이라 시작과 길이를 같이 적어요길이를 넘는 번지는 막아요(보호)번지를 찾는 과정과 페이지 폴트는 가상메모리 페이지에서 다뤄요

위치를 적을 때 페이지 테이블은 프레임 번호만, 세그먼트 테이블은 시작 위치와 길이까지 적어요.번지를 찾는 과정과 페이지 폴트는 가상메모리 페이지에서 다뤄요.

한 줄로

페이징은 메모리를 같은 크기 칸으로, 세그멘테이션은 쓰임새 단위(코드·데이터·스택 등)로 나누는, 가상 주소를 실제 메모리 위치로 바꾸는 두 가지 방식이에요.

페이징은 가상·물리 메모리를 모두 고정 크기(페이지/프레임)로 나누고 페이지 테이블로 대응시켜요. 구현이 단순하고 외부 단편화가 없지만, 마지막 페이지가 다 안 차면 내부 단편화가 생겨요. 세그멘테이션은 프로그램을 코드·데이터·스택처럼 의미 있는 단위(세그먼트)로 나누고, 세그먼트 테이블에 시작 위치와 길이를 적어요. 단위가 의미와 맞아 보호·공유가 쉽지만, 크기가 제각각이라 세그먼트 사이에 외부 단편화가 생길 수 있어요. Multics와 32비트 x86처럼 세그먼트와 페이징을 함께 쓴 시스템도 있었고, 현대 64비트 운영체제는 대부분 페이징 위주로 동작해요.

어른들은 이렇게 불러요

페이징
Paging
메모리를 같은 크기 칸으로 자르는 방식. 내용과 상관없이 크기만 보고 나눠요.
세그멘테이션
Segmentation
메모리를 쓰임새 단위로 자르는 방식. 코드·데이터·스택 구역 이야기는 여기서 봐요. → 작업 공간을 구역으로 나눠 쓰는 규칙
내부 단편화
Internal Fragmentation
같은 크기 칸 안에 남는 자투리 공간. 페이징에서 생겨요.
외부 단편화
External Fragmentation
덩어리와 덩어리 사이에 남아 못 쓰는 빈틈. 세그멘테이션에서 생기기 쉬워요.
페이지 테이블
Page Table
가상 페이지와 실제 프레임의 대응표. 페이징의 핵심 구조예요. → 창고 전체를 내 것처럼 보여주는 가짜 지도
세그먼트 테이블
Segment Table
세그먼트마다 시작 위치와 길이를 적은 표. 길이를 넘는 번지는 막아서 보호에도 쓰여요.
세그멘테이션 페이징
Segmented Paging
세그먼트를 다시 페이지로 자르는 혼합 방식. 세그먼트로 보호·공유를 챙기고, 페이지로 외부 단편화를 피하려는 방식이에요.
가상메모리
Virtual Memory
메모리를 프로세스마다 전용 공간처럼 보여주는 가짜 지도. 페이징·세그멘테이션은 이 지도를 구현하는 두 방법이에요. → 창고 전체를 내 것처럼 보여주는 가짜 지도
다음 이야기
리프트에 누가 먼저 올라갈까 →
다른 용어도 그림책으로 보고 싶다면 요청하기 →