Сижу пишу логику чтения несколько-гигового бинарного файла поблочно. Поблочно, дабы обращаться к ФС пореже, остальное время выцеплять бинарные структуры из потока.
Потом думаю - есть же mmap всякий. Мне ведь ничего не мешает замапить весь 10-гиговый файл в память, даже если оперативы всего 2 гига, и прочитать его линейно шагая указателем все 10 гигов? Или что-то мешает? Я себе так это представляю: ОС выделяет некую виртуальную последовательность адресов любой длины (виртуальная же), зачитывает только актуальный кусок файла, вытесняя из кеша неиспользуемое. Или с 2 свободными гигами спокойно замапить 10 гигов для чтения не получится?