一分鐘學會頁面置換算法【OPT、FIFO、LRU、NUR】

      網友投稿 1874 2025-03-31

      程序執行期間,若程序所要訪問的頁面未在內存時,便發出缺頁中斷,中斷處理程序首先保留CPU環境,轉入缺頁中斷處理程序。查找頁表,得到該頁在外存的物理塊后,如果內存未滿,則將缺頁調入內存并修改頁表。


      如果內存已滿,則按照某種置換算法從內存中選出一頁換出;如果該頁未被修改過,可不必將該頁寫回磁盤;但如果此頁已被修改,則必須將它寫回磁盤,然后再把所缺的頁調入內存,并修改頁表中的相應表項,置其存在位為“1”,并將此頁表項寫入快表中。

      最佳置換(OPT)算法選擇的被淘汰頁面,將是以后永不使用的,或許是在最長(未來)時間內不再被訪問的頁面;采用最佳置換算法可保證獲得最低的缺頁率。但是由于無法預知哪一個頁面是未來最長時間內不再被訪問的,因而該算法是無法實現的;

      先進先出(FIFO)算法淘汰最先進入內存的頁面,即選擇在內存中駐留時間最久的頁面予以淘汰。

      最近最久未使用(LRU)算法根據頁面調入內存后的使用情況進行決策,選擇最近最久未使用的頁面予以淘汰;該算法賦予每個頁面一個訪問字段,用來記錄一個頁面自上次被訪問一來所經歷的時間T,當需要淘汰一個頁面時,選擇現有頁面中T值最大的,即最近最久未使用的頁面予以淘汰。

      CLCOK算法又稱為最近未使用算法(NUR) 每頁設置一個訪問位,再將內存中的所有頁面都通過鏈接指針鏈接成一個循環隊列;當某個頁面被訪問時,其訪問位置1。淘汰時,檢查其訪問位,如果是0,就換出;若為1,則重新將它置0;再按FIFO算法檢查下一個頁面,到隊列中的最后一個頁面時,若其訪問位仍為1,則再返回到隊首再去檢查第一個頁面。

      1.假設系統為某進程分配了四個物理塊,頁面使用走向為:7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1,分別采用OPT算法,FIFO算法,LRU算法,給出頁面的置換過程,以及各自發生了幾次頁面置換?

      OPT:4次;FIFO:6次;LRU:4次

      2.打開“Microsoft Visual C++ 6.0”,輸入相關代碼,根據代碼注釋把空缺的FIFO算法補充完畢,對程序行進編譯運行。給出你所填寫的FIFO算法代碼:

      bc[p%blockCount]=pc[i]; p++;

      3.根據提示輸入上述相關數據,分別記錄OPT算法、FIFO算法、LRU算法以及CLOCK算法運行結果:

      (1)OPT算法:

      (2)FIFO算法

      (3)LRU算法

      (4)CLOCK算法

      ——————————————————————————————————————————————————————————————————————————————————————

      一分鐘學會頁面置換算法【OPT、FIFO、LRU、NUR】

      附上源代碼

      #include using namespace std; void Print(int bc[],int blockCount){ for(int i=0; i=k){ k=a[i]; j=i; } } return j; } void LRU(int pc[],int bc[], int pageCount, int blockCount) { cout<<"1:LRU 置換算法"<=max){ max=k; blockIndex=j; } } bc[blockIndex]=pc[i]; } noPage++; cout<<"物理塊情況:"; Print(bc, blockCount); } cout<>pageCount; int *pc=new int[pageCount]; cout<<"輸入頁面走向"<>pc[i]; } cout<<"輸入物理塊數"<>blockCount; cout<<"0:FIFO置換算法"<>n){ if(n==0){ int *bc=new int[blockCount]; FIFO(pc,bc,pageCount,blockCount); delete bc; } else if(n==1){ int *bc=new int[blockCount]; LRU(pc,bc,pageCount,blockCount); delete bc; } else if(n==2){ int *bc=new int[blockCount]; Optiomal(pc,bc,pageCount,blockCount); delete bc; } else if(n==3){ int *bc=new int[blockCount]; for(i=0; i

      其實做人最重要的是自信,到哪兒都一樣。————《葉問4》

      云數據庫 GaussDB(for Redis) 任務調度

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:如何按數值篩選(怎么篩選數值)
      下一篇:【云駐共創】華為云云原生鉆石課程04:Kubernetes存儲架構原理深度剖析(上)
      相關文章
      亚洲国产成人精品无码一区二区| 亚洲中久无码永久在线观看同 | 在线观看亚洲视频| 亚洲自国产拍揄拍| 亚洲一区二区三区久久| 亚洲大尺度无码专区尤物| 亚洲乱色熟女一区二区三区丝袜 | 日韩亚洲综合精品国产| 亚洲av无码一区二区三区天堂| 亚洲综合一区国产精品| 亚洲色最新高清av网站| 亚洲色偷偷综合亚洲av78| 亚洲色偷偷综合亚洲av78| 亚洲国产成人精品无码区花野真一| 亚洲精品国产高清在线观看| 亚洲国产成人综合精品| 色噜噜噜噜亚洲第一| 亚洲国产精品人人做人人爽| 亚洲精品视频免费观看| 国产午夜亚洲不卡| 久久精品国产亚洲麻豆| 亚洲成在人天堂一区二区| 97se亚洲综合在线| 亚洲H在线播放在线观看H| 最新国产精品亚洲| 亚洲爆乳无码专区www| 偷自拍亚洲视频在线观看| 亚洲美女在线国产| 亚洲乱码无码永久不卡在线| 精品久久香蕉国产线看观看亚洲| 亚洲AV日韩精品久久久久| 亚洲酒色1314狠狠做| 天堂亚洲国产中文在线| 亚洲av永久中文无码精品综合| 国产精品亚洲综合| JLZZJLZZ亚洲乱熟无码| 亚洲成AV人片在线观看ww| 久久亚洲国产成人精品性色| 国产成人亚洲合集青青草原精品| 亚洲码欧美码一区二区三区| 国产尤物在线视精品在亚洲|