Алгоритмы замещения

advertisement
Алгоритмы замещения
Кривых Алексей krivykhalexey@mail.ru
Зольников Павел pasha.zolnikov@gmail.com
Самунь Виктор victor.samun@gmail.com
IT Summer SPb 2012
13.07.2012
Оптимальный алгоритм (алгоритм
Белади)
• Вытеснять те сегменты, которые не
понадобятся дольше всего
• Идеальный оракул
LRU
• Least Recently Used
• Вытесняем сегмент, который не
использовался дольше всего
• rLRU  ropt  aB, где rLRU - количество страниц,
замещенных LRU, B – размер кэша,
a-константа
• Недостаток: Использует слишком мало
информации
Random Replacement
• Замещает случайно выбранный сегмент
• Был реализован в ARM процессорах
• Главное преимущество - простота
LFU
• LFU – Feast Frequently Used
• Вытесняем элемент, к которым обращались
меньше всего раз
• Недостаток: Имеет тенденцию хранить
страницы, которые были популярны в
прошлом.
LRU/K
• LRU/1 = LRU
• Преимущества
– Использует больше информации, чем LRU, при
K >1
– Основан на понятии «старение»,
учитывающем, только последние K обращений
• Недостаток:
– Cложность
– Необходим вспомогательный алгоритм для
неопределенного случая
Backward K-distance
• Имеем к моменту времени t строку
запросов r1 , r2 ,..., rt
• bt ( p, K )  x, если rt  x  p, и было в
точности K-1 значений i, таких, что t  x  i  t
где ri  p
• bt ( p, K )  , если p не появлялось K раз в
строке r1 , r2 ,..., rt
LRU/K замещение
• В качестве жертвы выбираем сегмент, для
которого bt ( p, K ) максимальное
• Неопределенная ситуация возникает, если
сегментов с bt ( p, K )   больше одного, в
этом случае необходимо использовать
вспомогательный алгоритм
2Q
• 2Q – 2 Queue
• Как и LRU/K имеет тенденцию оставлять
только популярные страницы
• Как утверждает Theodore Jonson из
университета Флорида, работает также
хорошо, как и LRU/K
• Ain(25% ) – FIFO, Am-LRU, Aout(50%)-FIFO
2Q
• If (X ϶ Am) then
pushToHead(X, Am)
else if(X ϶ Aout) then
pushToHead (X, Am)
else if (X ϶Ain)
else
pushToHead(X, Ain)
pushToHead(V, Aout)
end if
• Где X – запрашиваемая страница, V - жертва
Download