Мне интересно, есть ли способ вставить пустые страницы в начале большого (multi-GB) файла, который я открыл с помощью mmap ().Очевидно, что было бы возможно добавить страницу или две в конец и переместить все вперед с помощью memcpy (), но это испортило бы каждую страницу и потребовало бы очень долгого времени, когда в конечном итоге было записано на диск.
I 'Я предполагаю, что решение потребует некоторой сложной координации между настраиваемой файловой системой и ручным манипулированием таблицами страниц: добавьте блок в индекс, каким-то образом обновите кэшированные страницы в VMM, чтобы отразить это, затем каким-то образом переверните таблицу страниц, чтобы соответствовать.Это звучит нетривиально, что заставляет меня задуматься, есть ли лучший способ.
Это задумано как довольно глубокий вопрос о работе с памятью и файлами в Linux, хотя я был бы рад услышать о том, как это можно сделать.быть сделано в других системах.Меня не особенно интересуют обходные пути, которые включают в себя повышение эффективности копирования, хотя метод, который требует переназначения, но избегает дискового ввода-вывода, был бы хорошим началом.