0

みんな。

私は、ClockPro キャッシュ置換アルゴリズム (Clock キャッシュ置換の改良版) に関する記事をたくさん読みました。簡単にするために、最初はClockを実装しました。今、Java Clock-Pro に 2 つの針 (実際のアルゴリズムでは 3 つの針ではなく、ホットとコールド) を実装したいと考えています。私はいくつかの説明を見つけました:

The ClockPro Algorithm

On Start():
    cold_block =  first block  
    hot_block = first block

On Memory Lookup():
    curr_block = NULL
    If block is in cache:
        Set clock bit
        Return block to CPU
    Else:
        While curr_block == NULL:
            If cold_block.clockbit == 0:
                curr_block = cold_block
            Else if cold_block.test == 1 :
                Turn cold hand block hot
                Unset the clockbit
                Run Hot Hand Algorithm
            Else:
                cold_block.clockbit = 0
            cold_block = cold_block.next

    If curr_block is dirty : write
    Find accessed block in memory
    Return fetched block to the CPU
    Replace curr_block with fetched one

Hot Hand Algorithm() :
    curr_block = NULL
    While curr_block == NULL:
        If hot_block is cold :
            hot_block.text = 0
        Else if hot_block.clockbit == 0 :
            Turn the block cold
        Else :
            hot_block.clockbit = 0
        hot_block = hot_block.next

誰かが試した場合は、いくつかの質問に答えてください。

試用期間は?いつ開始し、使用できるタイプは何ですか。オブジェクトがテスト期間にあるかどうか、またはカウンターであるかどうかを知ることができるのはほんの少しですか? ある瞬間、両手で 1 つのブロックを指すことができますか?

誰かができる場合は、単純な例でアルゴリズムのそのような動作をモデル化するのを手伝ってください..ありがとう。

4

1 に答える 1