作業系統課程設計報告

2021-05-27 10:36:14 字數 2727 閱讀 1166

上海電力學院

計算機作業系統原理

課程設計報告

題目名稱: 編寫程式模擬虛擬儲存器管理

姓名: 杜志豪 .學號: 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...