Кеш на страницата за споделена памет

В следната връзка в рамките на 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"?
  • Частта, която остава неясна за мен, е какво се случва "след като" един от процесите пише в споделена страница и как тази "актуализация" стига до кеша на страницата и диска, така че други процеси, които споделят същия файл, вижте тази промяна.

Ще бъде чудесно, ако някой може да хвърли малко светлина.

Благодаря, VIjay


person TheLoneJoker    schedule 16.01.2011    source източник


Отговори (1)


В сценария, описан в свързаната статия, render и render3d имат частни картирани в паметта копия на един файл. Доколкото процесите могат да кажат, операционната система е разпределила куп страници в адресното пространство на всеки процес и просто е копирала съдържанието на файла там. Ако те променят тези страници, нищо не се случва. Никакви промени не се връщат към файла. Няма промени между render и render3d. Ето какво означава да имате частно картографиране.

Разбира се, предоставянето на пълно копие на файла на всеки процес е наистина бавно, така че операционната система използва трик с виртуална памет. Докато даден процес не запише във файла, той може да използва споделено копие (споделено с други процеси и кеша на страницата, наричан още буферен кеш). Личното копие се случва само когато процесът първо се опита да промени страницата.

person Karmastan    schedule 16.01.2011