上海電力學院
計算機作業系統原理
課程設計報告
題目名稱: 編寫程式模擬虛擬儲存器管理
姓名: 杜志豪 .學號: 20121798
班級: 2012053班
同組姓名: 孫嘉軼
課程設計時間: 2014.6.30——2014.7.4
評語成績
一、 設計內容及要求4
1. 1 設計題目4
1.2 使用演算法分析4
1.2.1 fifo演算法(先進先出淘汰演算法)……………… 4
1.2.2 lru演算法(最久未使用淘汰演算法)……………… 5
1. 2.3 opt演算法(最佳淘汰演算法5
1.3 分工情況5
二、 詳細設計6
2.1 原理概述6
2.2主要資料結構(主要**6
2.3演算法流程圖9
2.3.1 主流程圖9
2.3.2 optimal演算法流程圖10
2.3.3 fifo演算法流程圖10
2.3.4 lru演算法流程圖11
2.4.1源程式檔名11
2.4. 2執行檔名11
三、實驗結果與分析11
3.1 optimal頁面置換演算法結果與分析11
3.2 fifo頁面置換演算法結果與分析16
3.3 lru頁面置換演算法結果與分析20
四、設計創新點24
五、設計與總結27
六、**附錄27
課程設計題目
一、 設計內容及要求
1.1 編寫程式模擬虛擬儲存器管理。假設以m頁的程序分配了n塊記憶體(n輸入:設定系統分配的塊數,以及程序頁面引用序列(也可隨即產生)。
輸出:顯示每一次頁面引用記憶體狀態,最終顯示產生缺頁中斷的次數及頁面置換的次數(假設初始狀態記憶體沒有裝入任何頁面)。
必須分別使用以下置換演算法完成模擬:
(1) fifo頁面置換演算法;
(2) lru頁面置換演算法;
(3) 最佳(optimal)頁面置換演算法。
1.2 使用演算法分析:
1.2.1 fifo頁面置換演算法:
該演算法總是淘汰最先進入記憶體的頁面,即選擇在記憶體中駐留時間最久的頁面以淘汰。該演算法實現簡單,只需把乙個程序已調入記憶體的頁面,按照先後次序鏈結成乙個佇列,並設定乙個指標,稱為替換指標,使它總是指向最老的頁面。但該演算法並不是都適合實際情況,因為在程序中,有些頁面經常被訪問,比如,含有全域性變數、常用函式,例程等得頁面,fifo演算法並不能保證這些頁面不被淘汰。
1.2.2 lru頁面置換演算法:
最近最久未使用(lru)的頁面置換演算法是根據頁面調入記憶體後的使用情況進行決策的。由於無法**各頁面將來的使用情況,只能利用「最近的過去」作為「最近的將來」的近似,因此,lru置換演算法是選擇最近最久未使用的頁面予以淘汰。該演算法賦予每個頁面乙個訪問字段,用來記錄乙個頁面自上次被訪問以來所經歷的時間t,當須淘汰乙個頁面時,選擇有頁面中t值最大的,即最近最久為使用的頁面以淘汰。
1.2.3 最佳(optimal)頁面置換演算法:
optimal演算法是一種理論的演算法,其所選擇的被淘汰頁面將是以後永久不使用的,或許是在最長(未來)時間內不再被訪問的頁面。採用最佳置換演算法,通常可保證獲得最低的缺頁率。但由於人目前還無法預知乙個程序在記憶體的若干個頁面中,哪乙個頁面是未來最長時間內不再被訪問的,因而該演算法是無法實現的,便可以利用此演算法來評價其他演算法。
1.3 分工情況:共同討論並構思,杜志豪負責fifo和lru演算法的程式設計,孫嘉軼負責窗體介面和opt演算法的編寫。程式設計中遇到困難共同討論並解決。
二、 詳細設計
2.1 原理概述
定義乙個整型變數int buffer=0來記錄記憶體分塊數,定義乙個string 型別的演算法 string suanfa來選擇具體的演算法;用乙個陣列intxulie來儲存頁面序列,長度為20;用乙個陣列intkuai來儲存記憶體分配的物理塊個數,長度為5;用int s來記錄具體的步驟數,用int num來記錄頁面中斷次數。空白表示物理塊沒有被使用。
2.2 主要資料結構(**)結構體:
輸入的頁面序列號:
public form1() //輸入頁面序列號
private void fenkuai4_checkedchanged(object sender, eventargs e)
private void fenkuai5_checkedchanged(object sender, eventargs e)
private void fifon_checkedchanged(object sender, eventargs e) //演算法按鈕
private void lrun_checkedchanged(object sender, eventargs e)
private void optn_checkedchanged(object sender, eventargs e)
返回中斷次數:
public richtextbox text() //返回中端次數
public int num1()
public void clean() //清零函式
public class len //返回入塊頁面數
}結構體儲存佇列頁面相關變數引數:
int buffer = 0;//記憶體分塊數
string suanfa;//選擇演算法
int xulie = new int[20];//頁面序列
int kuai = new int[5];
int s = 0;//步驟數
作業系統課程設計報告
作業系統 課程設計報告 姓名吳昊學號 20091811042 系別資訊管理與工程系 專業電腦科學與技術班級 09級 課程設計題目模擬檔案管理系統 指導教師崔新會 小組成員吳昊 丁強強 辛夢娟 王放 周洋 2012 年 6 月 11 日 目錄 內容摘要 2 第一章引言 2 第二章需求分析 4 第三章系...
作業系統課程設計報告
課程設計說明書 設計名稱 作業系統課程設計 題目 檔案訪問介面設計 學生姓名 陳小浪 專業 電腦科學與技術 班級 12級1班 學號 2012314118 指導教師 任朝暉 日期 2014 年 9 月 15 日 課程設計任務書 電腦科學與技術專業年級班 一 設計題目 檔案訪問介面設計 二 主要內容 利...
作業系統課程設計報告
一 課程設計目的 1 程序排程是處理機管理的核心內容。2 本設計要求用c語言編寫和除錯乙個簡單的程序排程程式。3 通過設計本可以加深理解有關程序控制塊 程序佇列的概念,並體會和了解最高優先數優先的排程演算法 即把處理機分配給優先數最高的程序 和先來先服務演算法的具體實施辦法。二 課程設計主要內容 1...