實驗目的:通過編寫和除錯儲存管理的模擬程式以加深對儲存管理方案的理解。熟悉虛存管理的各種頁面淘汰演算法。通過編寫和除錯位址轉換過程的模擬程式以加強對位址轉換過程的了解。
實驗要求:設計乙個請求頁式儲存管理方案。並編寫模擬程式實現。
(1)產生乙個需要訪問的指令位址流。它是一系列需要訪問的指令的位址。為不失一般性,你可以適當地(用人工指定地方法或用隨機數產生器)生成這個序列。
(2)簡單起見,頁面淘汰演算法採用lru頁面淘汰演算法,並且在淘汰一頁時,只將該頁在頁表中抹去。而不再判斷它是否被改寫過,也不將它寫回到輔存。
具體的做法可以是:
(1)產生乙個需要訪問的指令位址流,如1059b,1060b,3059b,4753b,2241b…………;
(2)指令合適的頁面尺寸(例如以 1kb或2kb為1頁);
(3)指定記憶體頁表的最大長度,並對頁表進行初始化;
(4)每訪問乙個位址時,首先要計算該位址所在的頁的頁號,然後查頁表,判斷該頁是否在主存——如果該頁已在主存,則列印頁表情況;如果該頁不在主存且頁表未滿,則調入一頁並列印頁表情況;如果該頁不在主存且頁表已滿,則按lru頁面淘汰演算法淘汰一頁後調入所需的頁,列印頁表情況;
(5)逐個位址訪問,直到所有位址轉換/訪問完畢。
**:
#include#include#define page 1024 //設定一頁大小為1kb
using namespace std;
void swap(int &a,int &b)
int main() ;
int f,flag,g;
cout << "請輸入頁面訪問次序(10個):" << endl;
for (int i = 0; i < 10; i++)
for (int i = 0; i < 10;i++)
}break;}}
if (flag == 0)
}if (g != 1)
}cout << "第" << i + 1 << "次訪問,訪問頁面" << f << ";經過lru演算法,此時主存中頁表為:" << endl;
for (int i = 0; i < 3;i++)
cout << endl;
}system("pause");
}
請求分頁儲存管理方式
請求分頁系統是建立在基本分頁的基礎上的,為了能支援虛擬儲存器功能而增加了請求調頁功能和頁面置換功能。相應地,每次調入和換出的基本單位都是長度固定的頁面,這使得請求分頁系統在實現上要比請求分段系統簡單 請求分段系統在換進和 換出時是 可變長度的段 因此,請求分頁便成為目前最常用的一種實現虛擬儲存器的方...
基本分頁 請求分頁儲存管理方式
基本分頁儲存管理方式具有如下特徵 1 一次性。要求將作業全部裝入記憶體後方能執行。許多作業在每次執行時,並非其全部程式和資料都要用到。如果一次性地裝入其全部程式,造成記憶體空間的浪費。2 駐留性。作業裝入記憶體後,便一直駐留在記憶體中,直至作業執行結束。儘管執行中的程序會因i o而長期等待,或有的程...
基本分頁 請求分頁儲存管理方式
基本分頁儲存管理方式具有如下特徵 1 一次性 要求將作業全部裝入記憶體後方能執行。許多作業在每次執行時,並非其全部程式和資料都要用到。如果一次性地裝入其全部程式,造成記憶體空間的浪費。2 駐留性 作業裝入記憶體後,便一直駐留在記憶體中,直至作業執行結束。儘管執行中的程序會因i o而長期等待,或有的程...