一、 需求分析
設計程式模擬先進先出(fifo)置換演算法,最佳(opt)置換演算法和最近最少用(lru)置換演算法的工作過程。假設記憶體中分配給每個程序的最小物理塊數為m,在程序執行過程中要訪問的頁面個數為n,頁面訪問序列為p1, … ,pn,分別利用不同的頁面置換演算法排程程序的頁面訪問序列,給出頁面訪問序列的置換過程,計算每種演算法缺頁次數和缺頁率。
程式的設計主要是測試先進先出fifo,最佳置換opt和最近最少用lru頁面置換演算法的效率以及過程,對於程式設計師設計有很多幫助,不同的場合用不同的演算法可以提高程式的效率。
二、詳細設計
1、資料結構
int a[320];//存放320條指令
int p;//存放頁大小
int page[320];//存放合併後要使用的頁號
int pagenumber;//存放頁號數量
int piece;//存放塊數
2、演算法流程圖
a.先進先出(fifo)置換演算法:
b.最近最少用(lru)置換演算法:
c.最佳(opt)置換演算法:
三、 軟體測試
a:50%的指令是順序執行的
具體的實施方法是:
圖1.指令位址
2、如圖2所示,頁面大小的取值範圍為1k,2k,4k,8k,16k。按照頁面大小將指令位址轉化化為頁號。對於相鄰相同的頁號,合併為乙個。
圖2.合併後的頁位址流
3.選擇不同的塊數和不同的頁面置換演算法會得出不同的缺頁率,為了方便觀察比較,下面選取相同的塊數(4塊)和不同的頁面置換演算法,求出缺頁率。如圖3-a,3-b,3-c所示:
圖3-a.最佳置換演算法(節選)
三、 總結
本次實驗主要用dos介面實現模擬作業系統的頁面置換功能。在本次實驗中,沒有用到mfc介面,使得實驗資料冗長,不過也更能直觀反應是否缺頁,便於統計。實現先進先出、最近最少用和最佳置換演算法時候,一開始的思路都有初始化進入記憶體塊數的頁數的函式,後來再次看的時候發現太冗長而且沒有這個必要。
附:源程式
#include
#include
#include
#include"fifo.h"
#include"lru.h"
#include"opt.h"
using namespace std;
void random(int a,int n);
int translate(int a,int page,intn,int p);
int main()
cout<>i;break;
default:flag=false;}}
return0;
}void random(int a,int n)
for(i=0;i
cout
int translate(int a,int page,intn,int p)
for(i=0;i
cout
}.\fifo.h
//先進先出置換演算法
#include
#include
using namespace std;
//輸出函式
void output1(int *p,int n)
void fifo(int page,int n,intpiece,int total)
else
}cout<
}.\lru.h
//最近最少用置換演算法
#include
#include
using namespace std;
void lru(int page,int n,int piece,inttotal)
p[j]=temp;
output1(p,piece);
cout<
else//缺頁處理
}cout<
}.\opt.h
//最佳置換演算法
#include
#include
using namespace std;
void opt(int page,int n,int piece,inttotal)
j++;
}for(j=0;jif(flag[p[j]]==1)
temp=j;
elseflag[p[j]]=1;
flag[p[temp]]=0;
flag[page[i]]=1;
p[temp]=page[i];
cout
cout<
else
}cout<
deleteflag;
}
作業系統頁面置換模擬系統
include include include include include include include include include include include include include include include using namespace std int addres...
作業系統頁面置換演算法模擬
一 實驗目的通過模擬實現請求頁式儲存管理的幾種基本頁面置換演算法,了解虛擬儲存技術的特點,掌握虛擬儲存請求頁式儲存管理中幾種基本頁面置換演算法的基本思想和實現過程,並比較它們的效率。二 實驗內容 設計乙個虛擬儲存區和記憶體工作區,並使用下述演算法計算訪問命中率。1 最佳淘汰演算法 opt 2 先進先...
作業系統 II 頁面置換
作業系統概念 原書第9版 當必須置換頁面時,將選擇最舊的頁面 頁面調入記憶體的時間 可能出現belady異常 對於有些頁面置換演算法,隨著分配幀數量的增加,缺頁錯誤率可能會增加 置換最長時間不會使用的頁面 位於記憶體的3個頁面中最後被再次引用的頁面 頁面將來使用的時間 具有所有演算法的最低的缺頁錯誤...