頁面置換演算法課程設計
1. 求高手幫忙做一下課程設計,關於最佳頁面置換演算法的,
操作系統是計算機教學中最重要的環節之一,也是計算機專業學生的一門
重要的專業課程。
操作系統質量的好壞,
直接影響整個計算機系統的性能和用戶
對計算機的使用。
一個精心設計的操作系統能極大地擴充計算機系統的功能,
充
分發揮系統中各種設備的使用效率,
提高系統工作的可靠性。
由於操作系統涉及
計算機系統中各種軟硬體資源的管理,
內容比較繁瑣,
具有很強的實踐性。
要學
好這門課程,必須把理論與實踐緊密結合,才能取得較好的學習效果。
本課程設計是學生學習完
《計算機操作系統》
課程後,
進行的一次全面的綜
合訓練,通過課程設計,讓學生更好地掌握操作系統的原理及實現方法
,
加深對
操作系統基礎理論和重要演算法的理解,加強學生的動手能力。
熟悉頁面置換演算法及其實現,引入計算機系統性能評價方法的概念。
二、設計題目
:
頁面置換演算法模擬程序
2.1
設計內容
編制頁面置換演算法的模擬程序。
2.2
設計要求
1).
用隨機數方法產生頁面走向,頁面走向長度為
L(15<=L<=20),L
由控制台輸
入。
2).
根據頁面走向,分別採用
Optinal
、
FIFO
、
LRU
演算法進行頁面置換,統計缺頁
率。
3).
假定可用內存塊為
11
int a;
t=Search(p[i].num,page);
if(t>=0)//
如果已在內存塊中
{
page[t].time=0;//
把與它相同的內存塊的時間置
0
for(a=0;a<M;a++)
if(a!=t)page[a].time++;//
其它的時間加
1
cout<<p[i].num<<" ";
cout<<"
不缺頁
"<<endl;
}
else//
如果不在內存塊中
{
n++; //
缺頁次數加
1
t=Max(page);//
返回最近最久未使用的塊號賦值給
t
page[t].num=p[i].num;//
進行替換
page[t].time=0;//
替換後時間置為
0
cout<<p[i].num<<" ";
print(page);
for(a=0;a<M;a++)
if(a!=t)page[a].time++;//
其它的時間加
1
}
i++;
}
cout<<"
缺頁次數:
"<<n<<"
缺頁率:
"<<n/m<<endl;
}
if(c==3)//OPT
頁面置換
{
n=0;
cout<<"
******************************************
"<<endl;
cout<<endl;
cout<<" OPT
演算法置換情況如下
:"<<endl;
cout<<endl;
cout<<"
******************************************
"<<endl;
while(i<m)
{
if(Search(p[i].num,page)>=0)//
如果已在內存塊中
12
{
cout<<p[i].num<<" ";
cout<<"
不缺頁
"<<endl;
i++;
}
else//
如果不在內存塊中
{
int a=0;
for(t=0;t<M;t++)
if(page[t].num==0)a++;//
記錄空的內存塊數
if(a!=0)//
有空內存塊
{
int q=M;
for(t=0;t<M;t++)
if(page[t].num==0&&q>t)q=t;//
把空內存塊中塊號最
小的找出來
page[q].num=p[i].num;
n++;
cout<<p[i].num<<" ";
print(page);
i++;
}
else
{
int temp=0,s;
for(t=0;t<M;t++)//
尋找內存塊中下次使用離現在最久的
頁面
if(temp<Count(page,i,t,p))
{
temp=Count(page,i,t,p);
s=t;
}//
把找到的塊號賦給
s
page[s].num=p[i].num;
n++;
cout<<p[i].num<<" ";
13
print(page);
i++;
}
}
}
cout<<"
缺頁次數:
"<<n<<"
缺頁率:
"<<n/m<<endl;
}
}while(c==1||c==2||c==3);
return 0;
}
五.運行結果演示
m(3<=m<=5)
,
m
由控制台輸入,初始時,作業頁面都不在
內存。
4).
要求寫出一份詳細的設計報告。課程設計報告內容包括:設計目的、設計內
容、設計原理、演算法實現、流程圖、源程序、運行示例及結果分析、心得體會、
參考資料等。
2. 頁面置換演算法課程設計然後我手殘黨,運行不了,不知道錯誤在什麼地方
OK ,我幫你搞定,
3. 頁面置換演算法的模擬實現
XXXXXXX
4. 要弄這個題目的課程設計,模擬實現頁面置換演算法,頁面緩沖置換演算法。
#include <iostream> #include <deque> #include <ctime> using namespace std; typedef struct { int id; //頁面ID int stayTime; //內存中駐留時間 int unUseTime; //已經多久未被使用 }CPage; deque<int> RunQueue; deque<CPage> interPage; //內存中的四個頁面 deque<CPage> exterPage; //外存中的N個頁面 int presentSeat; //目前運行到了隊列的第幾個? int lackNum[3] ={0}; int getRandNum(int range) //返回[0,range)范圍內的整數 { return static_cast<int>(rand()%range); } int findPageIdByCmdId(int cmdId) //通過強制轉換成整數的形式判斷指令屬於哪個頁面 { return static_cast<int>(cmdId/10); } void InitDevice() //初始化運行隊列 按照25% 50% 25%的標准生成 { srand(static_cast<int>(time(NULL))); int t_cmdNum = getRandNum(320); //隨機選擇第一條指令 RunQueue.push_back(t_cmdNum); //將其插入隊列 if(t_cmdNum < 319) RunQueue.push_back(t_cmdNum+1); //順序執行下一條指令
5. 內存FIFO、LRU頁面置換演算法的設計
完整代碼已發到你的郵箱了,請注意查收。記得一定要加分哦!!!!
6. 操作系統課程設計,用C#實現內存頁面的置換。實現演算法間比較
頁面置換演算法
一.題目要求:
通過實現頁面置換演算法的FIFO和LRU兩種演算法,理解進程運行時系統是怎樣選擇換出頁面的,對於兩種不同的演算法各自的優缺點是哪些。
要求設計主界面以靈活選擇某演算法,且以下演算法都要實現 1) 最佳置換演算法(OPT):將以後永不使用的或許是在最長(未來)時間內不再被訪問的頁面換出。
2) 先進先出演算法(FIFO):淘汰最先進入內存的頁面,即選擇在內存中駐留時間最久的頁面予以淘汰。
3) 最近最久未使用演算法(LRU):淘汰最近最久未被使用的頁面。 4) 最不經常使用演算法(LFU) 二.實驗目的:
1、用C語言編寫OPT、FIFO、LRU,LFU四種置換演算法。 2、熟悉內存分頁管理策略。 3、了解頁面置換的演算法。 4、掌握一般常用的調度演算法。 5、根據方案使演算法得以模擬實現。 6、鍛煉知識的運用能力和實踐能力。 三、設計要求
1、編寫演算法,實現頁面置換演算法FIFO、LRU;
2、針對內存地址引用串,運行頁面置換演算法進行頁面置換; 3、演算法所需的各種參數由輸入產生(手工輸入或者隨機數產生); 4、輸出內存駐留的頁面集合,頁錯誤次數以及頁錯誤率;
四.相關知識:
1.虛擬存儲器的引入:
局部性原理:程序在執行時在一較短時間內僅限於某個部分;相應的,它所訪問的存儲空間也局限於某個區域,它主要表現在以下兩個方面:時間局限性和空間局限性。
2.虛擬存儲器的定義:
虛擬存儲器是只具有請求調入功能和置換功能,能從邏輯上對內存容量進行擴充的一種存儲器系統。
3.虛擬存儲器的實現方式:
分頁請求系統,它是在分頁系統的基礎上,增加了請求調頁功能、頁面置換功能所形成的頁面形式虛擬存儲系統。
請求分段系統,它是在分段系統的基礎上,增加了請求調段及分段置換功能後,所形成的段式虛擬存儲系統。
4.頁面分配:
平均分配演算法,是將系統中所有可供分配的物理塊,平均分配給各個進程。 按比例分配演算法,根據進程的大小按比例分配物理塊。
考慮優先的分配演算法,把內存中可供分配的所有物理塊分成兩部分:一部分按比例地分配給各進程;另一部分則根據個進程的優先權,適當的增加其相應份額後,分配給各進程。
5.頁面置換演算法:
常用的頁面置換演算法有OPT、FIFO、LRU、Clock、LFU、PBA等。 五、設計說明
1、採用數組頁面的頁號
2、FIFO演算法,選擇在內存中駐留時間最久的頁面予以淘汰;
分配n個物理塊給進程,運行時先把前n個不同頁面一起裝入內存,然後再從後面逐一比較,輸出頁面及頁錯誤數和頁錯誤率。
3、LRU演算法,根據頁面調入內存後的使用情況進行決策;
同樣分配n個物理塊給進程,前n個不同頁面一起裝入內存,後面步驟與前一演算法類似。
選擇置換演算法,先輸入所有頁面號,為系統分配物理塊,依次進行置換: 六.設計思想:
OPT基本思想:
是用一維數組page[pSIZE]存儲頁面號序列,memery[mSIZE]是存儲裝入物理塊中的頁面。數組next[mSIZE]記錄物理塊中對應頁面的最後訪問時間。每當發生缺頁時,就從物理塊中找出最後訪問時間最大的頁面,調出該頁,換入所缺的頁面。
FIFO基本思想:
是用隊列存儲內存中的頁面,隊列的特點是先進先出,與該演算法是一致的,所以每當發生缺頁時,就從隊頭刪除一頁,而從隊尾加入缺頁。或者藉助輔助數組time[mSIZE]記錄物理塊中對應頁面的進入時間,每次需要置換時換出進入時間最小的頁面。
LRU基本思想:
是用一維數組page[pSIZE]存儲頁面號序列,memery[mSIZE]是存儲裝入物理塊中的頁面。數組flag[10]標記頁面的訪問時間。每當使用頁面時,刷新訪問時間。發生缺頁時,就從物理塊中頁面標記最小的一頁,調出該頁,換入所缺的頁面。 七.流程圖:
如下頁所示
六.運行結果: 1. 按任意鍵進行初始化:
2. 載入數據:
3. 進入置換演算法選擇界面:
4.運算中延遲操作:
5.三種演算法演示結果: