操作系統(tǒng)-內(nèi)存置換算法(共8頁)_第1頁
操作系統(tǒng)-內(nèi)存置換算法(共8頁)_第2頁
操作系統(tǒng)-內(nèi)存置換算法(共8頁)_第3頁
操作系統(tǒng)-內(nèi)存置換算法(共8頁)_第4頁
操作系統(tǒng)-內(nèi)存置換算法(共8頁)_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上存儲管理的頁面置換算法存儲管理的頁面置換算法在考試中常常會考到,操作系統(tǒng)教材中主要介紹了3種常用的頁面置換算法,分別是:先進先出法(FIFO)、最佳置換法(OPT)和最近最少使用置換法(LRU)。大家要理解3種置換算法的含義,然后能熟練地運用在具體的練習中就可以了。為什么要進行頁面置換在請求分頁存儲管理系統(tǒng)中,由于使用了虛擬存儲管理技術(shù),使得所有的進程頁面不是一次性地全部調(diào)入內(nèi)存,而是部分頁面裝入。這就有可能出現(xiàn)下面的情況:要訪問的頁面不在內(nèi)存,這時系統(tǒng)產(chǎn)生缺頁中斷。操作系統(tǒng)在處理缺頁中斷時,要把所需頁面從外存調(diào)入到內(nèi)存中。如果這時內(nèi)存中有空閑塊,就可以直接調(diào)入該頁面

2、;如果這時內(nèi)存中沒有空閑塊,就必須先淘汰一個已經(jīng)在內(nèi)存中的頁面,騰出空間,再把所需的頁面裝入,即進行頁面置換。有助于理解的關(guān)鍵詞有:請求分頁、虛擬存儲、缺頁中斷、頁面置換。先進先出法(FIFO)算法描述:由于認為最早調(diào)入內(nèi)存的頁不再被使用的可能性要大于剛調(diào)入內(nèi)存的頁,因此,先進先出法總是淘汰在內(nèi)存中停留時間最長的一頁,即先進入內(nèi)存的頁,先被換出。先進先出法把一個進程所有在內(nèi)存中的頁按進入內(nèi)存的次序排隊,淘汰頁面總是在隊首進行。如果一個頁面剛被放入內(nèi)存,就把它插在隊尾?!纠?】教材第4章課后習題??紤]下述頁面走向:1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6。當

3、內(nèi)存塊數(shù)量分別為3,5時,試問先進先出置換算法(FIFO)的缺頁次數(shù)是多少?(注意,所有內(nèi)存塊最初都是空的,凡第一次用到的頁面都產(chǎn)生一次缺頁。)解:當內(nèi)存塊數(shù)量分別為3時,F(xiàn)IFO算法的執(zhí)行過程如下圖所示。打叉的表示發(fā)生了缺頁,共缺頁16次。提示:當FIFO算法執(zhí)行到藍色的4號頁面時,這時內(nèi)存中有三個頁面,分別是1,2,3。按照FIFO算法,在內(nèi)存中停留時間最長的頁面被淘汰。三個頁面在內(nèi)存中的停留時間用綠色區(qū)域標記出來了,可見,1號頁面是停留時間最長的,因此要淘汰1號頁面。當內(nèi)存塊數(shù)量分別為5時,共缺頁10次。FIFO算法的執(zhí)行過程如下。優(yōu)缺點:先進先出法(FIFO)簡單易于實現(xiàn),但是性能不好

4、,存在Belady現(xiàn)象。例如對于以下頁面:1,2,3,4,1,2,5,1,2,3,4,5,當內(nèi)存塊為3時,出現(xiàn)9次缺頁中斷;當內(nèi)存塊為4時,出現(xiàn)10次缺頁中斷。缺頁率隨著內(nèi)存塊增加而增加的現(xiàn)象,稱為Belady現(xiàn)象。有興趣的同學可以試一試,看看是不是這樣的。代碼:#include "iostream"using namespace std;#include<vector>#include <deque>/ram 模擬系統(tǒng)為進程分配的3個內(nèi)存塊deque<int> ram(3);int length=0;/檢測是否在內(nèi)存中int isCon

5、tain(int findNum)int i;for (i=0;i<ram.size();i+)if (findNum=rami) break;return i;/缺頁中斷 將缺少的頁調(diào)入內(nèi)存 同時將最早進來的頁調(diào)出int intServer(int page)if(length!=ram.size() ramlength=page; length+;else ram.pop_front(); ram.push_back(page);return 0;/顯示3個內(nèi)存塊中存放的頁面號void display() int i;cout<<"內(nèi)存塊中存放的頁面號:&quo

6、t;for (i=0;i<ram.size();i+)printf("%2d ",rami);cout<<endl;int main()/int i=0;for (i=0;i<ram.size();i+ )rami=0;/該模擬進程總共有20條指令 instructesi 為i條指令所在頁int instructes21=0;srand();/隨機產(chǎn)生指令所在的頁for(int i=1;i<=20;i+) /該模擬進程指令或數(shù)據(jù)分布在6個頁面中 /分別為第 1,2,3,4,5,6 頁 instructesi=rand()%6+1; /cout&

7、lt;<"第"<<i<<"條指令所在頁"<<instructesi<<endl; printf("第%2d指令所在頁%d n",i,instructesi);int count=0;for ( i=1;i<=20;i+)printf("當前待執(zhí)行指令所在頁:%2d:n",instructesi);display();int pos=isContain(instructesi);if (pos=ram.size()printf("第%2d頁不在內(nèi)存中 -> 缺頁中斷n",instructesi);intServer(instructesi);count+;cout<<endl;cout<<"總共執(zhí)行20條指令n"<<"缺頁次數(shù):"<<count<<endl;cout<<"缺頁率:"<<(float)cou

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論