作業系統頁面置換課程設計

2022-10-04 14:18:03 字數 2552 閱讀 6887

數學與計算機學院

課程設計說明書

課程名稱: 作業系統原理-課程設計

課程**

題目: 頁面置換演算法模擬程式

年級/專業/班:

學生姓名

學號開始時間: 2010 年月日

完成時間: 2011 年月日

課程設計成績:

指導教師簽名年月日

目錄 1 引言 1

1.1 問題的提出 1

1.2國內外研究的現狀 1

1.3任務與分析 2

2需求分析 2

3開發平台 2

3.1 開發工具 2

3.1 開發語言 2

4概要設計 3

4.1 總體設計框圖 3

5詳細設計 4

5.1**分析結果 6

5.11 資料結構 6

5.12 fifo具體函式及設計實現 6

5.13lru具體函式及設計實現 9

5.14呼叫關係圖 14

6測試 14

6.1進入介面及產生頁面走向 14

6.2fifo演算法及檢視結果 15

6.3lru演算法及檢視結果 16

6.4繼續進入主介面及產生頁面走向 16

6.5排程演算法及結果 17

7 總結與體會 18

參考文獻 19

摘要在位址對映過程中,若在頁面中發現所要訪問的頁面不再記憶體中,則產生缺頁中斷。當發生缺頁中斷時作業系統必須在記憶體選擇乙個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的規則叫做頁面置換演算法。

在程序執行過程中,若其所要訪問的頁面不在記憶體需把它們調入記憶體,但記憶體已無空閒空間時,為了保證該程序能正常執行,系統必須從記憶體中調出一頁程式或資料,送磁碟的對換區中。但應將哪個頁面調出,所以需要根據一定的演算法來確定。

常用的演算法有先進先出置換演算法(fifo), 最近最久未使用置換演算法(lru)和最佳置換演算法(opt),該設計是在vc++6.0環境下分別用lru和fifo來實現頁面置換演算法的模擬程式,並測試。

關鍵詞:作業系統; 頁面置換演算法模擬; 程序排程; fifo; lru

隨著硬體技術的發展,各式各樣的大容量儲存裝置相繼出現,一台計算機上可能存在多種外儲存裝置。不同儲存裝置有著不同的讀寫速度,同一種裝置的讀寫速度有可能也會相差很大。因此在多種具有不同讀寫速度的外儲存裝置的環境下,選擇一種合適的頁面淘汰演算法,對整個系統的效能會有很大的提高。

在程序執行過程中,若其所要訪問的頁面不在記憶體需把它們調入記憶體,但記憶體已無空閒空間時,為了保證該程序能正常執行,系統必須從記憶體中調出一頁程式或資料,送磁碟的對換區中。但應將哪個頁面調出,所以需要根據一定的演算法來確定。如果能夠很好的使用頁面置換將大大節省記憶體的額外開銷。

2023年belady在理論上提出最優頁面置換演算法(opt),此外還有先進先出(fifo),最少使用置換演算法(lru)。不同儲存裝置有著不同的讀寫速度,同一種裝置的讀寫速度有可能也會相差很大。因此在多種具有不同讀寫速度的外儲存裝置的環境下,選擇一種合適的頁面淘汰演算法,對整個系統的效能會有很大的提高。

本課題主要的目的是編制頁面置換演算法fifo和lru的模擬程式,並模擬其在記憶體的分配過程。同時根據頁面走向,分別採用fifo和lru演算法進行頁面置換,統計缺頁率;為簡化操作,在淘汰一頁時,只將該頁在頁表中抹去,而不再判斷它是否被改寫過,也不將它寫回到輔存。

本程式實現了作業系統中頁式虛擬儲存管理中缺頁中斷理想型淘汰演算法,該演算法在訪問串中將來再也不出現的或是在離當前最遠的位置上出現的頁淘汰掉。這樣,淘汰掉該頁將不會造成因需要訪問該頁又立即把它調入的現象。該程式能按要求隨機確定記憶體大小,隨機產生頁面數,程序數,每個程序的頁數,給程序分配的頁數等,然後運用理想型淘汰演算法對每個程序進行計算缺頁數,缺頁率,被淘汰的序列等功能。

vc++6.0

vc++語言

圖5.1詳細設計框圖

圖5.2為置換方法的流程圖

int m, int need,int n, result[10][20],int state,int count1;

fifo流程圖

有不在在fifo函式實現

void fifo(int m, int need,int n) //m分配物理頁面大小,n需要頁面陣列的最大值

while(n>=p)

}int f1=0;

//首先看是否有空位置或者已經存在請求的頁面

for(int i =0;i<=m;i++)

else if(result[i][p]==k)

}if(f1==1) continue;

//這裡發生替換

result[del][p]=k;

count1[p]=k;

count=count+1;

p=p+1;

del=(del+1)%(m+1);

} cout< for(int t3=0;t3<=n;t3++)//輸出原來的頁面

cout< cout< for(int t0 =0;t0<=m;t0++)//判斷頁表是否填滿

{ for(int t1=0;t1<=n;t1++)

模擬作業系統的頁面置換

院系 計算機學院 實驗課程 計算機作業系統實驗 實驗名稱 模擬作業系統的頁面置換 指導老師 陳紅英 開課時間 2011 2012年度第 2學期 專業 網路工程 班級 10 級5班 學生 袁沛權 學號 20102100109 華南師範大學教務處 實驗二模擬作業系統的頁面置換 一 實驗目的 1 通過這次...

作業系統課程設計指導

一 本課程的教學目的及基本要求 1 教學目的 作業系統課程設計是作業系統課程的重要實踐環節,是作業系統課程內實驗的有益補充,它旨在培養學生的實踐能力,促進理論與實踐的結合。要求學生通過上機程式設計,了解如何模擬作業系統原理的實現,從而加深對作業系統原理的領會,加深對作業系統實現方法的理解,與此同時使...

作業系統課程設計報告

上海電力學院 計算機作業系統原理 課程設計報告 題目名稱 編寫程式模擬虛擬儲存器管理 姓名 杜志豪 學號 20121798 班級 2012053班 同組姓名 孫嘉軼 課程設計時間 2014.6.30 2014.7.4 評語成績 一 設計內容及要求4 1.1 設計題目4 1 2 使用演算法分析4 1 ...