頁面置換算法及例題


一、頁面置換算法

不適當的算法可能會導致進程發生“抖動”:即剛被換出的頁很快又要被訪問,需要將他重新調入,此時又需要再選一頁調出。而此剛被調出的頁面很快又被訪問,又需將它調入,如此頻繁地更換頁面,以致一個進程在運行中把大部分時間都花費在頁面置換工作上,我們稱該進程發生了“抖動”。

一個好的頁面置換算法應該具有較低地頁面更換頻率。從理論上講,應將哪些以后不再會訪問地頁面換出,或把那些在較長時間內不會再訪問的頁面調出。目前已有多種置換算法,他們都試圖更接近於理論上的目標。下面介紹幾種常用的置換算法。

二、常用的頁面置換算法

1.最佳(Optimal)置換算法

其所選擇的被淘汰頁面將是以后永不使用的,或者是在最長時間內不再被訪問的頁面,是理想化的算法(因為我們很難預知未來要訪問哪些頁面),可以用來評測其他實際應用算法的好壞。

2.先進先出(FIFO)置換算法

總是淘汰最先進入內存的頁面,即選擇在內存中駐留時間最久的頁面給予淘汰(由於與頁面的使用規律不符,可能是性能最差的算法)。

3.最近最久未使用LRU(Least Recently Used)置換算法

選擇最近最久未使用的頁面予以淘汰。

4.最少使用LFU(Least Frequently Used)置換算法

選擇在最近時期使用最少的頁面作為淘汰頁(當使用次數相同時,誰最先來淘汰誰)。

5.Clocks置換算法

(1)簡單的Clocks置換算法(最近未使用NRU(Not Recently Used)算法)

為每一頁設置一個訪問位,再將內存中所有頁面通過指針鏈接成一個循環隊列。當某頁被訪問時,其訪問位置1。在選擇某一頁淘汰時,只需檢查頁的訪問位。如果是0,就選擇該頁換出,若為1,則重新將他置0,暫不換出,給予該頁第二次駐留內存的機會,再檢查下一個頁面。當檢查到隊列中最后一個頁面時,若訪問位仍為1,則再返回隊首去檢查第一個頁面。

圖為簡單Clocks算法的流程示意圖

(2)改進型Clocks置換算法

在簡單型的基礎上再增加一個修改位M,組合成四類頁面:

①(A=0,M=0):表明該頁最近既未被訪問,又未被修改,是最佳淘汰頁

②(A=0,M=1):表明該頁最近未被訪問,但已被修改,並不是很好的淘汰頁

③(A=1,M=0):表明該頁最近已被訪問,但未被修改,該頁有可能再被訪問

④(A=1,M=1):表明該頁最近已被訪問且被修改,該頁可能再被訪問

算法執行過程可以總結如下:

<1>指針從當前位置開始,掃描循環隊列,尋找A=0且M=0的第一類頁面,將遇到的第一個頁面作為所選中的淘汰頁。在第一次掃描期間不改變訪問位A

<2>第一步失敗,則進行第二輪掃描,尋找A=0且M=1的第二頁頁面,將所遇到的第一個這類頁面作為淘汰頁,在第二輪掃描期間,將所有掃描過的頁面的訪問位都置0

<3>第二步失敗,則指針返回開始位置,並將所有訪問位復0,重復第一步,若仍失敗,再重復第二步,一定能找到被淘汰的頁

三、頁面置換算法舉例

1.最佳分配置換算法

插入順序

1

2

3

4

1

2

5

1

2

3

4

5

內存

1

1

1

1

1

1

1

1

1

3

3

3

 

2

2

2

2

2

2

2

2

2

4

4

 

 

3

4

4

4

5

5

5

5

5

5

是否缺頁

+

+

+

+

 

 

+

 

 

+

+

 

 

 

 

 

 

 

 

 

 

 

 

理想條件下缺頁次數為7次,缺頁率為7/12

2.先進先出置換算法

插入順序

1

2

3

4

1

2

5

1

2

3

4

5

內存

1

1

1

4

4

4

5

5

5

5

5

5

 

2

2

2

1

1

1

1

1

3

3

3

 

 

3

3

3

2

2

2

2

2

4

4

是否缺頁

+

+

+

+

+

+

+

 

 

+

+

 

 

 

 

 

 

 

 

 

 

 

 

缺頁次數為9次,缺頁率為3/4

3.最久未使用置換算法

插入順序

1

2

3

4

1

2

5

1

2

3

4

5

內存

1

1

1

4

4

4

5

5

5

3

3

3

 

2

2

2

1

1

1

1

1

1

4

4

 

 

3

3

3

2

2

2

2

2

2

5

是否缺頁

+

+

+

+

+

+

+

 

 

+

+

+

 

 

 

 

 

 

 

 

 

 

 

缺頁率次數為10次,缺頁率為5/6

4.簡單Clocks置換算法

插入順序

1

2

3

4

1

2

5

1

2

3

4

5

內存

1

A=0

1

A=0

1

A=0

4

A=0

4

A=0

4

A=0

5

A=0

5

A=0

5

A=0

3

A=0

4

A=0

4

A=1

 

A=0

2

A=0

2

A=0

2

A=0

1

A=0

1

A=0

1

A=0

1

A=1

1

A=1

1

A=1

1

A=0

5

A=0

 

A=0

 

A=0

3

A=0

3

A=0

3

A=0

2

A=0

2

A=0

2

A=0

2

A=1

2

A=1

2

A=0

2

A=0

是否缺頁

+

+

+

+

+

+

+

 

 

+

+

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

缺頁次數為10次,缺頁率為5/6


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM