Выполнение mmap (1) на каждом вводе / выводе не похоже на правильную вещь - это может привести к путанице в читателе кода и, возможно, к оптимизации ядра, и не даст никаких преимуществ.
Вы можете использовать pread (1) / pwrite (1) или preadv (1) / pwritev (1), если вы хотите быть откровенным о ваших операциях чтения и записи.
Если нет, вы можете отобразить (1) весь файл (нообязательно используйте правильные флаги, вероятно MAP_SHARED
) - Linux все равно не будет пытаться загрузить весь файл в память.