Интернет магазин китайских планшетных компьютеров



Компьютеры - Кэш - Кэширование, выполняемое операционной системой

22 января 2011


Оглавление:
1. Кэш
2. Функционирование
3. Кэш центрального процессора
4. Кэширование внешних накопителей
5. Кэширование, выполняемое операционной системой
6. Программное кэширование



Кэш оперативной памяти состоит из следующих элементов:

  1. набор страниц оперативной памяти, разделённых на буферы, равные по длине блоку данных соответствующего устройства внешней памяти;
  2. набор заголовков буферов, описывающих состояние соответствующего буфера;
  3. хеш-таблицы, содержащей соответствие номера блока заголовку;
  4. списки свободных буферов.

Алгоритм работы кэша с отложенной записью

Изначально все заголовки буферов помещаются в список свободных буферов. Если процесс намеревается прочитать или модифицировать блок, то он выполняет следующий алгоритм:

  1. пытается найти в хеш-таблице заголовок буфера с заданным номером;
  2. в случае, если полученный буфер занят, ждёт его освобождения;
  3. в случае, если буфер не найден в хеш-таблице, берёт первый буфер из хвоста списка свободных;
  4. в случае, если список свободных буферов пуст, то выполняется алгоритм вытеснения;
  5. в случае, если полученный буфер помечен как «грязный», выполняет асинхронную запись содержимого буфера во внешнюю память.
  6. удаляет буфер из хеш-таблицы, если он был помещён в неё;
  7. помещает буфер в хеш-таблицу с новым номером.

Процесс читает данные в полученный буфер и освобождает его. В случае модификации процесс перед освобождением помечает буфер как «грязный». При освобождении буфер помещается в голову списка свободных буферов.

Таким образом:

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

Алгоритм вытеснения

Если список свободных буферов пуст, то выполняется алгоритм вытеснения буфера. Алгоритм вытеснения существенно влияет на производительность кэша. Существуют следующие алгоритмы:

  1. LRU — вытесняется буфер, неиспользованный дольше всех;
  2. MRU — вытесняется последний использованный буфер;
  3. LFU  — вытесняется буфер, использованный реже всех;
  4. ARC  — алгоритм вытеснения, комбинирующий LRU и LFU, запатентованный IBM.

Применение того или иного алгоритма зависит от стратегии кэширования данных. LRU наиболее эффективен, если данные гарантированно будут повторно использованы в ближайшее время. MRU наиболее эффективен, если данные гарантированно не будут повторно использованы в ближайшее время. В случае, если приложение явно указывает стратегию кэширования для некоторого набора данных, то кэш будет функционировать наиболее эффективно.



Просмотров: 7178


<<< Контроллер прерываний
Кэш процессора >>>