Как файлы сопоставляются для обработки адресного пространства?

Как можно файлы карты памяти обрабатывать адресное пространство? Как правило, файлы хранятся в устройствах вторичной памяти, таких как NAND, SD-карта и т. Д. (Встроенная среда), которая не предоставляет байтовый доступ по байтам? Мне нужен конвейер, как файл обновляется во вторичном хранилище, когда мы обновляем память, которая сопоставляется с файлом? А также почему mmap быстрее по сравнению с системным вызовом write () или вызовом библиотеки fwrite ()?

linux,fwrite,mmap,

1

Ответов: 1


0 принят

Все, что вы на карте, потенциально копируются во внутренний баран. Поэтому, если вы получаете доступ к некоторому адресу вашего prog-файла с SD-карты или что-то еще, копия данных загружается во внутренний ram. Насколько большой диапазон действительно, известен только os. Даже если вы зарезервируете место для полного файла, при необходимости будет прочитана только небольшая часть. Если процессор имеет mmu, его можно просто реализовать с ошибками страницы, что приводит к перезагрузке.

Доступ выполняется только быстрее, если вы не храните непосредственно основное физическое устройство. Таким образом, изменения будут выполняться только в ram, что быстро и будет написано позже на более медленные устройства, такие как серийная вспышка или что-то еще.

Синхронизация измененного виртуального виртуального барабана с базовым файлом может быть выполнена с помощью msync http://man7.org/linux/man-pages/man2/msync.2.html

Если вам нужна какая-то базовая информация о том, как (виртуальный) ram адресуется и как mmap сопоставляет виртуальный барабан, вы можете прочитать это: https://www.xml.com/ldd/chapter/book/ch13.html

Linux, FWRITE, ММАП,
Похожие вопросы
Яндекс.Метрика