Кэш страницы для разделяемой памяти - PullRequest
0 голосов
/ 16 января 2011

По следующей ссылке на 4-м изображении сверху:

http://duartes.org/gustavo/blog/post/page-cache-the-affair-between-memory-and-files

  • Изображенный сценарий состоит из двух процессов, «render» и «3drender», совместно использующих файл. Автор расскажет о том, как механизм совместного использования взаимодействует с кешем страниц.
  • Изначально при рендеринге виртуальные страницы отображались в кеш страниц.
  • На шаге 4 «render» выделяется новая собственная анонимная страница, которая будет содержать определенные изменения, которые она захочет внести в «scene.dat # 2».
  • Как только "render" вносит свои изменения, как это изменение отражается в "3drender", который продолжает указывать на фрейм страницы кэша страницы, содержащий "scene.dat # 2"?
  • Кроме того, не должны ли эти изменения, сделанные "render", вернуться обратно в кеш страниц, заменяя старую копию кеша страниц "scene.dat # 2"?
  • Часть, которая мне остается неясной, это то, что происходит "после", когда один из процессов записывает на общую страницу, и как это "обновление" попадает в кэш страницы и на диск, так что другие процессы, которые совместно используют то же самое файл, посмотрите это изменение.

Было бы замечательно, если бы кто-то мог пролить немного света.

Спасибо, Виджей

1 Ответ

1 голос
/ 16 января 2011

В сценарии, описанном в связанной статье, render и render3d имеют частные сопоставленные памяти копии одного файла.Насколько могут судить процессы, ОС выделила кучу страниц в адресном пространстве каждого процесса и просто скопировала туда содержимое файла.Если они изменяют эти страницы, ничего не происходит.Без изменений вернитесь в файл.Между render и render3d не происходит никаких изменений.Вот что значит иметь личное отображение.

Конечно, предоставить каждому процессу полную копию файла очень медленно, поэтому ОС использует трюк с виртуальной памятью.До тех пор, пока процесс не выполнит запись в файл, он может использовать общую копию (совместно используемую другими процессами и кэшем страницы, также называемым буферным кэшем).Личная копия происходит только тогда, когда процесс сначала пытается изменить страницу.

...