資源簡介
操作系統實驗五 虛擬內存頁面置換算法(內含源代碼和詳細實驗報告),詳細介紹:http://blog.csdn.net/xunciy/article/details/79239096

代碼片段和文件信息
#include?
#include?
#include?
using?namespace?std;
#define?MaxNumber?100
int?MinBlockNumPageNumLackNumLackPageNum;??//物理塊數,頁面個數,缺頁次數,缺頁數
double??LackPageRate;???//缺頁率
int?PageOrder[MaxNumber];??//頁面序列
int?PageDisCount[MaxNumber];?//當前內存距離下一次出現的距離
int?LRUtime[MaxNumber];???//存儲隊列中各個頁面最近使用情況
int?VirtualQueue[MaxNumber];???//虛擬隊列
void?Enter();??//輸入物理塊數、頁面號順序
void?initial();??//模擬物理塊順序被填滿,初始化物理塊
void?FIFO();????//先進先出FIFO
void?OPI();?????//最佳置換OPI
void?LRU();????//最近最久未使用LRU
void?display();?//顯示執行結果
int?main(){
????Enter();
//????initial();
????FIFO();
????OPI();
????LRU();
????return?0;
}
void?Enter(){
????int?i;
????cout<<“Enter?MinBlockNum:?“;
????cin>>MinBlockNum;//輸入最小物理塊數
????cout<<“Enter?PageNum:?“;
????cin>>PageNum;//輸入頁面個數
????//輸入頁面序列
????cout<<“Enter?PageOrder:?“;
????for?(i=0;i ????????cin>>PageOrder[i];
????}
}
void?initial(){
????int?ijk;
????bool?isInQueue;
????LackPageNum?=?MinBlockNum;//缺頁數=物理塊數+缺頁次數
????LackPageRate?=?0.0;
????for(i?=?0;i ????????PageDisCount[i]?=?0;??//初始化距離
????????VirtualQueue[i]?=?-1;??//初始化隊列
????}
????for?(i?=?0;i ????????isInQueue?=?false;
????????LRUtime[i]?=?0;
????????for?(j?=?0;j ????????????if?(VirtualQueue[j]?==?PageOrder[i])//如果頁面在隊列中
????????????????isInQueue?=?true;
????????}
????????if?(!isInQueue){??//當有新的進程進入到隊列時,便計算其對應的距離
????????????VirtualQueue[i]?=?PageOrder[i];//小于物理塊數時,頁面順序進入隊列
????????????for?(k?=?0;k????????????????LRUtime[k]++;???//之前的頁面對應的時間+1
????????????}
????????????display();
????????}
????????else
????????????LRUtime[i]?=?0;??//重新更新為0,表示最近剛剛使用
????}
}
void?display(){
????int?i;
????for?(i?=?0;i=0;i++)
????????cout< ????cout< }
void?FIFO(){
????cout< ????int?ik;
????cout<<“FIFO“< ????initial();
????bool?isInQueue;
????int?point?=?0;??//指向隊列中最老的
????//從物理塊數+1的地方開始繼續分配內存
????for?(i?=?MinBlockNum;i ????????isInQueue?=?false;
????????for?(k?=?0;k ????????????if?(VirtualQueue[k]?==?PageOrder[i]){???//頁面在隊列中
????????????????isInQueue?=?true;
????????????}
????????}
????????if?(!isInQueue){???//如果頁面不在隊列中,則進行相應的處理
????????????LackPageNum++;??//缺頁數加1
????????????VirtualQueue[point]?=?PageOrder[i];//頁面替換隊列中最老的
????????????display();//輸出物理塊狀態
????????????point++;//后移
????????????if?(point?==?MinBlockNum)//當指向隊尾時后,重新指向隊首
????????????????point?=?0;
????????}
????????else
????????????cout< ????}
????LackPageRate?=?(LackPageNum?*?1.0)/PageNum;
????cout<<“LackPageNum:?“< ????cout<<“LackPageRate:?“<
}
void?OPI(){
????cout< ????int?ikmst;
????cout<<“OPI“< ????initial();
????bool?isInQueue;
????int?distance;???//表示隊列每個值距離下一次訪問的距離
????int?point;??//指向最長時間未被訪問的下標
????for(i?=?MinBlockNum;i
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-02-02?14:31??實驗五??虛擬內存頁面置換算法\
?????目錄???????????0??2018-02-02?14:27??實驗五??虛擬內存頁面置換算法\5.FIFO_OPI_LRU\
?????文件????????6019??2017-12-28?22:11??實驗五??虛擬內存頁面置換算法\5.FIFO_OPI_LRU\FIFO_OPI_LRU.cpp
?????文件?????1050111??2017-12-20?19:54??實驗五??虛擬內存頁面置換算法\5.FIFO_OPI_LRU\FIFO_OPI_LRU.exe
?????文件????????5823??2017-12-20?19:54??實驗五??虛擬內存頁面置換算法\5.FIFO_OPI_LRU\FIFO_OPI_LRU.o
?????文件??????100931??2017-12-28?22:41??實驗五??虛擬內存頁面置換算法\實驗五??虛擬內存頁面置換算法.docx
- 上一篇:操作系統實驗二 時間片輪轉RR進程調度算法
- 下一篇:匯編語言實驗二英文打字練習軟件
評論
共有 條評論