天天看點

筆記 作業系統 虛拟記憶體管理技術

1 虛拟記憶體

https://blog.csdn.net/iwanderu/article/details/103946338

1.1 虛拟記憶體的起因

我們隻有有限的實體記憶體空間,但是如果我們再跑一個很大的應用程式,比如說3D遊戲,可能會出現記憶體不夠用的情況。那麼我們為了能夠讓遊戲順利的進行,就需要利用起外存(磁盤)。我們把目前正在執行的東西放到記憶體裡面進行執行,目前不需要執行的東西放到外存裡面。早期的時候會使用覆寫技術(DOS系統),由程式員自己區分,記憶體與外存存儲的東西;,繼而發展到自動交換技術,作業系統介入這一事情的處理;最後發展到虛拟記憶體技術。

1.2 覆寫技術是怎麼樣工作的

覆寫技術主要是指程式員通過對程式的精心設計,對于不同走向的程式,分時段的加載到記憶體裡來。這極大地增大了程式員的工作量和程式設計的複雜度,這是一種以執行時間來換取空間節省的方案。
筆記 作業系統 虛拟記憶體管理技術

1.3 交換技術如何工作

作業系統介入這一事情中來。多道程式在記憶體中時,讓正在運作的程式或需要運作的程式獲得更多的記憶體資源。作業系統會将暫時不能運作的程式送到外存,進而獲得空閑記憶體空間。何時交換、交換區大小、交換回來位址變化需要映射表維護。交換的是全部程式代碼。

1.4 虛拟記憶體

虛拟記憶體管理技術在硬體上是基于作業系統和MMU這類分頁或分段尋址技術之上的。虛拟記憶體管理技術是兼具覆寫技術和交換技術的優點,主體特征是在記憶體裡存放常用的程式,在硬碟裡存放不常用的程式,在硬碟需要執行的時候又能夠進行自動交換(交換的是部分)。在軟體上的原理是基于程式的局部性原理。

将目前需要執行的代碼段兒放入記憶體中,在CPU檢測到指令需要其他的代碼段的時候,作業系統再将硬碟裡的代碼段放到記憶體中。這裡面有一個事情值得注意的是如果作業系統檢查記憶體裡面還有空間,那麼會将硬碟裡的代碼段直接放入到記憶體裡面,但是如果記憶體裡面此時沒有空間,作業系統需要做更多的考慮,将記憶體中已有的程式,但是并不那麼緊要的程式交換到硬碟裡面,然後再将需要執行的代碼段放到這段空閑的記憶體裡。

程式的局部性原理是指?

程式的局部性原理是指程式在執行過程中的一個較短時期,所執行的指令位址和指令的操作數位址分别局限于同一個區域,這可以表現為時間局部性和空間局部性。時間局部性是指指令和指令之間的較短的周期,空間局部縣市之相鄰的幾條指令所通路的幾個資料都集中在較小的一個區域内。

利用程式的局部性原理有助于我們寫出更加高效的代碼。

筆記 作業系統 虛拟記憶體管理技術

32位系統的虛拟記憶體空間最大容量

pow(2,32)/1024/1024/1024 =X個位址*8bit=4G

注意由于系統本身記憶體消耗,我們可用的也就3.2G左右。

具體的虛拟記憶體技術是如何工作的?

筆記 作業系統 虛拟記憶體管理技術
筆記 作業系統 虛拟記憶體管理技術
筆記 作業系統 虛拟記憶體管理技術
筆記 作業系統 虛拟記憶體管理技術
筆記 作業系統 虛拟記憶體管理技術

繼續閱讀