Інтелектуальне випереджувальне читання - це пристрій Windows (гл
Зчитування наступного блоку файлу, якого відбувається послідовне звернення, дає очевидні переваги. Щоб розповсюдити ці переваги і на випадки довільного (прямого) доступу до даних (у напрямку вперед або назад), диспетчер кешу запам'ятовує останні два запити на читання у закритій карті кешу, зіставленої з описувачем файлу, до якого звертається програма. Цей метод називається асинхронним випереджаючим читанням із хронологією. Диспетчер кешу намагається виявити якусь закономірність в операціях прямого читання програми, що викликає. Наприклад, якщо програма, що викликає, зчитує спочатку сторінку 4000, потім 3000, диспетчер кешу передбачає, що наступного разу буде затребувана сторінка 2000, і заздалегідь зчитує її в кеш.
ПРИМІТКА Хоча передбачення можливе лише на основі послідовності трьох операцій читання мінімум, в закритій карті кеша запам'ятовуються тільки дві з них.
Щоб підвищити ефективність випереджального читання, Windows-функція CreateFile підтримує прапор послідовного доступу до файлу, FILE_FLAG_SEQUENTIAL_SCAN. Якщо цей прапор заданий, диспетчер кешу не веде хронологію читання для передбачень, виконуючи натомість послідовне випереджальне читання. Але в міру зчитування файлу в робочий набір кеша диспетчер кеша видаляє проекції неактивних уявлень файлу і командує диспетчеру пам'яті перемістити сторінки, що належали віддаленим проекціям, на початок списку сторінок, що простоюють або модифіковані (якщо сторінки змінені), щоб згодом їх можна було швидко використовувати повторно. Він також заздалегідь зчитує дворазовий обсяг даних (наприклад, 128 Кб замість 64 Кб). У міру того, як викликаючий потік продовжує зчитувати дані, диспетчер кешу зчитує додаткові блоки даних,завжди випереджаючи викликаючий потік на один блок, що дорівнює поточному запитаному.
В цьому випадку випереджаюче читання виконується диспетчером кешу асинхронно, так як це робиться в контексті окремого потоку, що виконується паралельно з потоком, що викликає. Коли диспетчер кеша викликається для видачі кешованих даних, він спочатку звертається до запитаної віртуальної сторінки, щоб задовольнити запит, а потім ставить у чергу системного робочого потоку ще один запит на введення-виведення для вибірки додаткової порції даних. Далі робочий потік виконується у фоновому режимі і зчитує додаткові дані, випереджаючи наступний запит потоку, що викликає. Заздалегідь лічені сторінки завантажуються в пам'ять паралельно виконанню програми користувача, так що на момент видачі її потоком чергового запиту ці дані вже знаходяться в пам'яті.