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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

计算机操作系统——页面置换算法

發(fā)布時間:2024/4/17 windows 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机操作系统——页面置换算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

聲明:本篇博客參考書籍《計算機操作系統(tǒng)》(西安電子科技大學出版社)

文章目錄

  • 一、最佳頁面置換算法
    • 1、基本知識
    • 2、算法思想
  • 二、先進先出(FIFO)頁面置換算法
    • 1、基本知識
    • 2、算法思想
  • 三、最近最久未使用(LRU)頁面置換算法
    • 1、基本知識
    • 2、算法思想
    • 3、硬件支持
  • 四、最少使用(LFU)頁面置換算法
    • 1、基本知識
    • 2、算法思想
  • 五、Clock頁面置換算法
    • 1、基本知識
    • 2、算法思想
    • 3、改進型Clock置換算法
  • 六、頁面緩沖(PBA)算法
    • 1、基本知識
    • 2、算法思想


首先說說影響頁面換進換出的效率的幾個因素:
(1)頁面置換算法。該因素是影響頁面換進換出效率的重要因素。一個好的頁面置換算法可以使進程在運行過程中具有較低的缺頁率,從而減少頁面換進換出的頻率。
(2)寫回磁盤的頻率。對于已經(jīng)被修改的頁面,換出時,需要寫入到磁盤,也就是I/O操作。如果一個被修改的頁面被換出后,系統(tǒng)暫時不將其寫回到磁盤,而是掛在已經(jīng)修改的換出頁面的鏈表上。僅當被換出頁面的數(shù)目達到一定值時,再將它們一起寫入到磁盤中。顯著的減少了磁盤I/O操作。
(3)讀入內(nèi)存的頻率。設置了已修改換出頁面鏈表后,在該鏈表上有一批換出且待寫回磁盤的頁面,如果有進程在這些頁面被寫回磁盤前再次需要訪問該頁面,那么可以直接從已修改的鏈表上獲取該頁面。可以減少從磁盤讀取頁面到內(nèi)存的頻率。

一、最佳頁面置換算法

1、基本知識

最佳頁面置換算法是一種理想化的頁面置換算法,具有最好的性能,但是實際上沒辦法實現(xiàn),其他頁面置換算法的好壞,通常以最佳頁面置換算法為比較標準。

2、算法思想

該算法選擇的被淘汰的頁是以后永不使用或者是在最長未來時間內(nèi)不再被訪問的頁面,故最佳置換算法保證了最低的缺頁率。但是由于人們目前無法預知一個進程在內(nèi)存中的哪個頁面是未來最長時間內(nèi)不再被訪問的,所以該算法到目前為止還只是一個理論算法,沒有被實現(xiàn)。下面用舉例說明該算法。
假設系統(tǒng)為某個進程分配了4個物理塊,并且該進程的頁面的引用順序如下:
1 ,0,2,3,4,3,2,1,4,5,3,4,0 …
則各時刻頁面被裝入內(nèi)存的情況如下:

當裝入1,0,2之后,調(diào)用頁面3時會發(fā)生缺頁中斷,需要將一個頁面置換出去,將頁面3置換進來,對于最佳置換算法,發(fā)現(xiàn)對于頁面1,0,2來說,頁面0是未來最久未使用到的頁面,所以將頁面0置換出去,將頁面3置換進來。
當調(diào)用頁面4時會發(fā)生頁面中斷,需要將一個頁面置換出去,將頁面4置換進來,對于最佳置換算法,發(fā)現(xiàn)對于頁面1,3,2來說,頁面1是未來最久未使用到的頁面,所以將頁面1置換出去,將頁面4置換進來
. . . . .一直這樣進行著頁面置換,這就是最佳頁面置換算法。由圖可看出,畫出來的部分進行了4次頁面置換。

二、先進先出(FIFO)頁面置換算法

1、基本知識

先進先出置換算法是最早出現(xiàn)的算法,該算法實現(xiàn)簡單,只需要將一個進程已調(diào)入內(nèi)存的頁面按照先后次序連接成一個隊列,并且設置成一個指針,稱為替換指針,總是指向該隊列的頭,即指向該進程已調(diào)入內(nèi)存的頁面中,最先調(diào)入的頁面(即在內(nèi)存中待的時間最長的頁面)。
該算法的性能比較差,因為它所依據(jù)的條件是各個頁面在內(nèi)存中駐留的時間的長短,而頁面調(diào)入的先后并不能反應頁面的使用情況。

2、算法思想

思想為總是淘汰最先進入內(nèi)存的頁面,即選擇在內(nèi)存中駐留時間最長的頁面淘汰。
以最佳置換算法中的頁面和引用順序舉例:

當頁面1,0,2裝入內(nèi)存后,調(diào)用頁面3時,會發(fā)生頁面中斷,對于先進先出頁面置換算法來說,由于1,0,2三個頁面,頁面1在內(nèi)存中駐留時間最長,所以將頁面1置換出去,將頁面3置換進來。
當需要調(diào)用頁面4時,會發(fā)生頁面中斷,由于頁面3,0,2中頁面0在內(nèi)存中駐留時間最長,所以將頁面0置換出去,將頁面4置換進來。
. . . . . . 一直這樣頁面置換,總是將在內(nèi)存中駐留時間最長的頁面置換出去。從畫出的圖中可以看出進行了6次頁面置換

三、最近最久未使用(LRU)頁面置換算法

1、基本知識

最近最久未使用頁面置換算法是根據(jù)頁面調(diào)入內(nèi)存后的使用情況而做出決策的。由于無法預測頁面未來的使用情況,所以只能根據(jù)頁面最近的使用情況作為未來的使用情況的近似。

2、算法思想

最近最久未使用(LRU)頁面置換算法是選擇最近最久未使用的頁面給予淘汰,該算法賦予每一個頁面一個訪問字段,用來記錄一個頁面自上次被訪問以來所經(jīng)歷的時間t,當需要淘汰一個頁面時,選擇現(xiàn)有頁面中t值最大的,即最近最久未使用的頁面給予淘汰。

當?shù)谝淮涡枰庙撁?時,會發(fā)生缺頁中斷,對于最近最久未使用算法來說,對于在內(nèi)存中的頁面1,0,2,頁面1最近最久未使用,所以將頁面1置換出,將頁面3置換進內(nèi)存。
當?shù)谝淮我庙撁?時,會發(fā)生缺頁中斷,對于最近最久未使用算法來說,對于在內(nèi)存中的頁面3,0,2,頁面0最近最久未使用,所以將頁面0置換出,將頁面4置換進內(nèi)存。
對于內(nèi)存中駐留頁面是3,4,2來說,需要引用頁面1,發(fā)生缺頁中斷,對于最近最久未使用算法來說,對于在內(nèi)存中的頁面3,4,2,頁面4最近最久未使用,所以將頁面4置換出,將頁面1置換進內(nèi)存。
. . . . . . 按照最近最久未使用規(guī)則一直這樣置換下去。
最近最久未使用置換算法是根據(jù)過去的使用情況來決定被置換出去的頁,而最佳置換算法是根據(jù)未來的使用情況來決定被置換出去的頁。也可以說最近最久未使用置換算法試圖希望通過過去的頁面使用情況來近似接近于未來頁面的使用情況,而接近于最佳置換算法。但是這只是一種希望,因為頁面過去的使用情況和未來的使用情況之間沒有必然的聯(lián)系。

3、硬件支持

為了了解一個進程在內(nèi)存中的哪一個頁面是最近最久未使用的,需要寄存器或者棧這兩類硬件之一支持。
(1)移位寄存器
可以為在內(nèi)存中的每個頁面配置一個移位寄存器,假設該寄存器有n個位,每個位由R表示,最低位由R0表示,最高位由R(n-1)表示。
當進程訪問某個物理塊時,將相應的寄存器的位R(n-1)置為1,定時信號將每隔一定時間(比如100ms)將寄存器右移一位(相當于數(shù)值以>>1的方式縮小),也就是越久未使用,該頁面對應的寄存器的值越小(除非該寄存器的值已經(jīng)為0了),那么值最小的移位寄存器對應的頁面就是最近最久未使用的頁面。
(2)棧
可以利用一個特殊的棧保存一個進程被調(diào)入內(nèi)存的頁面的頁面號。當一個頁面被訪問時,將該頁面從棧中移出,將該頁面重新壓入棧中。因此棧頂保存的總是最近被訪問的頁面的頁面號,而棧底就是最近最久未使用的頁面號。

四、最少使用(LFU)頁面置換算法

1、基本知識

使用最少使用(LFU)頁面置換算法時,應該在內(nèi)存中為每一個頁面設置一個移位寄存器,用來記錄被訪問的頻率。最少使用頁面置換算法,顧名思義,選擇使用頻率最少的頁面置換出去。

2、算法思想

思想即選擇最近最少使用的頁面淘汰。
由于存儲器具有較高的訪問速度,例如100ns,在1ms內(nèi)可能對一個頁面訪問成千上萬次,所以,只能采用較大的時間間隔來記錄對存儲器某頁的訪問,在最少使用置換算法中也使用了移位寄存器。
當某頁被訪問時,將該移位寄存器的最高位置為1,隔一定時間,將移位寄存器的值右移一位,故寄存器各個位值相加,值越小,說明該移位寄存器對應的頁面在最近一段時間使用的次數(shù)最少。
這種算法并不能真正反應頁面的使用情況,因為在每一個時間間隔內(nèi),只是用寄存器的一個位來記錄該頁在該間隔被使用了,但是在該時間間隔內(nèi),頁面被使用1次和被使用10000次完全是等效的。

五、Clock頁面置換算法

1、基本知識

最近最久未使用(LRU)算法是比較常見的頁面置換算法,但是由于LRU置換算法需要較多的硬件支持,所以使用LRU算法的成本較高,所以在實際應用中大多采用LRU的近似算法,Clock就是其中一個用的較多的LRU近似算法。

2、算法思想

當利用Clock算法時,只需要將每一個頁設置一個訪問位,再將內(nèi)存中的所有頁面都通過指針連接成一個循環(huán)隊列,當某頁被訪問時,訪問位置為1。
Clock置換算法在選擇一個頁置換出時,只需要檢查頁面的訪問位,如果是0,就將該頁換出;如果是1,則將訪問位重新置為0,暫不換出,給予該頁第二次駐留內(nèi)存的機會,再按照Clock算法檢查下一個頁面。當檢查到隊列中的最后一個頁面時,若其訪問位仍然為1,則再去返回隊首檢查第一個頁面…

3、改進型Clock置換算法

當一個頁面換出時,如果該頁面已經(jīng)被修改,那么需要將這個頁面重新寫回到磁盤上,但是如果該頁面沒有被修改,那么不必將它拷回到磁盤。所以對于修改過的頁面來說,沒有修改的頁面的換出時付出的代價要更小。所以在改進型Clock置換算法中在考慮頁面的使用情況之外,又考慮了頁面置換代價,即是否被修改了。所以每個頁面有兩個標志位,分別為訪問為A和修改位M,可以組合成以下四種情況:
(1)(A = 0, M = 0):表示該頁最近既沒有被訪問也沒有被修改,是最佳淘汰頁。
(2)(A = 0, M = 1):表示該頁最近沒有被訪問,但是被修改了,并不是很好的淘汰頁。
(3)(A = 1, M = 0):表示該頁最近被訪問了,但是沒有被修改,該頁有可能會被再次訪問。
(4)(A = 1, M = 1):表示該頁最近既被訪問又被修改,該頁有可能被再次訪問。
改進型Clock置換算法尋找淘汰頁時,執(zhí)行過程可以分為以下三步:
(1)從指針所指示的當前位置開始,掃描循環(huán)隊列,尋找A = 0且M = 0的第一類頁面,將所遇到的第一個頁面作為所選中的淘汰頁。在第一次掃描期間不修改訪問位A。
(2)如果第一步失敗,即查找一輪后未遇到第一類頁面,則開始第二輪掃描,尋找A = 0且M = 1的第二類頁面,將所遇到的第一個這類頁面作為淘汰頁。在第二輪掃描期間,將所有掃描過的頁面的訪問位都置為0。
(3)如果第二步也失敗,即第二類頁面也沒有找到,則將指針返回到開始位置,并且將所有的訪問位都置為0,然后重復第一步,即尋找A=0且M=0的頁面,如果仍然失敗,必要時再重復第二步,尋找A=0且M=1的第二類頁面,此時就一定能找到被淘汰的頁。
該算法與普通Clock置換算法相比,可以減少磁盤I/O操作次數(shù)。實現(xiàn)該算法的本身的開銷將增加。

六、頁面緩沖(PBA)算法

1、基本知識

頁面緩沖算法有以下兩個特點:
(1)顯著的降低了頁面換進換出的頻率,使磁盤I/O操作次數(shù)大為減少。
(2)由于磁盤I/O操作次數(shù)大為減少,使得頁面換進換出的效率減少,所以使其可以采用較為簡單的頁面置換算法,比如先進先出頁面置換算法。

2、算法思想

該算法主要由兩類鏈表支撐,空閑頁面鏈表和修改頁面鏈表。頁面緩沖算法主要是將換出的頁面暫時不寫回到磁盤中,而是將頁面掛到相應的鏈表上。其一減少磁盤I/O操作次數(shù),其二可以減少讀入內(nèi)存的頻率。
(1)空閑頁面鏈表
該鏈表是一個空閑物理塊鏈表。是系統(tǒng)掌握的空閑物理塊,用于分配給頻繁發(fā)生缺頁中斷的進程,以降低該進程的缺頁率。當這樣的進程需要讀入一個頁面時,便可利用空閑物理塊來裝入該頁。
當有一個未被修改的頁面要換出時,實際上并不將它換回到外村,而是把它們所在的物理塊掛在空閑鏈表的末尾。這些掛在空閑鏈表中的物理塊是有數(shù)據(jù)的,如果以后某個進程需要訪問這些頁面時,可以直接從空閑鏈表中取下,免除了從磁盤讀入數(shù)據(jù)的操作,減少了頁面換進的開銷。其實也減少了頁面換出的開銷,因為這個換出頁面到目前為止都沒有寫回到磁盤。
(2)已修改頁面的鏈表
該鏈表是由已修改的頁面所形成的鏈表。設置該鏈表的目的是減少修改頁面換出的次數(shù)。當進程需要將一個已經(jīng)修改的頁面換出時,系統(tǒng)并不立即將它換出到磁盤上,而是將它所在的物理塊掛在修改頁面鏈表的末尾。
當已修改頁面的鏈表上的頁面?zhèn)€數(shù)達到一定程度時,會一一起將這些頁面寫回到磁盤。如果這些被換出的頁面在寫回磁盤之前,有進程需要訪問其中的頁面,那么可以直接從已修改頁面鏈表上獲取該頁面。所以可見,減少了磁盤I/O操作,并且減少了內(nèi)存寫入頻率。

總結

以上是生活随笔為你收集整理的计算机操作系统——页面置换算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。