> > Я так полагаю, для обслуживания кэша (страничного файла) нужен
> > отдельный поток,

> Ага, перед записью старинцы вынимаешь её из кэша, модифицируешь, кладёшь 
> обратно.  Отдельный поток бегает по страницам и с учётом загрузки кэша и 
> частоты использования страниц кидает их в файл.

Это типа образно сказано - "вынимается из кэша"?

Наверное, она все таки остается в кэше, но помечается типа "находится
в процессе модификации". Тогда другие потоки, если захотят почитать
эту страницу все таки найдут её в кэше (и будут ждать возврата
завершения модификации), а не будут пытаться загрузить её образ с
диска?

А то так поток "вынул" страницу, "изменил" её, а потом, когда начнет
её обратно ложить в кэш - обнаружит в нем её другой образ.

----
Вообще картинка работы этого потока уже сформировалась.

Архитектурный вопрос такой - запись модифицированных страниц
осуществляется _только_ этим потоком?

То есть если рабочему потоку понадобилось место в кэше, а свободных
(незаблокированных) "чистых" страниц нет - он останавливается и
перпеливо ждет, пока либо
- читатели не освободят "чистую" страницу. Она выкидывается из кэша и
на её место грузят другую
- фоновый писатель страниц не сохранит изменения какой-нибудь страницы
и не поместит её в список "чистых" (далее см. п.1)

... Можно не отвечать. Это я так. Сам с собой разговариваю :)

Коваленко Дмитрий.

Ответить