Файл сопоставления памяти v / s Нормальный файл IO - PullRequest
0 голосов
/ 06 января 2012

Когда мы говорим о файлах с отображением в памяти, обычно упоминается, что часть файла может быть сопоставлена ​​с адресным пространством процесса, и мы можем осуществлять произвольный доступ к нему с помощью указателей и т. Д. Я также читал во многих местах, что у меня должно быть достаточно памяти для размещения всего файла в памяти. Это два утверждения, которые меня немного смущают, потому что, если нам понадобится достаточно памяти для полного файла, в чем будет преимущество? Я знаю о преимуществах, связанных с дополнительным копированием содержимого ядра или быстрым временем, поскольку данные не будут считываться в виде блоков или байтов, как в случае потоков и т. Д.

1 Ответ

1 голос
/ 06 января 2012

Вам не нужно иметь память для всего файла - mmap загружается медленно, поэтому преимущество заключается в том, что вы можете изменять большой файл, не используя много оперативной памяти.Еще один полезный трюк - если вам придется перебирать его в обратном направлении, не разбивая его на части.

...