操作系統(tǒng)請(qǐng)求分頁(yè)式存儲(chǔ)管理頁(yè)面置換算法課程設(shè)計(jì)報(bào)告.doc

上傳人:good****022 文檔編號(hào):116658765 上傳時(shí)間:2022-07-06 格式:DOC 頁(yè)數(shù):22 大?。?79.68KB
收藏 版權(quán)申訴 舉報(bào) 下載
操作系統(tǒng)請(qǐng)求分頁(yè)式存儲(chǔ)管理頁(yè)面置換算法課程設(shè)計(jì)報(bào)告.doc_第1頁(yè)
第1頁(yè) / 共22頁(yè)
操作系統(tǒng)請(qǐng)求分頁(yè)式存儲(chǔ)管理頁(yè)面置換算法課程設(shè)計(jì)報(bào)告.doc_第2頁(yè)
第2頁(yè) / 共22頁(yè)
操作系統(tǒng)請(qǐng)求分頁(yè)式存儲(chǔ)管理頁(yè)面置換算法課程設(shè)計(jì)報(bào)告.doc_第3頁(yè)
第3頁(yè) / 共22頁(yè)

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《操作系統(tǒng)請(qǐng)求分頁(yè)式存儲(chǔ)管理頁(yè)面置換算法課程設(shè)計(jì)報(bào)告.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《操作系統(tǒng)請(qǐng)求分頁(yè)式存儲(chǔ)管理頁(yè)面置換算法課程設(shè)計(jì)報(bào)告.doc(22頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、22操作系統(tǒng)程序設(shè)計(jì) 課程設(shè)計(jì)報(bào)告課 題: 請(qǐng)求分頁(yè)式存儲(chǔ)管理頁(yè)面置換算法姓 名: 學(xué) 號(hào): 同組姓名: 專業(yè)班級(jí): 指導(dǎo)教師: 設(shè)計(jì)時(shí)間: 評(píng)閱意見(jiàn):評(píng)定成績(jī): 指導(dǎo)老師簽名: 年 月 日目錄1. 系統(tǒng)描述32. 分析與設(shè)計(jì)32.1.系統(tǒng)功能模塊圖32.2.系統(tǒng)文件結(jié)構(gòu)描述32.3.系統(tǒng)功能流程圖42.4UI設(shè)計(jì)以及操作說(shuō)明:42.5.測(cè)試數(shù)據(jù)及期望113.系統(tǒng)測(cè)試124.總結(jié)心得體會(huì)125.參考文獻(xiàn)136.核心代碼131. 系統(tǒng)描述系統(tǒng)使用.net framework 4.0開(kāi)發(fā)的,圖形用戶界面使用winform程序設(shè)計(jì),功能模塊分別實(shí)現(xiàn)了請(qǐng)求分頁(yè)式存儲(chǔ)管理的LRU算法 ,F(xiàn)IFO 算法。

2、 通過(guò)虛擬系統(tǒng)存儲(chǔ)的概念和實(shí)現(xiàn)方法,進(jìn)行運(yùn)行的時(shí)候不需要把所有頁(yè)面都裝入內(nèi)存中,只需要將部分頁(yè)面調(diào)入內(nèi)存,就可以運(yùn)行。在運(yùn)行過(guò)程中,若要訪問(wèn)的頁(yè)面不在內(nèi)存中,則需用請(qǐng)求調(diào)入的功能將其裝入內(nèi)存中,如果此時(shí)內(nèi)存中沒(méi)有空白的物理塊,就通過(guò)頁(yè)面置換功能淘汰一個(gè)頁(yè)面,根據(jù)LRU,FIFO兩種淘汰算法來(lái)進(jìn)行頁(yè)面置換,并能計(jì)算出FIFO,LRU兩種算法在不同內(nèi)存容量中的的命中率。系統(tǒng)運(yùn)行時(shí)通過(guò)輸入訪問(wèn)內(nèi)存的順序,以及分配的內(nèi)存頁(yè)面數(shù),來(lái)進(jìn)行二種算法的頁(yè)面置換,實(shí)現(xiàn)了虛擬存儲(chǔ)的功能和特點(diǎn)。2. 分析與設(shè)計(jì)2.1.系統(tǒng)功能模塊圖 圖4.1 頁(yè)式存儲(chǔ)管理模塊劃分 2.2.系統(tǒng)文件結(jié)構(gòu)描述 2.3.系統(tǒng)功能流程圖2

3、.4UI設(shè)計(jì)以及操作說(shuō)明:主窗體:#region 訪問(wèn)順序 private void btnSure_Click(object sender, EventArgs e) if (txtOrder.Text.Equals() MessageBox.Show(訪問(wèn)順序字符串不能為空!, 警告, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; order = txtOrder.Text; listBox1.Items.Clear(); string page = order.Split( ); foreach (string pg in

4、page) listBox1.Items.Add(pg); txtOrder.Text = ; allocation alca = new allocation(); this.Hide(); DialogResult d = alca.ShowDialog(); if (d = DialogResult.OK) this.Show(); btnAlloc.Enabled = true; btnFifo.Enabled = true; btnlru.Enabled = true; alpage = alca.page; #endregion輸入訪問(wèn)內(nèi)存順序,點(diǎn)擊確定:#region 確定內(nèi)存頁(yè)

5、分配 private void button1_Click(object sender, EventArgs e) if (textBox1.Text.Equals() MessageBox.Show(內(nèi)存頁(yè)面數(shù)不能為空!, 警告, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; page = Convert.ToInt32(textBox1.Text.Trim(); this.Close(); #endregion輸入分配內(nèi)存頁(yè)面數(shù),點(diǎn)擊確定:點(diǎn)擊FIFO置換:FIFO 算法:淘汰最先進(jìn)入的頁(yè)面,也就是淘汰進(jìn)入內(nèi)存中駐留時(shí)間最長(zhǎng)的

6、頁(yè)面,先進(jìn)先出。FIFO 計(jì)算#region 第二步,計(jì)算 /第二步,計(jì)算 /查看是否命中 for (fangwenyemianshu = 0; fangwenyemianshu cunchufangwenyemian.Length; fangwenyemianshu+) /對(duì)于某一列進(jìn)行處理 lie = fangwenyemianshu; if (lie = 0)/如果為第臺(tái)一列 cunchujisuanguocheng0, lie = Convert.ToInt32(cunchufangwenyemianlie); cunchushifoumingzhong0 = 0;/沒(méi)命中為a els

7、e /如果不為a第臺(tái)一列 shifoumingzhong = 0;/假設(shè)沒(méi)命中 for (hang = 0; hang alpage; hang+) if (cunchujisuanguochenghang, lie - 1 = Convert.ToInt32(cunchufangwenyemianlie) shifoumingzhong = hang + 1;/如果相同,則是否命中為命中位置 cunchushifoumingzhonglie = shifoumingzhong; if (lie != 0) if (shifoumingzhong != 0)/是否命中 /如?果命中,則不變 f

8、or (hang = 0; hang 0; hang-) cunchujisuanguochenghang,lie= cunchujisuanguochenghang - 1, lie - 1; cunchujisuanguocheng0,lie= Convert.ToInt32(cunchufangwenyemianlie); #endregionLRU 算法:最近久未使用的置換算法的替換規(guī)則,根據(jù)內(nèi)存調(diào)入頁(yè)面后的使用情況,該算法賦予頁(yè)面一個(gè)訪問(wèn)字段,用來(lái)記錄一個(gè)頁(yè)面自上次訪問(wèn)以來(lái)所經(jīng)過(guò)的時(shí)間,當(dāng)需要淘汰一個(gè)頁(yè)面時(shí)選擇現(xiàn)有頁(yè)面其時(shí)間值最大的進(jìn)行淘汰。Lru計(jì)算: for (int j = 0

9、; j alpage; j+)/行列小于分配內(nèi)存頁(yè)面時(shí),不需要淘汰頁(yè) for (int k = 0; k alpage; k+) for (fangwenyemianshu = 0; fangwenyemianshu ref_chars.Length; fangwenyemianshu+) lie = fangwenyemianshu; if (lie = 0)/如果為a第一列 cunchujisuanguocheng0, lie = Convert.ToInt32(ref_charslie); cunchushifoumingzhong0 = 0; else shifoumingzhong

10、= 0; for (hang = 0; hang alpage; hang+) if (cunchujisuanguochenghang, lie - 1 = Convert.ToInt32(ref_charslie) shifoumingzhong = hang + 1;/如果相同,則是否命中為a命中位置 cunchushifoumingzhonglie = shifoumingzhong; if (lie != 0) if (shifoumingzhong != 0)/是否命中 /如果命中,則不變 for (hang = 0; hang alpage; hang+) cunchujisua

11、nguochenghang, lie = cunchujisuanguochenghang, lie - 1; else /如果沒(méi)有命中,則向下移一位,新的進(jìn)來(lái)置換過(guò)程 for (hang = 0; hang alpage; hang+) cunchujisuanguochenghang, lie = cunchujisuanguochenghang, lie - 1; cunchujisuanguochenglie, lie = Convert.ToInt32(ref_charslie); bool flag = false; for (int loop = alpage; loop ref

12、_chars.Length; loop+)/需要淘汰頁(yè)時(shí)需要癮計(jì)算替換 flag = false; for (int i = 0; i alpage; i+) if (Phy_Blki.data = Convert.ToInt32(ref_charsloop) flag = true; if (flag)/不缺頁(yè),不置換,但是要計(jì)數(shù) for (int i = 0; i alpage; i+) cunchushifoumingzhongloop = i; Phy_Blki.count = 0; for (int l = 0; l i; l+) Phy_Blki.count+; for (int

13、k = i + 1; k alpage; k+) Phy_Blkk.count+; else/ 缺頁(yè),置換所有的頁(yè)都不相等 for (int i = 0; i alpage; i+) if (maxCount = Phy_Blki.count) Phy_Blki.data = Convert.ToInt32(ref_charsloop); cunchushifoumingzhongloop = 0; Phy_Blki.count = 0; hang = i; for (int l = 0; l hang; l+) Phy_Blkhang.count+; for (int k = hang +

14、1; k alpage; k+) Phy_Blkk.count+; for (int hang = 0; hang alpage; hang+) cunchujisuanguochenghang, loop = Convert.ToInt32(Phy_Blkhang.data); arryMaxhang = Phy_Blkhang.count; maxCount = max(arryMax); StringBuilder strFang = new StringBuilder(); for (lie = 0; lie fangwenyemianshu; lie+) strFang.Append

15、( + ref_charslie); txtFWYMS.Text = strFang.ToString(); DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn(); column.HeaderText = ref_charslie.ToString(); dataGridView1.Columns.Add(column); #endregion2.5.測(cè)試數(shù)據(jù)及期望輸入內(nèi)存順序 分配物理塊為:5 如 1 6 2 5 4 8 9 3 7 來(lái)計(jì)算缺頁(yè)率為100%如 3 4 5 6 7 2 1 8 缺頁(yè)率為85%,經(jīng)過(guò)比

16、較發(fā)現(xiàn) LRU算法比FIFO 更加適用3.系統(tǒng)測(cè)試輸入內(nèi)存訪問(wèn)順序?yàn)?1 6 2 5 4 8 9 3 7 分配頁(yè)面數(shù)為4FIFO和LRU缺頁(yè)率為100% 圖3.21 FIFO 頁(yè)面置換 圖 3.2 LRU 頁(yè)面置換4.總結(jié)心得體會(huì) 通過(guò)這次課程設(shè)計(jì), 使自己更加深刻了解了虛擬存儲(chǔ)管理的功能,以及如何實(shí)現(xiàn),對(duì)LRU和FIFO兩種算法也是理解更加徹底,鍛煉了自己的實(shí)踐能力。曾經(jīng)對(duì)LRU 以及LRU算法有些模糊,但是現(xiàn)在已經(jīng)完全區(qū)別開(kāi)?,F(xiàn)在對(duì)頁(yè)面機(jī)制以及計(jì)算機(jī)系統(tǒng)的虛擬存儲(chǔ)有了進(jìn)一步的認(rèn)識(shí),比起之前確實(shí)有了進(jìn)步。 另外,這次圖形用戶界面的程序設(shè)計(jì),讓我對(duì)平臺(tái)有了更加深入的了解,對(duì)winform程序開(kāi)

17、發(fā)有了產(chǎn)生了新的興趣。5.參考文獻(xiàn) 1.張蕘學(xué) 史美林 計(jì)算機(jī)操作系統(tǒng) 第三版 清華大學(xué)出版社2.湯小丹 湯子贏 計(jì)算機(jī)操作系統(tǒng)教程 西安電子科技大學(xué)出版社6.核心代碼FIFO:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace 請(qǐng)求分頁(yè)式存儲(chǔ)管理 public partial

18、class FIFO : Form #region 初始化 public FIFO() InitializeComponent(); #endregion #region 變量以及屬性 public string order get; set; public int alpage get; set; string cunchufangwenyemian; int, cunchujisuanguocheng = new int100, 100; int cunchushifoumingzhong = new int100; int lie, hang; int shifoumingzhong;

19、int fangwenyemianshu; int queyeshu; #endregion #region 窗體加載事件 private void FIFO_Load(object sender, EventArgs e) #region 第一步,初始化數(shù)據(jù) /第一步,初始化數(shù)據(jù) string f_order = order; int f_page = alpage; cunchufangwenyemian = f_order.Split( ); fangwenyemianshu = cunchufangwenyemian.Length; for (lie = 0; lie fangweny

20、emianshu; lie+)/初始化計(jì)算過(guò)程數(shù)組 for (hang = 0; hang f_page; hang+) cunchujisuanguochenghang, lie = -1; for (lie = 0; lie fangwenyemianshu; lie+)/初始化是否沒(méi)有命中數(shù)組 cunchushifoumingzhonglie = 0; #endregion #region 第二步,計(jì)算 /第二步,計(jì)算 /查看是否命中 for (fangwenyemianshu = 0; fangwenyemianshu cunchufangwenyemian.Length; fangw

21、enyemianshu+) /對(duì)于某一列進(jìn)行處理 lie = fangwenyemianshu; if (lie = 0)/如果為第一列 cunchujisuanguocheng0, lie = Convert.ToInt32(cunchufangwenyemianlie);/將頁(yè)面落下來(lái) cunchushifoumingzhong0 = 0;/沒(méi)命中為0 else /如果不為第一列 shifoumingzhong = 0;/假設(shè)沒(méi)命中 for (hang = 0; hang alpage; hang+) if (cunchujisuanguochenghang, lie - 1 = Conv

22、ert.ToInt32(cunchufangwenyemianlie) shifoumingzhong = hang + 1;/如果相同,則是否命中為命中位置 cunchushifoumingzhonglie = shifoumingzhong;/存儲(chǔ)命中位置 if (lie != 0) if (shifoumingzhong != 0)/是否命中 /如果命中,則不變 for (hang = 0; hang 0; hang-) cunchujisuanguochenghang, lie = cunchujisuanguochenghang - 1, lie - 1; cunchujisuang

23、uocheng0, lie = Convert.ToInt32(cunchufangwenyemianlie); #endregion #region 第三步,輸出 /第三步,輸出 StringBuilder strFang = new StringBuilder(); for (lie = 0; lie fangwenyemianshu; lie+) strFang.Append( + cunchufangwenyemianlie); txtFWYMS.Text = strFang.ToString(); DataGridViewTextBoxColumn column = new Data

24、GridViewTextBoxColumn(); column.HeaderText = cunchufangwenyemianlie.ToString(); dataGridView1.Columns.Add(column); /輸出cunchufangwenyemianlie /輸出計(jì)算過(guò)程 for (hang = 0; hang alpage; hang+) int index = dataGridView1.Rows.Add(); for (lie = 0; lie fangwenyemianshu; lie+) dataGridView1.Rowsindex.Cellslie.Val

25、ue = cunchujisuanguochenghang, lie.ToString(); if (dataGridView1.Rowsindex.Cellslie.Value.ToString() = -1) dataGridView1.Rowsindex.Cellslie.Value = *; /輸出 cunchujisuanguochenghang,lie; /輸出是否命中 StringBuilder strMing = new StringBuilder(); for (lie = 0; lie fangwenyemianshu; lie+) if (cunchushifouming

26、zhonglie.ToString() = 0) queyeshu+; strMing.Append( + cunchushifoumingzhonglie); txtQY.Text = strMing.ToString(); double num1 = Convert.ToDouble(queyeshu); double num2 = Convert.ToDouble(fangwenyemianshu); lbQueyelv.Text = Math.Round(num1 / num2) * 100), 2).ToString() + %; #endregion #endregion LRU:

27、using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace 請(qǐng)求分頁(yè)式存儲(chǔ)管理 public partial class LRU : Form #region 窗體初始化 public LRU() InitializeComponent(); #endregion #region 結(jié)構(gòu)體

28、定義頁(yè)面 public struct stPage/頁(yè)面定義 public int data;/數(shù)據(jù)項(xiàng) public int count;/計(jì)數(shù)項(xiàng) #endregion #region 變量以及屬性 public string order get; set; public int alpage get; set; int cunchushifoumingzhong = new int100; int, cunchujisuanguocheng = new int100, 100; int hang, lie; int shifoumingzhong; int fangwenyemianshu;

29、 int queyeshu; #endregion #region 判斷最大值的方法,用于判斷淘汰頁(yè) int max(int a)/判斷數(shù)組中的最大值 int max = 0; for (int i = 0; i max) max = ai; return max; #endregion #region 窗體加載事件 private void LRU_Load(object sender, EventArgs e) #region 第一步,初始化數(shù)據(jù) /第一步,初始化數(shù)據(jù) stPage Phy_Blk = new stPagealpage; string ref_chars = order.S

30、plit( ); int arryMax = new intalpage; int maxCount; fangwenyemianshu = ref_chars.Length; for (lie = 0; lie fangwenyemianshu; lie+)/初始化計(jì)算過(guò)程數(shù)組 for (hang = 0; hang alpage; hang+) cunchujisuanguochenghang, lie = -1; for (int i = 0; i alpage; i+)/物理塊數(shù)組初始化 Phy_Blki.data = Convert.ToInt32(ref_charsi); Phy_

31、Blki.count = 0; Phy_Blki.count += alpage - i - 1; arryMaxi = Phy_Blki.count; maxCount = max(arryMax); #endregion #region 第二步,計(jì)算 /第二步,計(jì)算 for (int j = 0; j alpage; j+)/行列小于分配內(nèi)存頁(yè)面時(shí),不需要淘汰頁(yè) for (int k = 0; k alpage; k+) for (fangwenyemianshu = 0; fangwenyemianshu ref_chars.Length; fangwenyemianshu+) /對(duì)于某

32、一列進(jìn)行處理 lie = fangwenyemianshu; if (lie = 0)/如果為第一列 cunchujisuanguocheng0, lie = Convert.ToInt32(ref_charslie);/將頁(yè)面落下來(lái) cunchushifoumingzhong0 = 0;/沒(méi)命中為0 else /如果不為第一列 shifoumingzhong = 0;/假設(shè)沒(méi)命中 for (hang = 0; hang alpage; hang+) if (cunchujisuanguochenghang, lie - 1 = Convert.ToInt32(ref_charslie) sh

33、ifoumingzhong = hang + 1;/如果相同,則是否命中為命中位置 cunchushifoumingzhonglie = shifoumingzhong;/存儲(chǔ)命中位置 if (lie != 0) if (shifoumingzhong != 0)/是否命中 /如果命中,則不變 for (hang = 0; hang alpage; hang+) cunchujisuanguochenghang, lie = cunchujisuanguochenghang, lie - 1;/將上一列復(fù)制過(guò)來(lái) else /如果沒(méi)有命中,則向下移一位,新的進(jìn)來(lái),置換過(guò)程 for (hang = 0; hang alpage; hang+) cunchujisuanguochenghang, lie = cunchujisuanguochenghang, lie - 1; cunchujisuanguochenglie, lie = Convert.ToInt32(ref_charslie); bool flag = false; for (int loop = alpage; loop ref_chars.Length; loop+)

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!