Memory Mapped File은 File에 해당하는 공간을 Process address space에 mapping 시키는 것을 말합니다. 여러 프로세스에 같은 file을 mapping 시켰을 경우 Inter-process communication이 가능합니다.
정상적인 경우 mapping된 메모리 공간의 시작 주소가 반환되고 error시 MAP_FAILED가 반환됩니다.
prot과 flags에는 다음과 같은 것들이 올 수 있습니다.
아래의 그림은 file을 len만큼만 unmap 하는 것을 보여줍니다.
정상적인 경우 0이 반환되고 error시 -1이 반환됩니다.
addr: 시작 주소
flags: control msync() operation
정상적인 경우 0을 반환하고 error시 -1을 반환합니다.
s1: 복사하여 저장될 주소
s2: 복사될 주소
n: 길이
s1이 반환됩니다.
간단한 예제를 들어보겠습니다.
위는 src을 통해서는 read 하고, dst을 통해서는 write 할 목적으로 같은 크기만큼 메모리 공간을 mapping 하고 있습니다.
그리고 memcpy를 통해 src에 있는 메모리를 dst에도 복사하였습니다. 이렇게 되면 src의 내용과 dst의 내용은 같아져서 똑같은 내용을 가진 메모리 공간을 가지게 됩니다.
끝으로 munmap을 통해 mapping된 메모리 공간을 해제합니다.