728x90

MMF(Memory Mapped File)

- 메모리를 파일에 매핑시킨다는 개념

- 파일의 일부 메모리 공간을 가상 메모리에 연결시키면 프로세스의 가상 메모리에 데이터를 쓰면 매핑된 파일의 공간에 데이터를 써줌

- 프로세스는 메모리에 데이터를 Write, Read하기 때문에 최신의 데이터는 메모리가 가지고 있음

- 파일에는 매번 데이터를 반영해줄 필요 없이 주기적으로나 어떤 상황이 있을때 반영해주면 됨

- MMF 구현 과정

    -> 파일 생성

    -> 파일 연결 오브젝트 생성 : 파일 정보를 담음

    -> 가상 메모리에 파일 연결 : 포인터가 반환되기때문에 배열 접근하듯이 접근하면 됨

HANDLE CreateFileA(
  LPCSTR                lpFileName,
  DWORD                 dwDesiredAccess,
  DWORD                 dwShareMode,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  DWORD                 dwCreationDisposition,
  DWORD                 dwFlagsAndAttributes,
  HANDLE                hTemplateFile
);

HANDLE CreateFileMappingA(
  HANDLE                hFile,
  LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
  DWORD                 flProtect,
  DWORD                 dwMaximumSizeHigh,
  DWORD                 dwMaximumSizeLow,
  LPCSTR                lpName
);

LPVOID MapViewOfFile(
  HANDLE hFileMappingObject,
  DWORD  dwDesiredAccess,
  DWORD  dwFileOffsetHigh,
  DWORD  dwFileOffsetLow,
  SIZE_T dwNumberOfBytesToMap
);
728x90

+ Recent posts