虛擬內存

  • 對一個程序來說,他在某一段時間內,只有某一些部分是需要在內存裏面的。(局部性原理),虛擬內存管理,屬於一個完全黑盒的封裝,我們在使用的時候,幾乎不需要考慮他的存在。

  • 虛擬內存的兩種實現方式:請求頁,請求段。

  • 請求頁:如果有一個頁面,只有當你真正需要他的時候,才把他加載到內存中來,有很多好處:降低IO操作,

  • 虛擬內存也是一種緩存思想:虛擬內存將主存看成是一個磁盤的高速緩存,主存中只保存活動區域,並根據需要在磁盤和主存之間來回傳送數據。

  • 從概念上來說,虛擬內存被組織成爲一個由存放在磁盤上的 N 個連續的字節大小的單元組成的數組,也就是字節數組。每個字節都有一個唯一的虛擬地址作爲數組的索引。虛擬內存的地址和磁盤的地址之間建立影射關係。磁盤上活動的數組內容被緩存在主存中。在存儲器層次結構中,磁盤(較低層L5,參見我們上篇文章圖4)的數據被分割成塊(block),這些塊作爲和主存(較高層,L4)之間的傳輸單元。主存作爲虛擬內存(或者說磁盤)的緩存。

  • 虛擬內存(VM)系統將虛擬內存分割成稱爲大小固定的虛擬頁(Virtual Page,VP),每個虛擬頁的大小爲固定字節。同樣的,物理內存被分割爲物理頁(Physical Page,PP),大小也爲固定字節(物理頁也稱作頁幀,page frame)。

  • 在任意時刻,虛擬頁面都分爲三個不相交的部分:
    未分配的(Unallocated) :VM 系統還未分配(或者創建)的頁,未分配的頁沒有任何數據和它們關聯,因此不佔用任何內存/磁盤空間。
    緩存的(Cached): 當前已緩存在物理內存中的已分配頁。
    未緩存的(UnCached) :該頁已經映射到磁盤上了,但是還沒緩存在物理內存中。

swap分區的作用

  • linux有一個swap分區。Swap空間的作用可簡單描述爲:當系統的物理內存不夠用的時候,就需要將物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程序,這些被釋放的空間中的信息被臨時保存到Swap空間中,等到那些程序要運行時,再從Swap中恢復保存的數據到內存中。系統總是在物理內存不夠時,才進行Swap交換。

  • 電腦開着一個進程,幾天不關機,也一直沒關閉這個進程,隨着運行的程序越來越多,內存快不夠用了,所以操作系統就選擇將這個音樂播放器的內存狀態(包括堆棧狀態等)都寫到磁盤上的swap區進行保存。這樣就騰出來一部分內存供其他需要運行的程序使用。等你要使用到這個進程了。此時, 系統會從磁盤中的swap區重新讀取該進程的相關信息,送回內存接着運行。

在window下也有類作用的硬盤空間,屬於對用戶不可見的匿名磁盤空間(在C盤)。

特別注意:按照字面意思,swap交換區也可以稱爲虛擬內存
硬盤上的swap交換區,其實就相當於承擔了內存的作用(只是速度很慢罷了)。swap交換區起到了擴大內存的作用。所以從某些意義上來講,swap區也可以叫做虛擬內存,但是這個虛擬內存是字面意思。和我們本文當中站在計算機系統的角度來解釋的虛擬內存不是一個概念。所以特別注意這一點。因爲有些人理解的虛擬內存,就是swap交互區。此虛擬內存非彼虛擬內存,所以明白各自的概念和作用。

linux環境下叫做swap分區,window下這塊區域不叫swap分區,就直接按照字面意思叫做"虛擬內存"了。所以兩個含義不同的虛擬內存,讀者一定要搞清楚了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章