作業系統第四次實驗

2021-09-23 18:17:18 字數 2145 閱讀 5741

​ 16281049 王晗煒 計科1601

實驗目的

基礎知識

程序執行時,若其訪問的頁面不在記憶體而需將其調入,但記憶體已無空閒空間時,就需要從記憶體中調出一頁程式或資料,送入磁碟的對換區。

選擇調出頁面的演算法就稱為頁面置換演算法。好的頁面置換演算法應有較低的頁面更換頻率,也就是說,應將以後不會再訪問或者以後較長時間內不會再訪問的頁面先調出。

工作集:多數程式都顯示出高度的區域性性,也就是說,在乙個時間段內,一組頁面被反覆引用。這組被反覆引用的頁面隨著時間的推移,其成員也會發生變化。有時這種變化是劇烈的,有時這種變化則是漸進的。我們把這組頁面的集合稱為工作集。

缺頁率 = 缺頁中斷次數/頁面訪問次數。

概要設計

演算法原理

最佳置換演算法(opt)

先進先出置換演算法(fifo)

最近最久未使用置換演算法(lru)

改進型clock置換演算法

頁面緩衝演算法(pba)

詳細設計

根據以上概要設計,我們逐個對函式具體實現。

最佳置換演算法函式(opt)

先進先出置換演算法函式(fifo)

最近最久未使用置換演算法函式(lru)

改良後的clock演算法函式

頁面緩衝演算法函式(pba)

實驗結果

經過各個演算法的模組化測試之後,我們可以發現各個函式的邏輯均正確無誤,下面我們編寫乙個整合測試函式來比較各個演算法的缺頁率和時間效能(為保證各個演算法的測試序列完全一致,我們這裡不使用隨機種子):

// 整體測試函式

void

evaluate()

隨後我們給出一組初始值,對以上四種演算法進行測試:引數值

n(虛擬記憶體的大小)

50len_memory(裝載頁面塊的大小)

8e(工作集中包含的頁數)

30m(工作集移動率)

10p(工作集的起始位置)

0t(p賦新值的閾值)

0.5我們將訪問序列的長度隨數量級依次增大,首先設定序列長度為100,測試結果如下:

設定序列長度為1000,測試結果如下:

設定序列長度為10000,測試結果如下:

設定序列長度為100000,測試結果如下:

設定序列長度為1000000,測試結果如下:

設定序列長度為10000000,測試結果如下:

設定序列長度為100000000,測試結果如下:

下面就其效能給出乙個總表進行總結:

缺頁率表

資料量optfifo

lruclock

1000.51

0.81

0.79

0.75

1000

0.478

0.729

0.725

0.744

10000

0.5014

0.7576

0.7548

0.7664

100000

0.50855

0.76512

0.76294

0.77068

1000000

0.507489

0.763852

0.7627

0.770681

10000000

0.507654

0.76249

0.763032

0.771027

100000000

0.5075

0.764118

0.762869

0.770879

花費時間表

資料量optfifo

lruclock

100300

0100041

231000081

13100000535

6271000000

45148

64240

10000000

4640

471633

2411

100000000

46569

4797

6462

25320

由以上我們可以得出一下結論:

作業系統第四次實驗 檔案系統

姓名 張越 班級 計算1811 學號 201821121006 1.編寫程式 在伺服器上用vim編寫乙個程式 實現linux系統命令ls lai的功能,給出源 關於ls lails l 以長格式顯示目錄下的內容列表。輸出的資訊從左到右依次包括檔名,檔案型別 許可權模式 硬連線數 所有者 組 檔案大小...

作業系統第四次作業

4.2 解 發生模式切換可以不改變正處於執行態的程序狀態,在這種情況下,儲存上下文環境和以後恢復上下文環境只需要很少的開銷,執行緒包含的狀態資訊更少 4.3解 資源所有權和排程執行 4.4.解 例如位址空間,檔案資源,執行特權等。problems 4.2解 因為對於使用者級執行緒來說,乙個程序的執行...

第四次實驗

一 問題及 檔名稱 陣列素數排序.cpp 作 者 周玉傑 完成日期 2017 年 4 月 10 日 版 本 號 v1.0 對任務及求解方法的描述部分 輸入描述 無 問題描述 將乙個陣列之中的素數存入另乙個陣列之中並使其排列 程式輸出 另乙個陣列排序前和排序後的樣子 問題分析 使用函式來分工 演算法設...