Я пытаюсь выяснить, готов ли я решить проблему, которая заинтересовала меня. Чтобы решить проблему, мне нужно будет создать двоичный файл из более чем одного TB. Если мне очень повезет, это может быть уменьшено до 300 ГБ, что будет минимальным объемом памяти, необходимой для решения моей проблемы. Очевидно, что данные не могут храниться в ОЗУ, поэтому я должен выяснить, как и когда писать на диск (и читать с).
Я думаю, что обычные способы записи на диск не могут быть и речи. fstream
потерпит неудачу, когда попытается загрузить файл в память. Кто-нибудь знает о (предпочтительно переносимых) методах, которые могут читать и записывать непосредственно на диск без предварительного кэширования (частей) данных? Мне также пришло в голову, что мне может даже не понадобиться файловая система для этого. Не могу ли я просто перевернуть биты на диск напрямую (без использования emacs ' Mx butterfly
)?
Я думаю, что файл с отображением памяти (в 64-битной системе) именно то, что вам нужно.
Вы просто сопоставляете весь файл в память и манипулируете им, как обычную структуру данных; операционная система заботится о загрузке и выгрузке данных в/из памяти.
Это не стандарт C++, но есть реализация Boost, которая должна работать на основных платформах.