Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Data Structures and Algorithms in C++ 2e (На ру...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.37 Mб
Скачать

676 Глава 14. Управление памятью и b-деревья

Рисунок 14.4: Блоки во внешней памяти.

Когда осуществлено с кэшированием и блокированием, виртуальная память часто позволяет нам чувствовать память вторичного уровня, как являющуюся быстрее, чем это действительно. Есть все еще проблема, как бы то ни было. Память основного уровня намного меньше, чем вторичный - память уровня. Кроме того, потому что блокирование использования памяти систем, любая программа вещества, вероятно, достигнет точки, где это запрашивает данные от памяти вторичного уровня, но основная память уже полна блоков. Чтобы выполнить запрос и поддержать наше использование кэширования и блокирования, мы должны удалить некоторый блок от основной памяти, чтобы создать место для нового блока от вторичной памяти в этом случае. Решая, как сделать, это выселение поднимает много интересных структур данных и вопросов проектирования алгоритма.

Кэширование алгоритмов

Есть несколько веб-приложений, которые должны иметь дело с пересматриванием информации пред -

sented в веб-страницах. Они пересматривают, как, показывали, показали окрестности, относятся - ence, и вовремя и в космосе. Чтобы эксплуатировать эти окрестности ссылки, часто выгодно сохранить копии веб-страниц в кэш-памяти, таким образом, эти страницы могут быть быстро восстановлены, когда требуется снова. В частности предположите, что у нас есть кэш-память, у которой есть m «места», которые могут содержать веб-страницы. Мы предполагаем, что веб-страница может быть помещена в любое место тайника. Это известно как полностью ассоциативный тайник.

Поскольку браузер выполняет, он просит различные веб-страницы. Каждый раз, когда браузер просит такую веб-страницу l, браузер определяет (использование быстрого теста), если l неизменен и в настоящее время содержавшийся в тайнике. Если l содержится в тайнике, то браузер удовлетворяет запрос, используя припрятавшую про запас копию. Если l не находится в тайнике, однако, страницу для l требуют по Интернету и передают в тайник. Если одно из m мест в тайнике доступно, то браузер назначает l на одно из пустых мест. Но если все m клетки тайника заняты, то компьютер должен определить, который ранее рассмотрел веб-страницу, чтобы выселить перед введением l, чтобы занять его место. Есть, конечно, много различной политики, которая может использоваться, чтобы определить страницу, чтобы выселить.

14.2. Внешняя память и кэширование 677

Алгоритмы замены страницы

Часть более известной политики замены страницы включает следующий (см. рисунок 14.5):

Метод «первым пришел - первым вышел» (FIFO): Выселите страницу, которая была в тайнике

самый длинный, то есть, страница, которая была передана тайнику дальше всего в прошлом.

Наименее недавно используемый (LRU): Выселите страницу, чья в последний раз просят, произошел мех -

thest в прошлом.

Кроме того, мы можем рассмотреть простую и чисто случайную стратегию:

Случайный: Выберите страницу наугад, чтобы выселить из тайника.

Рисунок 14.5: Случайное, FIFO и политика замены страницы LRU.

Случайная стратегия - одна из самой легкой политики осуществить, потому что это только требует генератора случайных чисел или псевдогенератора случайных чисел. Верхним, вовлеченным в проведение этой политики, является O (1), дополнительный объем работы за страницу заменяет - ment. Кроме того, там не дополнительно наверху для каждого запроса страницы, кроме определить, является ли запрос страницы в тайнике или нет. Однако, эта политика не предпринимает попытки использовать в своих интересах любые временные или пространственные окрестности, которые показывает просмотр пользователя.

678