2012-02-11 8 views
2

대용량 파일의 일부를 무작위로보고 싶습니다. 내가 파일의 다른 부분을 필요로한다면 mmap을 사용하여 필요한 부분을 연다. 내가 첫 번째 메모리 매핑 된 영역을 닫고 mmap을 다시 닫아야합니까? 아니면 동시에 두 개의 메모리 매핑 된 영역을 열 수 있습니까?파일에 대해 mmap을 두 번 호출합니다.

RAM보다 클 수 있기 때문에 모든 파일을 매핑하고 싶지 않으며 프로그램에서 동시에 여러 파일을 열어 놓을 것입니다.

답변

5

엠펙은 RAM을 소비하지 않습니다. 사용 가능한 주소 공간 인보다 큰 경우가 아니면 전체 파일을 매핑 할 수 있고 매핑해야합니다. 64 비트 컴퓨터에서는 그럴 가능성이 희박합니다. 32 비트에서 불가능하지 않습니다.

어쨌든 하나의 파일마다 원하는 수만큼 매핑을 만들 수 있습니다.

+0

20-30 개의 파일을 열 수 있기를 원합니다. 32 비트 시스템에서 동시에 2 개의 4GB 파일을 열면 주소 공간이 부족합니다.? – Berk

+0

32 비트 시스템에서는 4GB 파일 하나를 모두 매핑 할 수 없습니다. 두 번째 단락과 같이 조각의 매핑을 많이 만드십시오. – bmargulies

관련 문제