Memory-Mapped File은 파일이 디스크에 존재하면서,
동시에 메모리에 존재하는 상태를 만드는 메커니즘이다.

이는 단순히 “파일을 메모리에 읽어오는 것”이 아니라,
파일의 각 페이지가 가상 메모리의 페이지와 직접 연결되는 구조를 의미한다.

이해하기 쉽게 가상 주소(Virtual Memory) 매핑과의 차이점을 비교하며 알아보도록 하자.

일반적인 가상 메모리 매핑은 다음의 구조를 따른다: Virtual Address - 변환 -> Physical Page

이것은 “해당 가상 주소가 RAM의 이 물리 페이지를 사용한다”를 의미한다.

이에 비해, Memory-Mapped File은 좀 더 복잡한 구조를 가진다:

`Virtual Address -> Physical Page (Page Cache Page) -> File (inode + offset)`

(해당 구조의 이해가 어렵다면 Page Cache 문서를 읽고 오는 것을 권장한다.)

이 구조는 쉽게 말해 이 가상 주소가 단순히 이 물리 페이지를 사용한다를 넘어,
“이 가상 주소가 특정 파일의 특정 오프셋을 대표하는 페이지에 대응된다”를 보여준다.

압축적으로 정리하면, Memory-Mapped File은 메모리에 있는 파일인 것이다.

이 차이점이 중요한 이유는 아래의 용례를 통해 파악할 수 있다:

만약 가상 주소에 값을 쓰게 되면, 이는 곧 물리 페이지에 값을 쓰게 되는 것이다.

반면, Memory-Mapped File로 매핑된 가상 주소에 값을 쓰려고 하면
커널은 해당 쓰기를

  • 파일에 반영할지,
  • 프로세스만의 복사본으로 분리할지 (Copy-on-Write (CoW))

결정해야 한다.