日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

页面置换算法及例题

發布時間:2023/12/9 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 页面置换算法及例题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、頁面置換算法

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

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

二、常用的頁面置換算法

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

轉載于:https://www.cnblogs.com/RB26DETT/p/10035804.html

總結

以上是生活随笔為你收集整理的页面置换算法及例题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。