當前位置:首頁 » 操作系統 » 內存置換演算法

內存置換演算法

發布時間: 2023-01-17 21:30:11

『壹』 操作系統課程設計,用C#實現內存頁面的置換。實現演算法間比較

頁面置換演算法

一.題目要求:

通過實現頁面置換演算法的FIFO和LRU兩種演算法,理解進程運行時系統是怎樣選擇換出頁面的,對於兩種不同的演算法各自的優缺點是哪些。

要求設計主界面以靈活選擇某演算法,且以下演算法都要實現 1) 最佳置換演算法(OPT):將以後永不使用的或許是在最長(未來)時間內不再被訪問的頁面換出。

2) 先進先出演算法(FIFO):淘汰最先進入內存的頁面,即選擇在內存中駐留時間最久的頁面予以淘汰。

3) 最近最久未使用演算法(LRU):淘汰最近最久未被使用的頁面。 4) 最不經常使用演算法(LFU) 二.實驗目的:

1、用C語言編寫OPT、FIFO、LRU,LFU四種置換演算法。 2、熟悉內存分頁管理策略。 3、了解頁面置換的演算法。 4、掌握一般常用的調度演算法。 5、根據方案使演算法得以模擬實現。 6、鍛煉知識的運用能力和實踐能力。 三、設計要求

1、編寫演算法,實現頁面置換演算法FIFO、LRU;

2、針對內存地址引用串,運行頁面置換演算法進行頁面置換; 3、演算法所需的各種參數由輸入產生(手工輸入或者隨機數產生); 4、輸出內存駐留的頁面集合,頁錯誤次數以及頁錯誤率;

四.相關知識:

1.虛擬存儲器的引入:

局部性原理:程序在執行時在一較短時間內僅限於某個部分;相應的,它所訪問的存儲空間也局限於某個區域,它主要表現在以下兩個方面:時間局限性和空間局限性。

2.虛擬存儲器的定義:

虛擬存儲器是只具有請求調入功能和置換功能,能從邏輯上對內存容量進行擴充的一種存儲器系統。

3.虛擬存儲器的實現方式:

分頁請求系統,它是在分頁系統的基礎上,增加了請求調頁功能、頁面置換功能所形成的頁面形式虛擬存儲系統。

請求分段系統,它是在分段系統的基礎上,增加了請求調段及分段置換功能後,所形成的段式虛擬存儲系統。

4.頁面分配:

平均分配演算法,是將系統中所有可供分配的物理塊,平均分配給各個進程。 按比例分配演算法,根據進程的大小按比例分配物理塊。

考慮優先的分配演算法,把內存中可供分配的所有物理塊分成兩部分:一部分按比例地分配給各進程;另一部分則根據個進程的優先權,適當的增加其相應份額後,分配給各進程。

5.頁面置換演算法:

常用的頁面置換演算法有OPT、FIFO、LRU、Clock、LFU、PBA等。 五、設計說明

1、採用數組頁面的頁號

2、FIFO演算法,選擇在內存中駐留時間最久的頁面予以淘汰;

分配n個物理塊給進程,運行時先把前n個不同頁面一起裝入內存,然後再從後面逐一比較,輸出頁面及頁錯誤數和頁錯誤率。

3、LRU演算法,根據頁面調入內存後的使用情況進行決策;

同樣分配n個物理塊給進程,前n個不同頁面一起裝入內存,後面步驟與前一演算法類似。

選擇置換演算法,先輸入所有頁面號,為系統分配物理塊,依次進行置換: 六.設計思想:

OPT基本思想:

是用一維數組page[pSIZE]存儲頁面號序列,memery[mSIZE]是存儲裝入物理塊中的頁面。數組next[mSIZE]記錄物理塊中對應頁面的最後訪問時間。每當發生缺頁時,就從物理塊中找出最後訪問時間最大的頁面,調出該頁,換入所缺的頁面。

FIFO基本思想:

是用隊列存儲內存中的頁面,隊列的特點是先進先出,與該演算法是一致的,所以每當發生缺頁時,就從隊頭刪除一頁,而從隊尾加入缺頁。或者藉助輔助數組time[mSIZE]記錄物理塊中對應頁面的進入時間,每次需要置換時換出進入時間最小的頁面。

LRU基本思想:

是用一維數組page[pSIZE]存儲頁面號序列,memery[mSIZE]是存儲裝入物理塊中的頁面。數組flag[10]標記頁面的訪問時間。每當使用頁面時,刷新訪問時間。發生缺頁時,就從物理塊中頁面標記最小的一頁,調出該頁,換入所缺的頁面。 七.流程圖:

如下頁所示

六.運行結果: 1. 按任意鍵進行初始化:

2. 載入數據:

3. 進入置換演算法選擇界面:

4.運算中延遲操作:

5.三種演算法演示結果:

『貳』 請簡述什麼是置換演算法和替代演算法,並分別給出置換演算法和替代演算法的實例

LRU是Least Recently Used的縮寫,即最近最少使用頁面置換演算法,是為虛擬頁式存儲管理服務的。
LRU演算法的提出,是基於這樣一個事實:在前面幾條指令中使用頻繁的頁面很可能在後面的幾條指令中頻繁使用。反過來說,已經很久沒有使用的頁面很可能在未來較長的一段時間內不會被用到。這個,就是著名的局部性原理——比內存速度還要快的cache,也是基於同樣的原理運行的。因此,我們只需要在每次調換時,找到最近最少使用的那個頁面調出內存。這就是LRU演算法的全部內容。
這是一個相當好的演算法,它是理想演算法很好的近似。

『叄』 虛擬內存 (頁面置換演算法的模擬實現)

問計算機老師去

『肆』 請分別給出三種不同的頁面置換演算法,並簡要說明他們的優缺點

[fifo.rar]
-
操作系統中內存頁面的先進先出的替換演算法fifo
[先進先出頁面演算法程序.rar]
-
分別實現最佳置換演算法(optimal)、先進先出(fifo)頁面置換演算法和最近最久未使用(LRU)置換演算法,並給出各演算法缺頁次數和缺頁率。
[0022.rar]
-
模擬分頁式虛擬存儲管理中硬體的地址轉換和缺頁中斷,以及選擇頁面調度演算法處理缺頁中斷
[Change.rar]
-
java實現操作系統的頁面置換
其中包括
最佳置換演算法(Optimal)、先進先出演算法(First-in,
First-out)
、最近最久不用的頁面置換演算法(LeastRecently
Used
Replacement)三種演算法的實現
[M_Management.rar]
-
操作系統中內存管理頁面置換演算法的模擬程序,採用的是LRU置換演算法
[detail_of_44b0x_TCPIP.rar]
-
TCPIP
程序包載入到44b0x
的ADS1.2工程文件的說明書。說名了載入過程的細節和如何處理演示程序和代碼。演示代碼已經上傳,大家可以搜索
[.rar]
-
java操作系統頁面置換演算法:
(1)進先出的演算法(fifo)
(2)最近最少使用的演算法(LRU)
(3)最佳淘汰演算法(OPT)
(4)最少訪問頁面演算法(LFU)
(註:由本人改成改進型Clock演算法)
(5)最近最不經常使用演算法(NUR)

『伍』 lru演算法是什麼呢

LRU演算法是最少使用頁面置換演算法(Least Recently Used),首先置換近期最長時間以來沒被訪問的頁面,是為虛擬頁式存儲管理服務的。

LRU演算法的設計原則是:如果一個數據在最近一段時間沒有被訪問到,那麼在將來它被訪問的可能性也很小。也就是說,當限定的空間已存滿數據時,應當把最久沒有被訪問到的數據淘汰。

LRU原理

該思想最初用於計算機操作系統中,內存中的容量較有限,為了能更加合理的利用內存中的性能,對用戶的使用作出假設,最近最少使用的越不重要,最近使用的越有可能使用到,使得該元素更容易獲取到。

如果元素當前容量超過了內存最大容量,則需要刪除掉最近最少使用的元素。在其之後,許多緩存及許多分布式系統都採用才思想。

『陸』 內存頁面置換演算法代碼

沒有仔細看,但發現了一個很容易發生的錯誤,即函數參數的傳遞問題。
Init()的最後一句insert(node,head),因為C語言里函數參數採用值傳遞,那麼insert函數執行前head為NULL,執行時,程序會生成一個臨時的值為NULL的指針變數作為參數來處理,函數執行完後,head仍為NULL,沒有任何改變。因此,就算循環執行了20次,head仍為NULL.

『柒』 FIFO調度演算法和LRU演算法

FIFO:先進先出調度演算法
LRU:最近最久未使用調度演算法

兩者都是緩存調度演算法,經常用作內存的頁面置換演算法。

打一個比方,幫助你理解。

你有很多的書,比如說10000本。
由於你的書實在太多了,你只能放在地下室裡面。
你看書的時候不會在地下室看書,而是在書房看書。
每次,你想看書都必須跑到地下室去找出來你想看的書,
然後抱回來放到書桌上,之後才開始看。
還有就是,有一些書你會反復的看,今天看了也許過幾天又要看。
總之,你自己是不知道你哪天會需要看哪本書的。
你的老師每天下課的時候會給你布置一個書單,讓你晚上回去去看哪本書。
(假設你老師讓你看的書在你的地下室裡面都有)

跑地下室當然是非常麻煩的,所以你希望你的經常看的那些書最好放在書桌上。
但是你的書房的書桌同時只能擺放10本書(這個是假設的啊)。
那麼,問題來了。
到底把哪些說留在書桌上最好呢?
這里說的最好,就是說你盡量少的跑地下室去找書。

為了解決這個問題,人們發明了很多的演算法。
其中,比較常見的就是上面這兩種:FIFO演算法和LRU演算法。

FIFO演算法
很簡單,我把書桌上的10本書按照放置時間先後堆放成一堆。
這里的放置時間,就是說這本書在我的書桌上放了幾天了。
每次要看書的時候,我先在書桌上找,找到就直接可以讀了。
讀完之後放回原來的位置就可以,不打亂順序。
如果書桌上面沒有我要讀的書,就去地下室找。
找來之後,我就把書桌上放的時間最長的那本(也就是
書堆裡面最下面的那本書)放回地下室。
然後把我今天需要看的這本書放在書堆的最上面。

LRU演算法
也不難,我把書桌上的10本書按照閱讀時間先後堆放成一堆。
這里的閱讀時間,就是說我最近一次讀這本書是幾天之前。
每次要看書的時候,我先在書桌上找,找到就直接可以讀了。
讀完之後放在書堆的最上面。
如果書桌上面沒有我要讀的書,就去地下室找。
找來之後,我就把書桌上最久沒有閱讀的那本
(也就是書堆裡面最下面的那本書)放回地下室。
然後把我今天需要看的這本書放在書堆的最上面。

上面這個比方,相信你可以看明白吧。
這里的地下室對應內存,書桌對應緩存,書對應頁面。

『捌』 採用首次適應演算法和最優置換演算法,對內存的分配和回收速度會造成什麼不同的影響

首次適應分配演算法(FF):
對空閑分區表記錄的要求是按地址遞增的順序排列的,每次分配時,總是從第1條記錄開始順序查找空閑分區表,找到第一個能滿足作業長度要求的空閑區,分割這個空閑區,一部分分配給作業,另一部分仍為空閑區。
最佳置換演算法(OPT):
選擇以後永不使用或在最長時間內不再被訪問的內存頁面予以淘汰。

『玖』 FIFO和LRU置換演算法的問題

FIFO 先進先出
-------------
剛開始內存為空 null, null, null
使用2,缺頁讀入 2, null, null
使用3,缺頁讀入 2, 3, null
使用2,直接使用 2, 3, null
使用1,缺頁讀入 2, 3, 1
使用5,缺頁讀入 3, 1, 5 因為2是最先讀入的,所以就把它刪掉
使用2,缺頁讀入 1, 5, 2
使用4,缺頁讀入 5, 2, 4
使用5,直接使用 5, 2, 4
使用3,缺頁讀入 2, 4, 3
使用2,直接使用 2, 4, 3
使用5,缺頁讀入 4, 3, 5
使用2,缺頁讀入 3, 5, 2

共9次缺頁
========================

LRU 會刪除最不常訪問的
----------------------
剛開始內存為空 null, null, null
使用2,缺頁讀入 2, null, null
使用3,缺頁讀入 3, 2, null
使用2,直接使用 2, 3, null
使用1,缺頁讀入 1, 2, 3
使用5,缺頁讀入 5, 1, 2 因為最近1和2都訪問過而3是很早之前用過的,所以就把它刪掉
使用2,直接使用 2, 5, 1
使用4,缺頁讀入 4, 2, 5
使用5,直接使用 5, 4, 2
使用3,缺頁讀入 3, 5, 4
使用2,缺頁讀入 2, 3, 5
使用5,直接使用 5, 2, 3
使用2,直接使用 2, 5, 3

共7次缺頁

『拾』 虛擬存儲器採用的頁面調度演算法是「先進先出」(FIFO)演算法嗎

虛擬存儲器採用的頁面調度演算法是「先進先出」(FIFO)演算法嗎。常見的替換演算法有4種。

①隨機演算法:用軟體或硬體隨機數產生器確定替換的頁面。

②先進先出:先調入主存的頁面先替換。

③近期最少使用演算法(LRU,Least Recently Used):替換最長時間不用的頁面。

④最優演算法:替換最長時間以後才使用的頁面。這是理想化的演算法,只能作為衡量其他各種演算法優劣的標准。

虛擬存儲器的效率是系統性能評價的重要內容,它與主存容量、頁面大小、命中率,程序局部性和替換演算法等因素有關。

(10)內存置換演算法擴展閱讀

虛擬存儲器地址變換基本上有3種形虛擬存儲器工作過程式:全聯想變換、直接變換和組聯想變換。任何邏輯空間頁面能夠變換到物理空間任何頁面位置的方式稱為全聯想變換。每個邏輯空間頁面只能變換到物理空間一個特定頁面的方式稱為直接變換。

組聯想變換是指各組之間是直接變換,而組內各頁間則是全聯想變換。替換規則用來確定替換主存中哪一部分,以便騰空部分主存,存放來自輔存要調入的那部分內容。

在段式虛擬存儲系統中,虛擬地址由段號和段內地址組成,虛擬地址到實存地址的變換通過段表來實現。每個程序設置一個段表,段表的每一個表項對應一個段,每個表項至少包括三個欄位:有效位(指明該段是否已經調入主存)、段起址(該段在實存中的首地址)和段長(記錄該段的實際長度)。

熱點內容
伺服器怎麼設置電腦遠程埠 發布:2025-07-03 16:28:46 瀏覽:72
電信無線路由器官方密碼是什麼 發布:2025-07-03 16:25:00 瀏覽:773
空間只能申請訪問 發布:2025-07-03 16:23:27 瀏覽:735
華碩天選2air配置如何選擇 發布:2025-07-03 16:10:09 瀏覽:571
asp搜索源碼 發布:2025-07-03 15:49:55 瀏覽:235
醫美大資料庫 發布:2025-07-03 15:47:07 瀏覽:357
c語言將二進制轉化為十進制 發布:2025-07-03 15:32:47 瀏覽:988
c語言幫助文檔 發布:2025-07-03 15:22:43 瀏覽:320
雙埠存儲器在情況下會發生讀寫沖突 發布:2025-07-03 15:12:54 瀏覽:271
快站資料庫 發布:2025-07-03 14:45:44 瀏覽:40