我們知道電腦的硬件中有內存條(物理內存)、硬盤,當內存條中的空間不足時操作系統會從硬盤中分配一部分空間當作內存來使用。這里給大家分享一些關于操作系統中的虛擬內存,希望對大家能有所幫助。
傳統存儲管理方式的特征
各種內存管理策略都是為了同時將多個進程保存在內存中以便允許多道程序設計。它們都具有以下兩個共同的特征:
1) 一次性
作業必須一次性全部裝入內存后,方能開始運行。這會導致兩種情況發生:
· 當作業很大,不能全部被裝入內存時,將使該作業無法運行;
· 當大量作業要求運行時,由于內存不足以容納所有作業,只能使少數作業先運行,導致多道程序度的下降。
2) 駐留性
作業被裝入內存后,就一直駐留在內存中,其任何部分都不會被換出,直至作業運行結束。運行中的進程,會因等待I/O而被阻塞,可能處于長期等待狀態。
局部性原理
要真正理解虛擬內存技術的思想,首先必須了解計算機中著名的局部性原理。著名的 Bill Joy (SUN公司CEO)說過:”在研究所的時候,我經常開玩笑地說高速緩存是計算機科學中唯一重要的思想。事實上,髙速緩存技術確實極大地影響了計算機系統的設計。“快表、頁高速緩存以及虛擬內存技術從廣義上講,都是屬于高速緩存技術。這個技術所依賴的原理就是局部性原理。局部性原理既適用于程序結構,也適用于數據結構(更遠地講,Dijkstra 著名的關于“goto語句有害”的論文也是出于對程序局部性原理的深刻認識和理解)。
局部性原理表現在以下兩個方面:
· 時間局部性:如果程序中的某條指令一旦執行,不久以后該指令可能再次執行;如果某數據被訪問過,不久以后該數據可能再次被訪問。產生時間局部性的典型原因,是由于在程序中存在著大量的循環操作。
· 空間局部性:一旦程序訪問了某個存儲單元,在不久之后,其附近的存儲單元也將被訪問,即程序在一段時間內所訪問的地址,可能集中在一定的范圍之內,這是因為指令通常是順序存放、順序執行的,數據也一般是以向量、數組、表等形式簇聚存儲的。
時間局部性是通過將近來使用的指令和數據保存到高速緩存存儲器中,并使用高速緩存的層次結構實現。空間局部性通常是使用較大的高速緩存,并將預取機制集成到高速緩存控制邏輯中實現。虛擬內存技術實際上就是建立了 “內存一外存”的兩級存儲器的結構,利用局部性原理實現髙速緩存。
由以上分析可知,許多在程序運行中不用或暫時不用的程序(數據)占據了大量的內存空間,而一些需要運行的作業又無法裝入運行,顯然浪費了寶貴的內存資源。
請求分頁管理方式實現虛擬內存
請求分頁系統建立在基本分頁系統基礎之上,為了支持虛擬存儲器功能而增加了請求調頁功能和頁面置換功能。請求分頁是目前最常用的一種實現虛擬存儲器的方法。
在請求分頁系統中,只要求將當前需要的一部分頁面裝入內存,便可以啟動作業運行。在作業執行過程中,當所要訪問的頁面不在內存時,再通過調頁功能將其調入,同時還可以通過置換功能將暫時不用的頁面換出到外存上,以便騰出內存空間。
為了實現請求分頁,系統必須提供一定的硬件支持。除了需要一定容量的內存及外存的計算機系統,還需要有頁表機制、缺頁中斷機構和地址變換機構。
頁表機制
請求分頁系統的頁表機制不同于基本分頁系統,請求分頁系統在一個作業運行之前不要求全部一次性調入內存,因此在作業的運行過程中,必然會出現要訪問的頁面不在內存的情況,如何發現和處理這種情況是請求分頁系統必須解決的兩個基本問題。為此,在請求頁表項中增加了四個字段,
增加的四個字段說明如下:
· 狀態位P:用于指示該頁是否已調入內存,供程序訪問時參考。
· 訪問字段A:用于記錄本頁在一段時間內被訪問的次數,或記錄本頁最近己有多長時間未被訪問,供置換算法換出頁面時參考。
· 修改位M:標識該頁在調入內存后是否被修改過。
· 外存地址:用于指出該頁在外存上的地址,通常是物理塊號,供調入該頁時參考。
缺頁中斷機構
在請求分頁系統中,每當所要訪問的頁面不在內存時,便產生一個缺頁中斷,請求操作系統將所缺的頁調入內存。此時應將缺頁的進程阻塞(調頁完成喚醒),如果內存中有空閑塊,則分配一個塊,將要調入的頁裝入該塊,并修改頁表中相應頁表項,若此時內存中沒有空閑塊,則要淘汰某頁(若被淘汰頁在內存期間被修改過,則要將其寫回外存)。
缺頁中斷作為中斷同樣要經歷,諸如保護CPU環境、分析中斷原因、轉入缺頁中斷處理程序、恢復CPU環境等幾個步驟。但與一般的中斷相比,它有以下兩個明顯的區別:
· 在指令執行期間產生和處理中斷信號,而非一條指令執行完后,屬于內部中斷。
· 一條指令在執行期間,可能產生多次缺頁中斷。
地址變換機構
請求分頁系統中的地址變換機構,是在分頁系統地址變換機構的基礎上,為實現虛擬內存,又增加了某些功能而形成的。
若找到要訪問的頁,便修改頁表項中的訪問位(寫指令則還須重置修改位),然后利用頁表項中給出的物理塊號和頁內地址形成物理地址。
· 若未找到該頁的頁表項,應到內存中去查找頁表,再對比頁表項中的狀態位P,看該頁是否已調入內存,未調入則產生缺頁中斷,請求從外存把該頁調入內存。
操作系統中的虛擬內存相關文章:
★ 如何合理設置電腦虛擬內存,提高電腦運行速度
★ 32位與64位操作系統的區別
★ 提高內存使用效能的幾種方法
★ 能讓硬盤更快的“孤獨九劍”
★ 介紹幾個妙招加快內存運行速度
★ 電腦操作系統藍屏怎么解決
★ 計算機的日常維護
★ 全面釋放C盤被強行占用的空間
★ 電腦死機的原因和處理辦法
★ c盤滿了空間不足怎么辦