728x90
Page의 종류
- Anonymous page(익명 페이지)
- 파일으로부터 매핑되지 않은, 커널로부터 할당된 페이지
- File-backed page(파일 기반 페이지)
- 파일으로부터 매핑된 페이지
Anonymous Page
- 커널로부터 프로세스에게 할당된 일반적인 메모리 페이지이다. 즉, 익명 페이지는 힙을 거치지 않고 할당받은 메모리 공간이다.(힙도 익명 페이지이다. malloc, new같은 메모리 할당자는 익명 페이지에서 일부 메모리를 잘라 할당 받는것이다.) 익명이라는 뜻은 파일에 기반하고 있지 않은 페이지라는 뜻이다.
- 페이지가 파일에 매핑되어 있다면, 그 메모리는 파일 내용을 담고 있을 것이다. 하지만 익명 페이지는 파일에 매핑되어 있지 않았기 때문에 0으로 초기화된 값을 담고 있다.
- 프로세스가 mmap()으로 커널에게 익명 페이지를 할당 요청하게 되면, 커널은 프로세스에게 가상 메모리 주소 공간을 부여하게 된다. 부여된 가상 메모리 공간은 아직까지는 실제 물리 메모리 페이지로 할당되지 않은 공간이다. 부여된 가상 메모리에 읽기, 쓰기시 다음과 같은 커널의 도움을 받아 zero페이지로 에뮬레이션 되거나, 실제 물리 페이지로 매핑된다.
- 프로세스가 그 메모리 공간에 읽기 작업 시, 커널은 zero로 초기화된 메모리 페이지를 제공한다.
- 프로세스가 그 메모리 공간에 쓰기 작업 시, 커널은 실제 물리 메모리를 할당하고 write된 데이터를 보관한다.
- 익명 페이지는 private 또는 shared로 할당받을 수 있다.
- 프로세스의 힙과 스택이 private로 할당된 anonymous page이다.
- shared는 프로세스간 통신을 위해 사용되는 anonymous page이다.
File-Backed Page
- 파일의 내용을 메모리에 직접 반영하는 메모리 페이지다. 이는 파일 내용을 프로세스의 주소 공간으로 매핑하여, 파일 데이터에 대한 빠른 접근과 수정을 가능하게 한다.
- 프로그램이 mmap과 같은 시스템 호출을 사용하여 파일을 메모리에 매핑하면, 운영체제는 해당 파일의 내용을 메모리 페이지로 매핑한다.
작동 원리
- 메모리 매핑 : 프로세스가 파일을 메모리에 매핑하면, 운영체제는 파일의 내용을 메모리 페이지에 매핑한다. 이 페이지들은 파일의 실제 데이터를 반영한다.
- 페이지 폴트 처리 : 프로세스가 처음으로 파일-백업 페이지에 접근하면 페이지 폴트가 발생할 수 있다. 이 경우, 운영체제는 해당 파일의 적절한 부분을 읽어 메모리에 로드한다.
- 데이터 동기화 : 프로세스가 이 페이지들을 변경하면, 변경사항은 나중에 파일 시스템에 다시 쓰여질 수 있다. 이를 통해 파일과 메모리 간의 데이터 동기화가 이루어진다.
특징
- 지속성 : 디스크에 저장된 파일과 직접 연결되어 있으므로, 데이터는 지속성을 가진다.
- 효율적인 파일 접근 : 파일 입출력을 위한 시스템 호출의 오버헤드없이 파일 데이터에 접근하고 수정할 수 있다.
- 동기화 옵션 : 자동 또는 수동으로 파일과 메모리 간의 동기화를 관리할 수 있다.
728x90
'Computer > CS' 카테고리의 다른 글
DMA(Direct Memory Access) (0) | 2024.03.22 |
---|---|
Swap Disk (1) | 2024.03.22 |
페이지 교체 정책(Page Replacement Policy) (0) | 2024.03.22 |
Lazy Loading (0) | 2024.03.22 |
페이지 폴트(Page Fault) (0) | 2024.03.22 |