подкачка файла при вставке 1 байта в начале файла - PullRequest
0 голосов
/ 08 сентября 2011

что происходит, когда я открываю файл размером 100 МБ и вставляю 1 байт где-то в начале, а затем сохраняю его?ядро Linux буквально сдвигает все обратно на 1 байт (таким образом изменяя каждую страницу), а затем заново сохраняет каждый байт после вставки?это кажется крайне неэффективным!

или я полагаю, ядро ​​может вставить 1-байтовую страницу только для удержания этой вставки, но я никогда не слышал об этом.я думал, что все страницы должны быть стандартного размера (например, 4 КБ или 4 МБ, но не 1 байт)

Я проверил множество Linux / OS BKS (Bovet / Cesati, Kerrisk, Tanenbaum)немного поигрался с кодом ядра и, похоже, не могу этого понять.

1 Ответ

0 голосов
/ 11 сентября 2011

Ответ таков: операционные системы не обычно позволяют вставлять произвольное количество байтов в произвольной позиции в файле. Ваш анализ показывает, почему - это просто неэффективная операция с типичной реализацией файла.

Обычно вы можете добавлять или удалять байты только в конце файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...