Я пытаюсь понять ММАП и получил следующую ссылку, чтобы прочитать:
http://duartes.org/gustavo/blog/post/page-cache-the-affair-between-memory-and-filesПонимание отображения файла
Я понимаю, текст в целом, и это имеет смысл для меня. Но в конце есть абзац, который я действительно не понимаю, или это не подходит для моего понимания.
Табличные записи таблицы только для чтения не означают, что отображение читается только, это всего лишь трюк с ядром для обмена физической памятью до последнего момента. Вы можете видеть, как «частный» является немного неправильным, пока вы не вспомните, что оно относится только к обновлениям. Следствием этого проекта является то, что виртуальная страница, которая отображает файл в частном порядке, видит изменения, внесенные в файл другими программами , пока страница была прочитана только с. Как только копирование происходит, изменения других людей больше не видны. Это поведение не гарантируется ядром, но это то, что вы получаете в x86 и имеет смысл с точки зрения API. Напротив, общее сопоставление просто отображается на кеш страницы, и все. Обновления видны другим процессам и заканчиваются на диске. Наконец, если приведенное выше отображение было доступно только для чтения, ошибки страницы вызывали бы ошибку сегментации вместо копирования при записи.
Следующая строка не подходит для меня. Я не вижу смысла.
Следствием этой конструкции является то, что виртуальная страница, которая отображает файл в частном порядке видит изменения, сделанные в файл с помощью других программ до тех пор, как страница только считаны из.
Это частный. Таким образом, он не может видеть изменения другими!
И, наконец, если отображаемое выше изображение было только для чтения, ошибки страницы вызывали бы ошибку сегментации вместо копирования при записи.
Не знаю, что означает автор. Является ли их флаг «MAP_READ_ONLY»? До тех пор, пока не произойдет запись, каждый указатель с виртуальных страниц программ на страницы-таблицы-записи в кеше страницы составляет только для чтения.
Помогите мне понять эти две строки? Благодаря
Update
Кажется, он получил его, с некоторой помощью.
Последствием этого проекта является то, что виртуальная страница, которая отображает файл в частном порядке, видит изменения, внесенные в файл другими программами, если только страница была прочитана.
Хотя отображение является приватным, виртуальная страница действительно может видеть изменения другими, пока она не изменяет страницу. Модификация становится является частной и виден только на виртуальной странице программы записи.
И, наконец, если отображаемое выше изображение было только для чтения, ошибки страницы вызывали бы ошибку сегментации вместо копирования при записи.
Мне сказали, что сами страницы также могут иметь разрешения (чтение/запись/выполнение).
Скажите, если я ошибаюсь.
Спасибо! Понял. – Peter