Интелигентно четене напред - устройство с Windows (гл.

Четенето на следващия блок от файла, който се осъществява последователно, има очевидни предимства. За да разшири тези предимства до произволен (директен) достъп до данни (напред или назад), мениджърът на кеша съхранява последните две заявки за четене в лична карта на кеша, свързана с манипулатора на файла, до който програмата има достъп. Тази техника се нарича асинхронно четене напред с история. Мениджърът на кеша се опитва да открие някакъв модел в операциите за директно четене на повикващия. Например, ако повикващият прочете първо страница 4000, след това страница 3000, мениджърът на кеша приема, че следващата ще бъде поискана страница 2000 и я прочита в кеша преди време.

ЗАБЕЛЕЖКА Въпреки че предвиждането е възможно само въз основа на последователност от поне три прочитания, само две от тях се съхраняват в затворена кеш карта.

За допълнително подобряване на ефективността на предварителното четене, функцията CreateFile на Windows поддържа флага за последователен достъп до файлове, FILE_FLAG_SEQUENTIAL_SCAN. Ако този флаг е зададен, мениджърът на кеша не съхранява хронология на четене за прогнози, вместо това извършва последователно четене напред. Но докато файлът се чете в работния набор на кеша, мениджърът на кеша премахва проекциите на неактивните представяния на файла и инструктира мениджъра на паметта да премести страниците, които принадлежат на премахнатите проекции, в горната част на списъка с неактивни или модифицирани страници (ако страниците са променени), така че да могат бързо да бъдат използвани повторно по-късно. Той също така предварително чете два пъти повече данни (например 128 KB вместо 64 KB). Докато извикващата нишка продължава да чете данни, мениджърът на кеша чете допълнителни блокове от данни,винаги пред извикващата нишка с един блок, равен на текущо заявения.

В този случай предварителното четене се извършва асинхронно от мениджъра на кеша, тъй като се извършва в контекста на отделна нишка, работеща паралелно с извикващата нишка. Когато мениджърът на кеша бъде извикан да обслужва кеширани данни, той първо осъществява достъп до исканата виртуална страница, за да удовлетвори заявката, и след това поставя на опашка друга I/O заявка към системната работна нишка, за да извлече повече данни. След това работната нишка работи във фонов режим и чете допълнителни данни, изпреварвайки следващата заявка на извикващата нишка. Предварително прочетените страници се зареждат в паметта успоредно с изпълнението на потребителската програма, така че в момента, в който се издава от следващата нишка на заявка, тези данни вече са в паметта.