第四部分 作業系統-虛擬記憶體
一、起因
記憶體相對於暫存器速度慢,所以記憶體和暫存器之間有 cache
硬碟比記憶體容量大,但是速度慢
磁帶比硬碟容量還大
計算機系統中,尤其是多道程式執行下記憶體不夠用
二、覆蓋技術
1、目標
較小的可用記憶體中執行較大的程式。常用於多道程式系統,與分割槽儲存管理配合使用
2、原理
- 程式劃分為獨立程式模組
- 共享記憶體、分時執行
- 常用功能常駐記憶體、不常用功能放於外存
3、缺點
覆蓋模組從外存裝入記憶體,實際上是以時間延長換取空間節省
三、交換技術
1、目標
多道程式在記憶體中時,讓正在執行的程式或需要執行的程式獲得更多的記憶體資源
2、原理
暫時不能執行的程式送到外存
3、存在的問題
- 交換時機的確定:只當記憶體空間不夠或者有不夠的危險時
- 交換區的大小:足夠存放程序的所有記憶體映像的拷貝;能對這些記憶體映像直接存取
- 程式換入時的重定位:動態地址對映
4、與覆蓋技術的區別
覆蓋:發生在一個程式裡,程式設計師需要手動指定邏輯關係;
交換:發生在程式之間,由作業系統內部完成,不需要程式設計師設定
四、虛存技術
1、目標
覆蓋技術做的更好:由作業系統自動完成
交換技術做的更好:只對程序的部分內容在記憶體和外存之間進行交換
2、程式的區域性性原理
- 時間區域性性:連續兩次訪問集中在一個較短時期
- 空間區域性性:訪問的資料在較近的區域
3、基本概念
可以在頁式或段式記憶體管理的基礎上實現
- 需要執行的部分頁面或者段裝入到記憶體
- 執行過程中,將尚未在記憶體但是須執行的程式調入到記憶體
- 記憶體中暫時不使用的頁面或段儲存在外存
4、基本特徵
- 大的使用者空間:實體記憶體和外存相結合
- 部分交換:部分虛擬地址空間進行的
- 不連續性:實體記憶體分配的不連續,虛擬地址空間使用的不連續
5、實現 —— 虛擬頁式儲存管理
(1)頁表
- 完成邏輯頁到物理頁幀的對映
(2)虛擬頁式儲存管理技術
- 在頁式儲存管理的基礎上增加請求調頁和頁面置換功能
- 執行過程中程式或者要訪問的資料不在記憶體中,則向系統發出缺頁中斷請求
- 系統在處理這個中斷時,將外存中相應頁面調入記憶體,使得程式繼續執行
(3)頁表表項
- 駐留位:表示該頁是在記憶體還是外存
- 保護位:表示允許對該頁做何種型別的訪問
- 修改位:該頁在記憶體中是否被修改過(決定是否把它的內容寫回外存)
- 訪問位:該頁面被訪問過則設定此位(用於頁面置換演算法)
(4)缺頁中斷
(5)後備儲存
- 一個虛擬地址空間的頁面可以被對映到一個檔案(在二級儲存中)的某個位置
- 程式碼段:對映到可執行二進位制檔案
- 動態載入的共享庫程式段:對映到動態呼叫的庫檔案
- 其他段:可能被對映到交換檔案
五、頁面置換演算法
1、功能
當缺頁中斷髮生,需要調入新的頁面而記憶體已滿時,選擇記憶體中哪個物理頁面被置換
2、目標
儘可能地減少頁面的換進換出次數(即缺頁中斷的次數)
3、最優頁面置換演算法(區域性頁面置換演算法1)
(1)基本思路:距離下一次訪問等待時間最長的邏輯頁面作為置換的頁面
(2)理想情況,可作為其他演算法的效能評價的依據
4、先進先出演算法FIFO(區域性頁面置換演算法2)
(1)基本思路
- 選擇在記憶體中駐留時間最長的頁面並淘汰之
- 當發生一個缺頁中斷時,把鏈首頁面淘汰出去,把新的頁面新增到連結串列的末尾
(2)效能較差,並且有 belady 現象
5、最近最久未使用演算法 LRU(區域性頁面置換演算法3)
(1)基本思路
選擇最久未使用的那個頁面,並淘汰之
(2)最優頁面置換演算法的近似,基於程式的區域性性原理
(3)LRU 演算法需要記錄各個頁面使用時間的先後順序,開銷比較大
(4)實現方法
- 系統維護一個頁面連結串列
- 設定一個活動頁面棧
6、時鐘頁面置換演算法(區域性頁面置換演算法4)
基本思路:
(1)LRU的近似,FIFO的改進
(2)裝入記憶體頁面的頁表項的訪問位初始化為0,被訪問置為1;各個頁面組織成環形連結串列,指標指向最老頁面
7、二次機會法
(1)修改 clock 演算法,使它允許髒頁總是在一次時鐘頭掃描中保留下來,同事使用髒位和使用位來指導置換
(2)Enhanced Clock algorithm
used | dirty | used | dirty | |
---|---|---|---|---|
0 | 0 | —> | replace page | |
0 | 1 | —> | 0 | 0 |
1 | 0 | —> | 0 | 0 |
1 | 1 | —> | 0 | 1 |
8、最不常用演算法 LFU(區域性頁面置換演算法5)
(1)基本思路
當一個缺頁中斷髮生時,選擇訪問次數最少的那個頁淘汰之
(2)實現方法
對每個頁面設定一個訪問計數器,每當一個頁面被訪問時,該頁面的訪問計數器加一。在發生缺頁中斷時,淘汰技術值最小的那個頁面
(3)LRU和LFU的區別
LRU考察的是多久未訪問,時間越短越好;而LFU考察的是訪問的次數或頻度,訪問次數越多越好
9、Belady 現象
(1)現象
在採用 FIFO 演算法時,有時會出現分配的物理頁面數增加,缺頁率反而提高的異常現象
(2)原因
FIFO 演算法的置換特徵與程序訪問記憶體的動態特徵是矛盾的,與置換演算法的目標是不一致的(即替換較少使用的頁面)
因此,被它置換出去的頁面並不一定是程序不會訪問的
(3)LRU頁面置換演算法沒有Belady現象
10、LRU、FIFO、Clock 的比較
(1)LRU、FIFO 本質上都是先進先出的思路
(2)LRU 是針對頁面的最近訪問時間來排序、開銷大
(3)FIFO 是針對頁面進入記憶體的時間來排序、開銷小
(4)如果一個頁面進入記憶體後沒有被訪問,那麼它的最近訪問時間就是它進入記憶體的時間。即 LRU 退化為 FIFO