2012-02-11 3 views
2

Я хочу получить детали большого файла случайным образом. После открытия части, которая мне нужна с mmap, если мне нужна другая часть файла. Должен ли я снова закрыть первую область с отображением памяти и mmap или я могу открыть одновременно область с отображением памяти?Вызов mmap дважды для файла

Я не хочу отображать весь файл, так как он может быть больше, чем ОЗУ, и я буду использовать одновременно несколько файлов в моей программе.

ответ

5

Mmapping не потребляет RAM. Вы можете и должны отображать весь файл, если он больше, чем доступное адресное пространство . На 64-битном компьютере это маловероятно. На 32-битных, это не невозможно.

В любом случае вы можете сделать столько отображений, сколько хотите каждого отдельного файла.

+0

Я хочу, чтобы иметь возможность открывать 20-30 количество файлов. В 32-битной системе. Если я открою 2 4 ГБ-файла одновременно, будет ли я отсутствовать из адресного пространства.? – Berk

+0

В 32-битной системе не может быть отображен весь один файл размером 4 ГБ. Поэтому сделайте много небольших отображений частей, как в моем втором абзаце. – bmargulies

Смежные вопросы