作業系統淘汰演算法

  作業系統中的記憶體淘汰演算法主要有三種。下面由小編為大家整理了的相關知識,希望對大家有幫助!

  詳解

  1,LRU***Least Recently Used,最少最近使用演算法***

  計時法:給頁表中的每一頁增加一個域,專門用來存放計時標誌,用來記錄該頁面自上次被訪問以來所經歷的時間。頁面每被訪問一次,計時清0。要裝入新頁時,從記憶體的頁面中選出時間最長的一頁,調出,同時把各頁的計時標誌全部清0,重新開始計時。 計時法可以稍作改變,成為計數法:頁面被訪問,計數標誌清0,其餘所有記憶體頁面計數器加1;要裝入新頁時,選出計數最大的一頁調出,同時所有計數器清0。

  連結串列法:作業系統為每個程序維護一條連結串列,連結串列的每個結點記錄一張頁面的地址。呼叫一次頁面,則把該頁面的結點從鏈中取出,放到鏈尾;要裝入新頁,則把鏈頭的頁面調出,同時生成調入頁面的結點,放到鏈尾。連結串列法可看作簡單計時/計數法的改良,維護一個連結串列,自然要比維護所有頁面標誌要簡單和輕鬆。可是,這並沒有在數量級上改變演算法的時間複雜度,每呼叫一個頁面,都要在連結串列中搜尋對應結點並放至鏈尾的工作量並不算小。

  2,FIFO***先進先出演算法***

  顧名思義,最先被置換進記憶體的頁面最先出來,公正公平,大家都別搶,但是不一定合理,能者要多勞啊。

  最先進去的頁面,比如一些初始化性質的頁面,通常在整個程式執行期間都是需要,被置換出去非常不合理。

  3,NRU***Not Recently Used,最近未使用演算法,又稱CLK演算法***

  a. 給每一幀關聯一個附加位,稱為使用位

  b. 當某一頁首次裝入主存時,該幀的使用位設定為1

  c. 當該頁隨後再被訪問到時,它的使用位也被置為1

  d. 對於頁替換演算法,用於替換的候選幀集合看做一個迴圈緩衝區,並且有一個指標與之相關聯

  e. 當某一頁被替換時,該指標被設定成指向緩衝區中的下一幀

  f. 當需要替換一頁時,作業系統掃描緩衝區,以查詢使用位被置為0的一幀。每當遇到一個使用位為1的幀時,作業系統就將該位重新置為0

  g. 如果在這個過程開始時,緩衝區中所有幀的使用位均為0,則選擇遇到的第一個幀替換

  h. 如果所有幀的使用位均為1,則指標在緩衝區中完整地迴圈一週,把所有使用位都置為0,並且停留在最初的位置上,替換該幀中的頁