가상 메모리
가상 메모리는 실제 물리 메모리(RAM)의 크기보다 더 큰 메모리 공간을 사용하는 것처럼 보이게 하는 컴퓨터 시스템의 메모리 관리 기술이다. 운영체제가 하드 디스크와 같은 보조 기억 장치를 RAM의 확장된 부분으로 사용하여, 실행 중인 프로그램들이 실제 사용 가능한 RAM보다 더 많은 메모리를 필요로 할 때 이를 처리할 수 있게 한다.
개념
가상 메모리는 프로그램이 필요로 하는 모든 데이터를 RAM에 상주시키지 않고도 실행될 수 있도록 한다. 대신, 현재 사용 중인 데이터만 RAM에 유지하고, 사용 빈도가 낮은 데이터는 하드 디스크의 스왑 공간(swap space)이나 페이지 파일(page file)로 이동시킨다. 이 과정을 페이징(paging) 또는 스와핑(swapping)이라고 한다.
작동 방식
-
주소 변환: 프로그램이 메모리 주소를 요청하면, 가상 주소(virtual address)를 실제 물리 주소(physical address)로 변환하는 작업이 필요하다. 이 변환은 메모리 관리 장치(MMU, Memory Management Unit)에 의해 수행된다.
-
페이지 테이블: 가상 주소와 물리 주소 간의 매핑 정보는 페이지 테이블(page table)에 저장된다. 페이지 테이블은 운영체제가 관리하며, 각 페이지의 위치와 상태(RAM에 있는지, 디스크에 있는지)를 추적한다.
-
페이지 폴트: 프로그램이 RAM에 없는 페이지에 접근하려고 시도할 때 페이지 폴트(page fault)가 발생한다. 페이지 폴트가 발생하면 운영체제는 해당 페이지를 디스크에서 RAM으로 가져오고, 필요하다면 RAM에서 덜 사용되는 페이지를 디스크로 이동시킨다.
장점
- 더 큰 프로그램 실행: 물리 메모리의 제약 없이 더 큰 프로그램을 실행할 수 있다.
- 메모리 효율성: 사용되지 않는 데이터는 디스크로 이동시켜 RAM 공간을 확보하므로 메모리 효율성을 높인다.
- 다중 프로그래밍: 여러 프로그램이 동시에 실행될 수 있도록 메모리 공간을 분리하고 보호한다.
단점
- 성능 저하: 페이지 폴트가 발생하면 디스크 접근이 필요하므로 프로그램 실행 속도가 느려질 수 있다.
- 복잡성: 메모리 관리 시스템이 복잡해지며, 운영체제의 부담이 증가한다.
관련 용어
- 스왑 공간 (Swap Space): 하드 디스크에 할당된 가상 메모리 영역.
- 페이지 파일 (Page File): 윈도우 운영체제에서 사용하는 가상 메모리 파일.
- 페이징 (Paging): 가상 메모리를 고정 크기의 페이지 단위로 나누어 관리하는 방식.
- 세그멘테이션 (Segmentation): 가상 메모리를 논리적인 크기의 세그먼트 단위로 나누어 관리하는 방식 (페이징과 함께 사용되기도 함).