파일 기반 페이지. 가상 메모리 시스템에서 사용되는 메모리 페이지. 디스크의 특정 파일과 연관된 페이지 의미
메모리 맵 파일
페이지 폴트
물리
메모리에 로드x
파일 열기:
open
시스템 호출을 사용합니다.int fd = open("example.txt", O_RDONLY);
파일 매핑:
mmap
시스템 호출을 사용하여 파일을 가상 메모리 주소 공간에 매핑합니다.void *map = mmap(NULL, size, PROT_READ, MAP_PRIVATE, fd, 0);
파일 접근:
char *data = (char *)map;
printf("%s\n", data); // 파일의 내용을 출력
파일 매핑 해제:
munmap
시스템 호출을 사용하여 매핑된 메모리 영역을 해제
합니다.munmap(map, size);
close(fd);
익명 페이지. 가상 메모리 시스템에서 디스크의 특정 파일과 연관되지 않은 메모리 페이지 의미.
주로 프로그램이 실행
중에 동적으로 할당된 메모리로 구성되며, ex) 힙, 스택과 같은 영역에 할당된 메모리 포함. 데이터 구조와 관련된 데이터 저장.
익명 페이지는 파일 시스템의 파일과 연관되지 않습니다
. 따라서 디스크에 저장된 파일의 내용이 아니라 프로그램의 동적 메모리 할당에 의해 생성된 데이터가 저장됩니다.
malloc
, calloc
, realloc
같은 동적 메모리 할당 함수에 의해 할당된 메모리를 저장합니다.동적
메모리 할당
프로그램이 실행 중에 동적으로 메모리를 할당할 때, 이러한 메모리는 익명 페이지로 관리. 예를 들어, malloc
함수 호출 시 운영체제는 필요한 양의 메모리를 익명 페이지로 할당.
#include <stdlib.h>int main()
{
// 100개의 정수형 배열 동적 할당
int *arr = (int *)malloc(100 * sizeof(int));
free(arr); // 할당된 메모리 해제
return 0;
}
스택 확장
함수 호출 시 함수의 지역 변수나 매개 변수를 저장하기 위해 스택이 확장되면, 스택에 사용되는 메모리도 익명 페이지로 할당됩니다.
void foo() {
int a = 10; // 지역 변수는 스택에 저장됨
}
특징 | 익명 페이지 (Anonymous Page) | 파일 기반 페이지 (File-backed Page) |
---|---|---|
연관된 파일 | 없음 | 특정 파일과 연관됨 |
용도 | 동적 메모리 할당, 스택 확장 등 | 파일의 내용을 메모리로 매핑하여 사용 |
저장 위치 | 물리 메모리 및 스왑 공간 | 물리 메모리 및 원본 파일 |
예시 | malloc, 스택, 힙 | mmap을 사용한 파일 매핑 |