본문/내용
1. 개념 정리
MMAP(Memory Map)는 리눅스와 UNIX 계열 시스템에서 메모리 맵 I/O를 통해 파일이나 장치의 내용을 프로세스의 가상 메모리 공간에 매핑하는 기능이다. 이는 파일을 직접 읽고 쓰는 방식의 전통적인 I/O 방식보다 훨씬 효율적이며, 여러가지 장점을 제공한다. MMAP의 기본 아이디어는 파일의 내용을 가상 메모리에 페이지 단위로 맵핑하여, 프로세스가 파일의 내용을 마치 메모리의 변수처럼 다룰 수 있도록 하는 것이다. MMAP는 주로 파일 입출력에 사용되지만, 익명 메모리 영역을 생성하거나, 여러 프로세스 간에 메모리를 공유하는 데에도 활용된다. 특히, 대용량의 데이터 파일을 다룰 때, MMAP는 메모리에 파일을 직접 맵핑하여 필요한 페이지가 메모리에 로드될 때만 실제 디스크에서 읽어오는 방식으로 작동하기 때문에, 전체 파일을 메모리에 읽어오는 것보다 메모리 사용량을 줄일 수 있다. MMAP의 사용 방식은 상당히 간단하다. 우선, mmap 함수 호출을 통해 원하는 파일이나 메모리 영역을 매핑한다. 이 함수는 매핑할 파일 디스크립터, 매핑할 크기, 접근 권한, 매핑 옵션 등을 인자로 받는다. 이후 매핑이 완료되면, 파일의 데이터를 마치 배열…