15. archive
필요한 기능
1. 파일 저장
- 기본적으로 바이너리
- 디버깅을 위해 text나 xml로도 지원 (디버깅용)
2. 파일 로딩
- 바이너리
- MMF(Memory Mapped File) : 프로세스의 가상 메모리 주소 공간에 파일을 매핑한 뒤 가상 메모리 주소에 직접 접근.
장점
a. 직접적인 파일 입출력을 수행할 필요가 없다.
파일 내용이 메모리 주소에 사상되므로 파일을 모두 불러온 것처럼 메모리 주소를 이용하여 연산작업을
할 수 있어 코드가 깔끔해지고 유지보수가 편해진다.
b. 버퍼나 파일 처리를 위한 추가적인 자료 구조가 필요없다.
os에서 페이징 기법을 사용하여 파일의 내용을 관리하며 페이지 크기에 따라 적절히 파일의 내용을
읽고 쓸 수 있으며 파일 반영(flush)작업도 수행해 준다.
c. 대용량 자료 처리에 효율적이다.
파일적근시 지연적재를 이용하므로 필요한 부분만 파일에서 불러와 작업할 수 있으며,
작업이 끝난 데이터는 자동으로 파일에 반영된다.
d. 전통적인 파일 입출력 API보다 속도가 빠르다.
api는 시스템 호출을 사용하기 때문에 작업을 수행하는 동안 유저 모드와 커널 모드를 전환하는 데 필요한
인터럽트가 오버헤드로 작용하게 된다. 메모리 맵 파일은 4kib단위로 자료를 미리 불러올 때 발생하는
페이지 부재 외의 모든 작업이 실제 메모리상에서 이루어지므로 대부분 파일 API를 통한 파일처리보다 빠르다.
단점
a. 파일크기(EOF 위치) 변경 불가능.
b.
추가작업
- 비동기 , 스레드, 언렬4를 참고해보자. 이건 먼 미래에 다시 해야지.
Reference Link
- 메모리맵 파일
- 위키, 페이징
-
'작업장 > Mgin 제작' 카테고리의 다른 글
17. svn. (0) | 2017.12.01 |
---|---|
16. 32bit, 64bit (0) | 2017.11.29 |
14. character (0) | 2017.11.27 |
13. max plugin (0) | 2017.11.20 |
12. point, vector, ray, box, matrix, transform (0) | 2017.10.15 |