操作系統(tǒng)課程設(shè)計報告_第1頁
操作系統(tǒng)課程設(shè)計報告_第2頁
操作系統(tǒng)課程設(shè)計報告_第3頁
操作系統(tǒng)課程設(shè)計報告_第4頁
操作系統(tǒng)課程設(shè)計報告_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計報告題 目: 模擬請求頁式管理 課程名稱: 計算機操作系統(tǒng) 學(xué) 院: 信息工程學(xué)院 專 業(yè): 計算機科學(xué)與技術(shù) 班 級: 14計本(1) 學(xué)生姓名: * * * 學(xué) 號: 201403031* 指導(dǎo)教師: * * 成 績: 開課時間: 2016-2017 學(xué)年 一 學(xué)期 模擬請求頁式管理第1章 需求分析1.1設(shè)計要求請求頁式管理是一種常用的虛擬存儲管理技術(shù)。本設(shè)計通過請求頁式存儲管理中頁面置換算法模擬設(shè)計,了解虛擬存儲技術(shù)的特點,掌握請求頁式管理的頁面置換算法。本實驗要求用Vc或其他高級語言編寫和調(diào)試。編寫程序?qū)崿F(xiàn): (1)先進先出頁面置換算法(FIFO)(2)最近最久未使用頁面置換算

2、法(LRU)最佳置換頁面置換算法(OPT)設(shè)計一個虛擬存儲區(qū)和內(nèi)存工作區(qū),編程序演示以上三種算法的具體實現(xiàn)過程,并計算訪問命中率。1.2解決方案 首先確定實現(xiàn)語言使用c#實現(xiàn)圖形化界面,后確定要實現(xiàn)哪些功能,比如算法選擇,頁面添加,模擬控制。然后確定輸出結(jié)構(gòu)以便于程序的測試和驗證。將基本框架建立后再進行編程。編程前進行算法結(jié)構(gòu)分析最后編程實現(xiàn)。1.3算法實現(xiàn)原理1、先進先出置換算法(FIFO):發(fā)生缺頁中斷時按照頁面進入內(nèi)存順序總是淘汰最先進入內(nèi)存的頁面。2、最近最久未使用置換算法(LRU):發(fā)生缺頁中斷時總是淘汰存在內(nèi)存中最長時間未被使用的頁面。3、最佳置換算法(OPT):發(fā)生缺頁中斷時若一

3、個或幾個頁面將來將不會被調(diào)用則按先進先出原則淘汰頁面,若將來都有調(diào)用則比較調(diào)用時刻選擇最遠時刻頁面淘汰。4、缺頁率:缺頁次數(shù)占頁面調(diào)用次數(shù)的百分比。第2章 概要設(shè)計2.1數(shù)據(jù)設(shè)計常變量:調(diào)用頁面最大數(shù)量(MaxN),內(nèi)存最大頁面數(shù)(MaxM)待調(diào)用頁面數(shù)組:page_ddMaxN存放等待調(diào)用的頁面號頁面數(shù)組專用指針 page_p,用于指向page_dd數(shù)組中正需調(diào)入內(nèi)存的頁號內(nèi)存塊數(shù)組:MemeryMaxM,存放內(nèi)存當前存放的頁號缺頁計數(shù)器:count,記錄缺頁次數(shù)內(nèi)存塊狀態(tài)數(shù)組:M1MaxN,M2MaxN,M3MaxN,記錄每次頁面調(diào)用結(jié)束后內(nèi)存各塊的狀態(tài)缺頁記錄數(shù)組sMaxN,用于記錄頁面

4、調(diào)用時是否產(chǎn)生缺頁中斷,初始化為是2.2函數(shù)設(shè)計1、頁面添加函數(shù):void btnAdd_Click(object sender, EventArgs e)用于實現(xiàn)通過點擊按鈕實現(xiàn)數(shù)據(jù)輸入。2、內(nèi)存初始化函數(shù):init(int a, int b,int m1,intm2,intm3)參數(shù)有頁面數(shù)組、內(nèi)存數(shù)組、狀態(tài)數(shù)組,采用先進先出算法對內(nèi)存先進行裝滿服務(wù)于先進先出頁面置換函數(shù)和最佳置換函數(shù)。3、 輸出函數(shù):void display(inta,intm1,intm2,intm3,charc)用于輸出模擬結(jié)果,參數(shù)有頁面數(shù)組,內(nèi)存數(shù)組,狀態(tài)數(shù)組,缺頁記錄數(shù)組。再模擬之后調(diào)用。4、模擬控制函數(shù):vo

5、id btnmo_Click(object sender, EventArgs e)用于實現(xiàn)通過單擊模擬按鈕,根據(jù)用戶所選算法進行模擬并顯示結(jié)果。5、先進先出算法模擬函數(shù):void FIFO(int a, int b,intm1,intm2,intm3,char s)用于實現(xiàn)先進先出算法模擬,參數(shù)有頁面數(shù)組,內(nèi)存數(shù)組、內(nèi)存狀態(tài)記錄數(shù)組,缺頁記錄數(shù)組。在模擬函數(shù)中調(diào)用。6、 最近最久未使用算法模擬函數(shù):void LRU(int a, int b, int m1, int m2, int m3, char s)用于實現(xiàn)最近最久未使用算法模擬,參數(shù)有頁面數(shù)組,內(nèi)存數(shù)組,內(nèi)存狀態(tài)記錄數(shù)組,缺頁記錄數(shù)組

6、。在模擬函數(shù)中被調(diào)用。7、 最近最久未使用函數(shù)輔助函數(shù):void LUR_I(int a,int e)用于對最近最久未使用算法中所用輔助數(shù)組(記錄頁面存在時長)進行調(diào)整,參數(shù)有輔助數(shù)組及需調(diào)整的數(shù)據(jù)下標。在最近最久未使用函數(shù)中調(diào)用。8、最佳置換算法模擬函數(shù):void OPT(int a, int b, int m1, int m2, int m3, char s)用于模擬最佳置換算法。參數(shù)有頁面數(shù)組,內(nèi)存數(shù)組,內(nèi)存狀態(tài)記錄數(shù)組,缺頁記錄數(shù)組。在模擬函數(shù)中被調(diào)用。9、 最佳置換算法輔助函數(shù):void OPT_F(int a, int e)用于對最佳置換算法中的輔助數(shù)組進行調(diào)整。參數(shù)有輔助數(shù)組,需

7、調(diào)整數(shù)據(jù)下標。在最佳置換算法中被調(diào)用。10、 重置函數(shù):void btncz_Click(object sender, EventArgs e)用于重新選擇算法進行新的模擬。2.3主要算法設(shè)計1、初始化函數(shù)算法:第一步:將第一個頁面調(diào)入內(nèi)存,調(diào)整最佳置換算法輔助數(shù)組,缺頁計數(shù)器加一,保存內(nèi)存數(shù)組狀態(tài)。第二步:調(diào)用下一個頁面并判斷內(nèi)存中是否有本頁面有轉(zhuǎn)第三步,無轉(zhuǎn)第四步。第三步:更改缺頁數(shù)組對應(yīng)下標值,記錄當前內(nèi)存狀態(tài),調(diào)整最佳置換算法輔助數(shù)組,頁面指針指向下一頁。第四步:將頁面調(diào)入內(nèi)存,調(diào)整最佳置換算法輔助函數(shù),缺頁計數(shù)器加一,保存內(nèi)存數(shù)組狀態(tài)。若內(nèi)存尚不滿轉(zhuǎn)第一步。具體見圖1初始化算法流程圖

8、。圖1 初始化算法流程圖2、 先進先出頁面置換算法:第一步:檢查內(nèi)存中是否已有需調(diào)用頁面,有則轉(zhuǎn)第二步,無則轉(zhuǎn)第三步。第二步:記錄當前內(nèi)存狀態(tài),修改缺頁數(shù)組對應(yīng)下標值。第三步:內(nèi)存中無需要調(diào)用的頁面,進行出隊操作,然后進行入隊操作,記錄內(nèi)存塊狀態(tài),缺頁計數(shù)器加一。第四步:若頁面數(shù)組未被調(diào)用結(jié)束轉(zhuǎn)第一步。具體見圖2先進先出算法流程圖。圖2 先進先出算法流程圖3、 最近最久未使用置換算法:第一步:將頁面調(diào)入內(nèi)存,記錄內(nèi)存狀態(tài),缺頁計數(shù)器加一,調(diào)整輔助數(shù)組,頁面指針加一。第二步:檢查內(nèi)存中是否已有所需頁面,有轉(zhuǎn)第三步,無轉(zhuǎn)第一步。第三步:修改缺頁數(shù)組對應(yīng)下標記錄,記錄內(nèi)存狀態(tài),調(diào)整輔助數(shù)組,頁面指針

9、加一。第四步:內(nèi)存是否已滿,無則轉(zhuǎn)第一步,是則轉(zhuǎn)第五步。第五步:檢查內(nèi)存中是否有所需頁面,有則記錄當前內(nèi)存狀態(tài),修改缺頁數(shù)組對應(yīng)下標值。無則轉(zhuǎn)第六步。第六步:檢查輔助數(shù)組找出最大值并記錄其下標,置換內(nèi)存中對應(yīng)下標的數(shù)據(jù),調(diào)整輔助數(shù)組,缺頁計數(shù)器加一。第七步:頁面是否調(diào)用結(jié)束未結(jié)束則轉(zhuǎn)第五步。具體見圖3最近最久未使用算法流程圖。圖3 最近最久未使用算法4、 最佳置換算法:第一步:檢查內(nèi)存中是否已有所需頁面,有則記錄內(nèi)存狀態(tài),修改缺頁數(shù)組對應(yīng)下標數(shù)值。無則轉(zhuǎn)第二步。第二步:判斷內(nèi)存中各頁面的未來調(diào)用情況,記錄是否還有調(diào)用,若有則記錄調(diào)用時刻。第三步:分析調(diào)用情況,內(nèi)存中頁面都在將來不會被調(diào)用轉(zhuǎn)第四

10、步,有一個被調(diào)用轉(zhuǎn)第五步,有兩個被調(diào)用轉(zhuǎn)第六步,全被調(diào)用轉(zhuǎn)第七步。第四步:查找輔助數(shù)組找到內(nèi)存中存在時間最長的頁面進行置換,修改內(nèi)存狀態(tài),缺頁計數(shù)器加一,修改輔助數(shù)組。第五步:查找到不會被調(diào)用的頁面,并根據(jù)輔助數(shù)組選擇最早進入內(nèi)存的頁面將其置換。修改內(nèi)存狀態(tài),缺頁計數(shù)器加一,修改輔助數(shù)組。第六步:查找輔助數(shù)組找到將來不需要在調(diào)用的頁面將其置換,修改輔助數(shù)組,記錄內(nèi)存狀態(tài),缺頁計數(shù)器加一。第七步:查找輔助數(shù)組,找尋最晚被調(diào)用的頁面,將其置換。記錄內(nèi)存狀態(tài),修改輔助數(shù)組,缺頁計數(shù)器加一。第八步:頁面是否調(diào)用完成,否則轉(zhuǎn)第一步。具體見圖4最佳置換算法流程圖圖4 最佳置換算法流程圖2.4界面設(shè)計采用c

11、# 設(shè)計windows窗體應(yīng)用程序,使用下拉列表框選擇算法,通過按鈕添加待調(diào)用的頁面。通過文本控件顯示模擬結(jié)果。顯示樣式:第一行:算法名稱; 第二行:調(diào)用頁面順序; 第三行至第五行顯示內(nèi)存在每調(diào)用一次頁面后的狀態(tài); 第六行:是否缺頁; 最后一行顯示缺頁率;第3章 詳細設(shè)計與實現(xiàn)3.1函數(shù)設(shè)計 1、添加按鈕功能實現(xiàn)代碼主要功能:實現(xiàn)單擊一次添加一個調(diào)用頁面,并給出相應(yīng)的提示,如正在輸入的是第幾次調(diào)度頁面,在輸入為空時能夠彈出對話框提示用戶,在輸入完成時為避免數(shù)組越界應(yīng)在輸入完成時隱藏;輸入過程中始終保證時輸入焦點。private void btnAdd_Click(object sender,

12、EventArgs e) if (txtAdd.Text != )/輸入不為空才能繼續(xù)輸入 page_ddi_add = Convert.ToInt32(txtAdd.Text); /*將輸入值賦值給頁面數(shù)組*/ txtShow.Text += txtAdd.Text + ; /*顯示供用戶查閱*/ i_add+; txtAdd.Clear(); /*清空*/ if (i_add = MaxN)/輸入結(jié)束時 txtAdd.ReadOnly = true;/不允許繼續(xù)輸入 btnAdd.Hide();/按鈕隱藏 return; txtAdd.Focus();/設(shè)置為輸入焦點 label2.Tex

13、t = 第 + (i_add + 1) + 次調(diào)度頁面:; /*提示用戶正在輸入的是第幾次調(diào)度頁面*/ /*輸入為空則彈出對話框提示用戶輸入為空*/ else MessageBox.Show(請輸入調(diào)用頁面!, 輸入為空, MessageBoxButtons.OK, MessageBoxIcon.Warning); txtAdd.Focus(); 2、 初始化函數(shù)主要功能:將內(nèi)存一先進先出方式填滿,并記錄每個頁面進入時間,服務(wù)于先進先出頁面置換算法和最佳置換算法。 void init(int a, int b,int m1,intm2,intm3) /*內(nèi)存未滿時循環(huán)*/ for (int i

14、 = 0; i MaxM&page_p MaxN ; i+) bi = apage_p;/調(diào)入內(nèi)存 /調(diào)整輔助數(shù)組將剛進入內(nèi)存的頁面的對應(yīng)時間 OPT_F (O_Q ,i); count+;/缺頁計數(shù)器加一 m1page_p = b0;/保存內(nèi)存狀態(tài) m2page_p = b1; m3page_p = b2; page_p+;/調(diào)用下一頁面 /檢查內(nèi)存中是否原先就有需要的頁面; for (int j = 0; j = i&page_p MaxN ; j+) if (bj = apage_p) /找到這樣的頁面 spage_p = F;/缺頁數(shù)組對應(yīng)數(shù)據(jù)更改 m1page_p = b0;/記錄內(nèi)

15、存狀態(tài) m2page_p = b1; m3page_p = b2; OPT_F(O_Q, -1);/調(diào)整最佳置換算法輔助函數(shù) page_p+;/調(diào)用下一頁 j = -1;/重新開始尋找 3、 先進先出頁面置換函數(shù)主要功能:根據(jù)先進先出算法要求在產(chǎn)生缺頁中斷時采用先進先出方式確定淘汰頁面,并在每次頁面調(diào)用時記錄下內(nèi)存狀態(tài),缺頁次數(shù);采用循環(huán)隊列使得每次出隊的一定是最先進入內(nèi)存的。 private void FIFO(int a, int b,intm1,intm2,intm3,char s) int Fpage_p = page_p; int front, rear; /定義隊列對手和對尾指針并

16、初始化 front = 0; rear = MaxM - 1; int sa; /定義頁面處理標志為1則表明此頁面已處理 for (; Fpage_p MaxN; Fpage_p+) /從當前位置開始往后掃描 sa = 0; for (int i = 0; i MaxM; i+) /檢查內(nèi)存中是否已有要調(diào)用的頁面。 /有需要的頁面則保存內(nèi)存狀態(tài),修改缺頁數(shù)組對應(yīng)位值 if (bi = aFpage_p) m1Fpage_p = b0; m2Fpage_p = b1; m3Fpage_p = b2; sFpage_p = F; sa = 1; break; /找到就退出應(yīng)為只可能有一個符合頁面

17、if (sa = 0) /未找到一致頁面產(chǎn)生缺頁中斷進行出隊操作淘汰最早進入內(nèi)存的頁面/并記錄內(nèi)存狀態(tài),計數(shù)器加一。 front = (front + 1) % MaxM; rear = (rear + 1) % MaxM; brear = aFpage_p; m1Fpage_p = b0; m2Fpage_p = b1; m3Fpage_p = b2; count+; else continue; /內(nèi)存原有一樣的頁面則結(jié)束本次循環(huán) 4、 最近最久未使用函數(shù) 主要功能:實現(xiàn)對最近最久頁面置換算法的模擬,記錄缺頁次數(shù)和每次頁面對應(yīng)的內(nèi)存狀態(tài)。 private void LRU(int a, i

18、nt b, int m1, int m2, int m3, char s) int L_Q = new intMaxM3,3,3;/輔助數(shù)組記錄頁面存在時間,初始值都是3,每次對應(yīng)位置有新頁面進入就刷/新為1,比原來值小的加一大于原來值得不變 int sa;/頁面已調(diào)用標志 for (int i = 0; i MaxM & page_p MaxN; i+) /內(nèi)存不滿時執(zhí)行將內(nèi)存裝滿因其于先進先出不符合故不能調(diào)用初始化函數(shù) bi = apage_p;/調(diào)入內(nèi)存 count+; m1page_p = b0;/保存內(nèi)存狀態(tài) m2page_p = b1; m3page_p = b2; LUR_I(L

19、_Q, i);/調(diào)整輔助數(shù)組 page_p+; for (int j = 0; j = i & page_p MaxN ; j+) /判斷已在內(nèi)存中的頁面中是否有與將要調(diào)用頁面一致的頁面 if (bj = apage_p) /有則修改缺頁狀態(tài)函數(shù)并記錄當前內(nèi)存狀態(tài) spage_p = F; m1page_p = b0; m2page_p = b1; m3page_p = b2; LUR_I(L_Q, j); page_p+; j = -1; for (; page_p MaxN; page_p+) /內(nèi)存裝滿后從當前位置向后調(diào)用頁面 sa = 0; for (int i = 0; i MaxM

20、; i+)/檢查內(nèi)存中是否已有要調(diào)用的頁面。 if (bi = apage_p) /有則記錄內(nèi)存狀態(tài)修改缺頁數(shù)組調(diào)整輔助函數(shù) m1page_p = b0; m2page_p = b1; m3page_p = b2; spage_p = F; LUR_I(L_Q, i); sa = 1; break; if (sa = 0) for (int i = 0; i MaxM; i+) /產(chǎn)生缺頁中斷 if (L_Qi = 3)/查找輔助數(shù)組找到值為3的位置對應(yīng)下標并 /替換此下標代表的內(nèi)存塊頁面并記錄內(nèi)存狀態(tài),調(diào)整輔助函數(shù),計數(shù)器加一 bi = apage_p; m1page_p = b0; m2p

21、age_p = b1; m3page_p = b2; LUR_I(L_Q, i); break; count+; else continue; 5、 最佳置換算法 主要功能:模擬實現(xiàn)最佳頁面置換算法,淘汰內(nèi)存中永遠不會調(diào)用的頁面,如果有多個則采用先進先出原則進行置換,若多個頁面在以后都有調(diào)用則淘汰最后被調(diào)用的頁面,記錄每次頁面調(diào)用后內(nèi)存狀態(tài),記錄缺頁中斷數(shù) private void OPT(inta,intb,intm1,intm2,intm3,chars) int sa;/頁面調(diào)用處理標志 int O_p;/頁面數(shù)組輔助指針 int Ocount;/輔助計數(shù)變量 int OPT_I=new

22、int MaxM -1 ,-1 ,-1 ;/輔助數(shù)組記錄頁面將來調(diào)用與否 int OPT_J=new int MaxMMaxN ,MaxN ,MaxN ;/輔助數(shù)組記錄頁面將來被調(diào)用時刻 for (; page_p MaxN; page_p+) for (int i = 0; i MaxM; i+) OPT_Ii = -1;/刷新狀態(tài)數(shù)組 OPT_Ji = MaxN; sa = 0; for (int i = 0; i MaxM; i+)/檢查內(nèi)存中是否已有要調(diào)用的頁面。 /將要調(diào)用頁面存在于內(nèi)存中 if (bi = apage_p) /記錄內(nèi)存狀態(tài)修改缺頁數(shù)組,調(diào)整輔助數(shù)組 m1page_p

23、 = b0; m2page_p = b1; m3page_p = b2; OPT_F(O_Q,-1); spage_p = F; sa = 1; break; if (sa = 0)/缺頁 Ocount = 0; for (int i = 0; i MaxM; i+) /向后查找頁面調(diào)用情況用輔助數(shù)組記錄 O_p = page_p + 1; for (; O_p MaxN; O_p+) if (bi = aO_p) Ocount+; OPT_Ii = 1;/表示下標代表頁面將來會被調(diào)用 OPT_Ji = O_p;/表示其調(diào)用時刻 break; switch (Ocount) case 0:/全

24、部頁面以后都不會再度調(diào)用,查找輔助函數(shù)替換最先進入內(nèi)存數(shù)組 int temp = 0; for (int i = 0; i O_Qtemp) temp = i; btemp = apage_p; m1page_p = b0; m2page_p = b1; m3page_p = b2; OPT_F (O_Q ,temp); count+; break; case 1:/有一個頁面將在以后調(diào)用,比較兩個不會被調(diào)用的頁面誰先進入內(nèi)存并置換之 temp = 0; for (int i = 0; i O_Qtemp) temp = i; btemp = apage_p; m1page_p = b0; m

25、2page_p = b1; m3page_p = b2; OPT_F (O_Q ,temp); count+; break; case 2: /有兩個頁面將在以后被調(diào)用,直接淘汰將來不會調(diào)用的那個 for (int i = 0; i MaxM; i+) if (OPT_Ii = -1) bi = apage_p; m1page_p = b0; m2page_p = b1; m3page_p = b2; OPT_F(O_Q, i); count+; break; case 3: /所有頁面都將被調(diào)用,查找輔助函數(shù),得到最晚被調(diào)用的頁面并淘汰之 int p = 0; for (int i = 0;

26、 i OPT_Jp) p = i; bp = apage_p; m1page_p = b0; m2page_p = b1; m3page_p = b2; OPT_F(O_Q, p); count+; break; 6、 輸出函數(shù) 主要功能:按既定形式輸出模擬結(jié)果,并計算缺頁率并輸出 private void display(inta,intm1,intm2,intm3,charc) lblshow.Text = ; lblshow.Text =comboBox1.Text + :n;/輸出算法名稱 for (int i = 0; i MaxN; i+) /輸出頁面調(diào)用輸出順序 lblshow.

27、Text += ai.ToString()+ ; lblshow.Text += n; for (int i = 0; i MaxN; i+) /輸出1號內(nèi)存塊變換情況 if (m1i = -1) lblshow.Text += ; else lblshow.Text += m1i.ToString() + ; lblshow.Text += n; for (int i = 0; i MaxN; i+) /輸出2號內(nèi)存塊變換情況 if (m2i = -1) lblshow.Text += ; else lblshow.Text += m2i.ToString() + ; lblshow.Tex

28、t += n; for (int i = 0; i MaxN; i+) /輸出3號內(nèi)存塊變換情況 if (m3i = -1) lblshow.Text += ; else lblshow.Text += m3i.ToString() + ; lblshow.Text += n; for (int i = 0; i MaxN; i+) /輸出缺頁情況 lblshow.Text += c i + ; /計算并輸出缺頁率 lblshow.Text += n缺頁率:+ count*100/MaxN +%; 3.2界面設(shè)計程序執(zhí)行開始顯示本程序具體模擬內(nèi)容如圖5進入模擬界面所示圖5 進入模擬界面點擊開始

29、模擬按鈕進入主界面,如圖6所示主界面包含提示文本如“算法選擇”,“第1次調(diào)度頁面”、“頁面調(diào)度順序”。包含三個按鈕分別為添加按鈕用于添加調(diào)用頁面,重置按鈕清除當前操作,以便重新模擬。模擬按鈕,單擊即可開始模擬。圖6 模擬主界面第4章 調(diào)試分析4.1實驗步驟及結(jié)果第一步:運行程序顯示模擬入口如圖7模擬入口所示 圖7 模擬入口第二步:單擊開始模擬進入主界面,可以看出程序默認是選擇先進先出頁面置換算法,顯示頁面調(diào)用順序處不可隨意修改。如圖8主界面所示圖8 主界面第三步:選擇先進先出算法進行模擬,添加頁面調(diào)度序列如圖9所示。期間若輸入空字符則彈出對話框如圖10所示,點擊確定繼續(xù)輸入,輸入完成則禁止輸入

30、如圖11所示;圖9 頁面添加圖10 輸入為空警告對話框圖11 輸入結(jié)束第四步:單擊模擬按鈕可以看見模擬結(jié)果如圖12所示。按照算法原理頁面置換過程應(yīng)為:其中3,5,1號頁面進入內(nèi)存是因為原本內(nèi)存中沒有所以產(chǎn)生了三次中斷。2號頁面調(diào)用時產(chǎn)生缺頁中斷,這是3號頁面最先進入內(nèi)存故將3號頁面置換出去。3號頁面調(diào)用時產(chǎn)生缺頁中斷,此時5號在內(nèi)存中時間最長故將5號頁面置換出去1號頁面進入時,內(nèi)存中本來就有故不產(chǎn)生中斷。5號頁面進入時產(chǎn)生中斷,此時1號頁面存留時間最長故置換出去。1號頁面調(diào)用時產(chǎn)生中斷,此時2號頁面存留時間最長故置換出去。2號頁面調(diào)用時產(chǎn)生中斷,將3號頁面置換出去。3號頁面調(diào)用時產(chǎn)生中斷,置換

31、處5號。4號頁面調(diào)用時產(chǎn)生中斷,置換出1號頁面。1號頁面調(diào)用產(chǎn)生中斷置換出2號。3號頁面調(diào)用不產(chǎn)生中斷。1號調(diào)用不產(chǎn)生中斷。5號頁面調(diào)用置換出3號。缺頁次數(shù)為12次缺頁率為80%。程序運行結(jié)果正確。圖12 先進先出算法模擬結(jié)果第五步:單擊重置按鈕,將算法改為最近最久未使用算法并單擊模擬按鈕,顯示結(jié)果如圖13所示。按照算法原理頁面置換過程應(yīng)為:其中3,5,1號頁面進入內(nèi)存是因為原本內(nèi)存中沒有所以產(chǎn)生了三次中斷。2號頁面調(diào)用時產(chǎn)生缺頁中斷,這是3號頁面最先進入內(nèi)存且未被使用故將3號頁面置換出去。3號頁面調(diào)用時產(chǎn)生缺頁中斷,此時5號在內(nèi)存中時間最長且近期未調(diào)用故將5號頁面置換出去。1號頁面進入時,內(nèi)

32、存中本來就有故不產(chǎn)生中斷。5號頁面進入時產(chǎn)生中斷,此時2號頁面存留時間最長并未使用故置換出去。1號頁面調(diào)用時不產(chǎn)生中斷。2號頁面調(diào)用時產(chǎn)生中斷,將3號頁面置換出去。3號頁面調(diào)用時產(chǎn)生中斷,置換處5號。4號頁面調(diào)用時產(chǎn)生中斷,置換出1號頁面。1號頁面調(diào)用產(chǎn)生中斷置換出2號。3號頁面調(diào)用不產(chǎn)生中斷。1號調(diào)用不產(chǎn)生中斷。5號頁面調(diào)用置換出4號。缺頁次數(shù)為11次缺頁率為73%。程序運行結(jié)果正確。圖13 最近最久未使用算法模擬第六步:單擊重置按鈕,將算法改為最佳置換算法并單擊模擬按鈕,顯示結(jié)果如圖14所示。按照算法原理頁面置換過程應(yīng)為:其中3,5,1號頁面進入內(nèi)存是因為原本內(nèi)存中沒有所以產(chǎn)生了三次中斷。

33、2號頁面調(diào)用時產(chǎn)生缺頁中斷,這是5號頁面最晚被再次調(diào)用故將5號頁面置換出去。3號頁面調(diào)用時不產(chǎn)生缺頁中斷。1號頁面進入時,內(nèi)存中本來就有故不產(chǎn)生中斷。5號頁面進入時產(chǎn)生中斷,此時3號頁面最晚被再次調(diào)用故置換出去。1號頁面調(diào)用時不產(chǎn)生中斷。2號頁面調(diào)用時不產(chǎn)生中斷。3號頁面調(diào)用時產(chǎn)生中斷,置換出2號。4號頁面調(diào)用時產(chǎn)生中斷,置換出5號頁面。1號頁面調(diào)用不產(chǎn)生中斷。3號頁面調(diào)用不產(chǎn)生中斷。1號調(diào)用不產(chǎn)生中斷。5號頁面調(diào)用置換出1號。缺頁次數(shù)為8次缺頁率為53%。程序運行結(jié)果正確。圖14 最佳置換算法總結(jié)*參考資料1.王萬森,孫衛(wèi)真,溫紹潔,霍其潤,汪國安.計算機操作系統(tǒng)原理北京:高等教育出版社,20072.羅福強,白忠建,楊劍VisualC#.NET程序設(shè)計北京:人民郵電出版社,2012附錄using System;using System.Collections.Generic;using System.Linq;using System.Windows.Forms;namespace yeshi static class Program / / 應(yīng)用程序的主入口點。 / STAThread static void Main() Ap

溫馨提示

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

最新文檔

評論

0/150

提交評論