LISTORY

[윈도우즈 시스템 프로그래밍] MMF(Memory Mapped File) 본문

IT/윈도우 프로그래밍

[윈도우즈 시스템 프로그래밍] MMF(Memory Mapped File)

LiStoryTeller 2018. 11. 11. 01:49


뇌를 자극하는 윈도우즈 시스템 프로그래밍 책 관련 유투브 강의 정리이다.


오늘 정리할 내용은 MMF(Memory Mapped File) 이다.


YouTube 주소 : MMF(Memory Mapped File)



MMF(Memory Mapped File)



⊙ MMF 개념



메모리를 파일에 매핑시키겠다는 개념이다.


파일의 일부 메모리 공간을 프로세스의 가상메모리에 연결시킨다.


연결이 일단 되면 프로세스의 가상메모리에 내용을 쓰면 그 위치만큼 이동하여 파일에 데이터를 대신 써준다.


이점은 일단 성능 이슈도 있지만, 프로그램의 편리성에 이슈를 둘 수 있다.


만일 데이터를 sorting 해야 한다고 치면 파일에 있는 데이터를 메인메모리로 불러들여 sorting하고 다시 저장해야한다. 


하지만 이 기능을 사용한다면, 데이터가 파일에 매핑이 됐으므로 그 자리에서 sorting만 하면된다.



⊙ MMF 장점



데이터 매핑을 시켜버리면 데이터 write시, 알아서 파일에 저장된다.


파일에 매번 데이터를 쓸때마다 반영해야 할 필요가 있을까?


메모리에 데이터를 write, read 하므로 실질적인 최신의 데이터는 메모리가 가지고 있다.


즉, 데이터가 변경되었을 때, 파일에 정보를 반영할 필요가 없다는 것이다.


주기적으로, 또는 특별한 상황이 됐을 경우에만 파일에 반영해도 된다.



⊙ MMF 구현 과정


1단계 : 파일의 생성

HANDLE hFile = CreateFile(...);


2단계 : 파일 연결 오브젝트 생성

HANDLE hMapFile= CreateFileMapping(hFile, ...);


3단계 : 가상 메모리에 파일 연결

TCHAR * pWrite = MapViewOfFile(hMapFile, ...);









Comments