操作系统 - 虚拟存储管理技术之虚拟页式存储管理
?
一、請求分頁式存儲管理的基本思想
請求分頁式存儲管理是基于分頁式存儲管理的一種虛擬存儲器
1. 相同點
a. 把內存空間劃分成尺寸相同、位置固定的塊
b. 按照內存塊大小,把作業的虛擬地址空間(相對地址空間)劃分成頁(劃分過程對用戶透明)
c. 虛擬地址空間中的一頁可以裝入到內存中的任何一塊中
2. 不同點
a. 作業全部進入輔存,運轉時,并不把整個作業程序一起都裝入到內存,只裝入目前要用的若干頁
b. 運行過程中,虛擬地址被轉換成(頁號,頁內偏移)
c. 根據頁號查頁表,如果該頁不在內存中,就沒有具體的塊號與之對應,表明“缺頁”,運行無法繼續,此時,要根據頁號把它從輔存中調入內存
d.?所謂請求分頁式,是指當程序運行中需要某一頁時,再把它從輔存中調入內存使用
3. 其他
用戶的虛擬地址空間可以很大,不受內存尺寸約束
二、頁表表目的擴充
在請求分頁式存儲管理中:通過“缺頁中斷位”判斷所需要的頁是否在內存中
頁的表項包括:頁號、塊號、缺頁中斷位、輔存地址、引用位、改變位
頁號:虛擬地址空間中的頁號
塊號:該頁所占內存的塊號
缺頁中斷位:1 表示在內存中,0 表示不在內存中,為 0 時會發生“缺頁”中斷信號,請求系統處理
輔存地址:該頁內容存放在輔存中的地址,缺頁時,缺頁中斷處理根據它的指點,將所缺的頁調入內存
引用位:在系統規定的時間間隔內,該頁是否被引用過(在頁面淘汰算法中使用)
改變位:0 表示頁面在內存時數據未被修改,1 表示被修改過。當頁面被選為淘汰對象時,根據此為的取之來確定是否要將該頁的內容進行磁盤回寫操作
三、缺頁中斷的處理
1. 處理過程
a. 根據當前執行指令中的虛擬地址,形成(頁號,頁內偏移),用頁號查頁表,判斷該頁是否在內存中
b. 如該頁的缺頁中斷位為 0,表示該頁面不在內存,于是產生缺頁中斷,讓操作系統的中斷處理程序進行中斷處理
c. 中段處理程序查詢存儲分塊表,尋找一個空閑的內存塊;查詢頁表,得到該頁在輔存中的地址,啟動磁盤讀信息
d. 把從磁盤上讀出的信息裝入到分配的內存塊中
e. 根據分配存儲快的信息,修改頁表、存儲分塊表中相應表目的信息
f. 由于產生缺頁中斷的那條指令并未執行,所以在完成所需頁面的裝入工作后,應該返回原指令重新執行
2. 缺頁中斷與一般中斷的區別
a. 缺頁中斷時在執行一條指令中間時產生的中斷,并立即轉去處理;一般中斷則是在一條指令執行完畢之后,當發現有中斷請求時再去響應和處理
b. 缺頁中斷處理執行完畢之后,仍返回到原指令處重新執行;一般終端則是返回到下一跳指令去執行
四、調頁方式
主要分為:請調和預調兩種,請調為主,預調為輔
1. 請調
發生缺頁時,終端請求調入此頁
2. 預調
作業最初被調入運行時,通常是預先將相應的第一頁裝入內存,而所需的其他各頁,按照請求順序裝入
五、頁面淘汰算法
頁面走向:一個程序執行過程中頁號的變化序列
頁面淘汰問題:發生缺頁時,需要從輔存上把所需要的頁面調入內存,而當時內存中又沒有空閑塊,需要選擇一個頁面調出內存
抖動(顛簸):一個剛被淘汰出去的頁面,不久又要訪問,又把它從輔存調入內存,調入不久后又被淘汰......如此反復的調入調出,整個系統一直陷于頁面的調入調出,大部分時間都用在處理缺頁中斷和頁面淘汰中
抖動使得整個系統的效率低下,應極力避免
如果淘汰的頁面在內存中修改過,必須把它寫回到磁盤,以便更新該頁在輔存上的副本
1. 先進先出頁面淘汰算法(FIFO)
做法:淘汰最早進入內存的頁面
FIFO 算法認為:隨著時間的推移,在內存中待的時間最長的頁面,被訪問的可能性最小
實際中:有可能把經常要訪問的頁面淘汰出去
2. 最近最久未使用頁面淘汰算法(Least Recently Used,LRU)
做法:淘汰最長時間未被訪問的頁面
這是一種基于局部性原理的淘汰算法
LRU 算法認為:如果一個頁面剛被訪問過,那么不久的將來被訪問的可能性就大
3. 最近最少使用頁面淘汰算法(Least Frequently Used,LFU)
做法:淘汰當前使用的最少的頁面
著眼點在于頁面的使用頻率
LFU 算法認為:在一段時間內使用得最多的頁面,將來用到的可能性就大
要實現 LFU 算法,應該為內存中每一個頁面設置一個計數器,對某個頁面每訪問一次計數器加一,過一段時間,所有計數器清零
提示:LRU和LFU是不同的!
LRU是最近最少使用頁面置換算法(Least Recently Used),也就是首先淘汰最長時間未被使用的頁面!
LFU是最近最不常用頁面置換算法(Least Frequently Used),也就是淘汰一定時期內被訪問次數最少的頁!
如果每分鐘進行一次調頁,主存塊為3,若所需頁面走向為2 1 2 1 2 3 4
注意,當調頁面4時會發生缺頁中斷
若按LRU算法,應換頁面1(1頁面最久未被使用) 但按LFU算法應換頁面3(整個時間內,頁面3只使用了一次,而2使用3次,1使用2次)。
可見LRU關鍵是看頁面最后一次被使用到發生調度的時間長短,
而LFU關鍵是看一定時間段內頁面被使用的頻率!
4. 最優頁面淘汰算法(Optimd,OPT)
做法:把以后不再使用的或在最長時間內不會用到的頁面淘汰出去
前提:已知作業運行時的頁面走向
因為其苛刻的前提條件:沒有實用價值,只能用來做一個標尺
5. FIFO 頁面淘汰算法的異長現象
有若干因素會影響缺頁中斷的發生次數,例如:分配給作業的內存塊數
一般情況:分配給作業的內存塊數增多,發生缺頁中斷的可能性就下降
FIFO 的異常現象:對于 FIFO 算法,有時增加分配給作業的內存塊數,它的缺頁中斷次數反而上升
FIFO 算法并不總是產生異長現象,它和頁面走向有關
六、缺頁中斷率
1. 定義
假設一個作業運行的頁面走向中涉及到的頁面總數為 A,其中有 F 次缺頁,必須通過缺頁中斷把他們調入內存
缺頁中斷率:f = F/A
2. 影響缺頁中斷次數的因素
a. 分配給作業的內存塊數
b. 頁面尺寸
c. 程序的實現
d. 頁面淘汰算法
七、虛擬存儲的性能問題
在虛擬存儲中,頁面在內存和外存之間頻繁的調度以至于系統中頁面所需的時間比進程實際運行的時間還多,在這種情況下,系統效率急劇下降,甚至可能出現全面崩潰
在顛簸時,伴隨著磁盤的劇烈抖動,引起顛簸的原因是缺頁過于頻繁,CPU 忙于處理缺頁
活躍頁面:進程運行時,CPU 總是集中訪問的一些頁面
工作集:對于給定的訪頁序列,在其中選取定長區間,成為工作集的窗口,落在工作集窗口中的集合稱為工作集,記為 WS(t)
工作集的大小取決于頁的三個因素:訪頁序列特性、時刻 Ti、窗口長度
引入工作集的目的是:希望分配給進程的頁面數與當前工作集的大小吻合
實現工作集存儲管理的策略是很困難的
一般可用硬件裝置統計當前工作集的大小,用軟件根據工作集的大小調整對每個進程分配的物理塊數
只有在具備足夠內存的情況下,才能有效的實現多道程序設計
總結
以上是生活随笔為你收集整理的操作系统 - 虚拟存储管理技术之虚拟页式存储管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: opencv将RGB转成YIQ
- 下一篇: 现代软件工程 -- 第一周 -- 介绍自