다섯 살도 알 수 있게 · 시스템SW
가상메모리·페이징이 뭐예요?
가상메모리와 페이징을, 창고 전체를 내 전용 공간처럼 보여주는 가짜 지도 이야기로 풀어봤어요.
내 선반인데, 한 칸을 열어보니 비어 있어요."내 선반"이라고 들었는데, 실제로 다 차 있진 않아요.
모두에게 진짜 창고를 통째로 줄 순 없어요.정비사가 늘수록 진짜 선반 공간은 금방 부족해져요.
가상메모리 = 창고 전체를 내 것처럼 보여주는 가짜 지도예요.지도의 각 칸(페이지)이 실제 선반 칸(프레임)을 가리켜요.
가상 주소내가 보는 가짜 지도 번지
페이지지도를 자른 작은 칸 하나
페이지 테이블가상 칸 ↔ 진짜 칸 대응표
페이지 폴트없으면 디스크에서 불러와요
페이지 테이블이 가상 페이지를 실제 프레임에 연결해요.P2를 찾으면 "페이지 폴트" — 디스크에서 올려와요.
칸이 선반과 디스크를 너무 자주 오가면 오히려 느려져요.가상메모리는 '더 많아 보이게'는 해도, 진짜 선반 속도를 늘려주진 않아요.
한 줄로
가상메모리 = 창고(메모리)가 작아도 모두에게 전용 창고처럼 보이는 가짜 지도를 주고, 페이지 단위로 필요한 것만 실제 선반에 올리는 방법.
가상메모리는 프로세스마다 독립된 가상 주소 공간을 주어, 물리 메모리보다 커 보이게 하고 프로세스끼리 서로의 메모리를 침범하지 못하게 해요. 페이징은 가상/물리 메모리를 고정 크기 페이지로 나눠 페이지 테이블로 매핑하고, 필요한 페이지가 물리 메모리에 없으면 페이지 폴트가 나서 디스크(스왑 영역)에서 가져와요. 폴트가 너무 잦으면 스래싱(thrashing)이 일어나 전체 성능이 떨어져요.
어른들은 이렇게 불러요
- 가상 주소
Virtual Address - 내가 보는 가짜 지도의 번지. 진짜 선반 위치가 바뀌어도 이 번지는 그대로예요.
- 페이지/프레임
Page/Frame - 지도의 칸(페이지)과 진짜 선반 칸(프레임). 페이지와 프레임은 같은 크기로 잘라서 맞춰요. 쓰임새대로 자르는 방식과의 비교 → 선반을 똑같이 자를까, 쓰임새대로 자를까
- 페이지 테이블
Page Table - 가상 칸과 진짜 칸의 대응표. 반장(OS)이 관리해요.
- 페이지 폴트/스와핑
Page Fault/Swapping - 찾는 칸이 없어 디스크에서 올려오는 일. 너무 잦으면 스래싱으로 느려져요.
- 캐시 메모리
Cache Memory - 자주 쓰는 공구만 담는 작은 공구함. 더 빠른 층위의 '가까운 저장공간'이에요. → 바로 옆에 놓아둔 공구함
- 프로세스
Process - 독립된 차 한 대, 독립된 메모리 공간. 가상 주소 공간은 프로세스마다 따로 가져요. → 같은 차, 여러 손
- 교착상태
Deadlock - 서로의 열쇠를 기다리며 영원히 멈춤. 자원이 한정된 건 메모리도 리프트도 마찬가지예요. → 서로의 열쇠를 기다리며 멈춘 정비공장
- 복잡도(Big-O)
Time Complexity - 칸 수가 늘 때 찾는 시간이 느는 정도. 페이지 테이블 조회 비용도 이 자로 재요. → 차가 많아질 때 얼마나 느려질까
다음 이야기
서로의 열쇠를 기다리며 멈춘 정비공장 →