LRUキャッシュ淘汰アルゴリズム(チェーンテーブル)
1521 ワード
LRU(Least recently used)は最近、ポリシーアルゴリズムを最も少なく使用しています.
データの履歴アクセス記録(時間順)に基づいてデータを淘汰する.理念:1つのデータが最近アクセスされていない場合、将来アクセスされる可能性も小さく、キャッシュスペースがいっぱいになったとき、新しいキャッシュデータが入ってきたら、最も早いデータを削除する.
1.空のキャッシュチェーンテーブルの長さが5で、E=>D=>C=>B=>Aの順に入る.ABCDEの5つのノードのいずれかをキャッシュチェーンテーブルに追加する必要がある場合は、チェーンテーブルにこの値があるかどうかを確認し、存在する場合はノードを削除し、テーブルヘッダに再追加します.B => E => D => C => A 3.チェーンテーブルに新しいデータを挿入し、まず元のデータを遍歴し、存在するかどうか、存在しないかどうかは最後のノードを削除し、最新のノードをチェーンテーブルのヘッダーに置く.A => E => D => C => B
データの履歴アクセス記録(時間順)に基づいてデータを淘汰する.理念:1つのデータが最近アクセスされていない場合、将来アクセスされる可能性も小さく、キャッシュスペースがいっぱいになったとき、新しいキャッシュデータが入ってきたら、最も早いデータを削除する.
1.空のキャッシュチェーンテーブルの長さが5で、E=>D=>C=>B=>Aの順に入る.ABCDEの5つのノードのいずれかをキャッシュチェーンテーブルに追加する必要がある場合は、チェーンテーブルにこの値があるかどうかを確認し、存在する場合はノードを削除し、テーブルヘッダに再追加します.B => E => D => C => A 3.チェーンテーブルに新しいデータを挿入し、まず元のデータを遍歴し、存在するかどうか、存在しないかどうかは最後のノードを削除し、最新のノードをチェーンテーブルのヘッダーに置く.A => E => D => C => B
public static void LRU()
{
// 3
LinkedList l = new LinkedList();
l.Insert(1);
l.Insert(2);
l.Insert(3);
bool isExist = false;
Node newNode = new Node(4);
Node temp = l.Head;
int i = 1;
if (newNode.Data != temp.Data)
{
while (temp.Next != null)
{
i++;
temp = temp.Next;
if (temp.Data == newNode.Data)//
{
l.Delete(i);
l.Insert(newNode.Data,1);//
break;
}
}
if (!isExist)
{
l.Delete(i);//i =
l.Insert(newNode.Data, 1);//
}
}
}