虛擬內存

什麼是虛擬內存
  虛擬內存是用硬盤空間做內存來彌補計算機RAM空間的缺乏。當實際RAM滿時(實際上,在RAM滿之前),虛擬內存就在硬盤上創建了。當物理內存用完後,虛擬內存管理器選擇最近沒有用過的,低優先級的內存部分寫到交換文件上。這個過程對應用是隱藏的,應用把虛擬內存和實際內存看作是一樣的。
技術細節:對於英特爾 IA-32 處理器(包括 386、奔騰等)而言,用戶應用程序(進程)訪問內存時其內存地址是虛擬的,CPU 會將它轉換爲實際的物理內存地址。物理內存不夠時,操作系統系統會將各個進程中一部分暫時不用的內存換出到頁面文件(交換文件)中,並將需要訪問內存的程序的內容從頁面文件中換入到物理內存。
虛擬內存的作用
  不知大家有沒有發現,在Windows2000(XP)目錄下有一個名爲 s的系統文件(Windows98下爲Win386.swp),它的大小經常自己發生變動,小的時候可能只有幾十兆,大的時候則有數百兆,這種毫無規律的變化實在讓很多人摸不着頭腦。其實, s是Windows下的一個虛擬內存,它的作用與物理內存基本相似,但它是作爲物理內存的“後備力量”而存在的,也就是說,只有在物理內存已經不夠使用的時候,它纔會發揮作用。
虛擬內存的產生
  我們都知道,雖然在運行速度上硬盤不如內存,但在容量上內存是無法與硬盤相提並論的。當運行一個程序需要大量數據、佔用大量內存時,內存就會被“塞滿”,並將那些暫時不用的數據放到硬盤中,而這些數據所佔的空間就是虛擬內存。現在我們也明白爲什麼 s的大小會經常變化了。

  內存在計算機中的作用很大,電腦中所有運行的程序都需要經過內存來執行,如果執行的程序分配的內存的總量走過了內存大小,就會導致內存消耗殆盡。爲了解決這個問題,Windows中運用了虛擬內存技術,即拿出一部分硬盤空間來充當內存使用,當內存佔用完時,電腦就會自動調用硬盤來充當內存,以緩解內存的緊張。

  舉個例子來說,壓縮程序在壓縮時有時候需要讀取文件的很大一部分並保存在內存中作反覆的搜索。假設內存大小是128MB,而要壓縮的文件有 200MB,且壓縮軟件需要保存在內存中的大小也是 200MB,那麼這時操作系統就要權衡壓縮程序和系統中的其他程序,把多出來的那一部分數據放進交換文件。
虛擬內存運行的原理以及過程

可能大家都會知道虛擬內存就是當物理內存不足夠的時候,把硬盤的一部分當作內存來使用。
這樣理解其實不夠準確
物理內存就是大家平時經常說的1G內存,512M內存
首先要知道:打開任何一個程序,都是要佔用物理內存的 ,當關閉這個程序的時候,系統也將會從物理內存中刪除這個程序的信息
接着分兩方面理解虛擬內存
--------------假設計算機物理內存是512M,系統都安裝在C盤--------------------------------------
(一)當物理內存足夠的時候
假設,我們運行的程序佔用了215M,此時物理內存絕對夠用了,但是不要以爲此時系統沒有用虛擬內存技術,系統照樣用了虛擬內存技術,當我們打開QQ的時候,系統就爲QQ這個程序指定了一個虛擬空間,只是此時這個虛擬空間裏面沒有信息而已
(二)當物理內存不足的時候
假設計算機運行”迅雷”和”IE瀏覽器”這兩個個軟件的時候物理內存已經達到512M,我們啓動QQ,如果沒有虛擬內存技術,我們此時根本不能啓動QQ,因爲QQ不能在內存中寫入相關信息,不過現在有了虛擬內存技術,此時系統將會釋放一部分物理內存給QQ用,假設釋放的是迅雷所佔用的物理內存,那麼迅雷所佔用的物理內存信息將會保存到硬盤上的一個 s的文件中
當我們想再運行迅雷的時候,此時系統會從 s查找相應的迅雷信息,同時把這些信息重新載入到物理內存裏面,並且把QQ的信息釋放到 s裏面
這樣一個循環交換過程就是虛擬內存技術,爲什麼叫它虛擬呢,因爲系統把文件釋放到了硬盤上,而這個硬盤可不是內存,只是臨時的保存內存信息的地方
一句話,虛擬內存就是用如硬盤u盤等不是內存的介質來存儲內存的信息
正是因爲系統使用了虛擬內存,所以平時使用電腦的時候發現有些應用打開了很久,沒關,再調出這個應用時這個應用會很慢,就是因爲它被移到虛擬內存裏面了,從虛擬內存複製到物理內存是需要時間的,這就是卡的原因。

linux中用作虛擬內存的磁盤空間被稱爲交換空間(Swap Space)
發佈了74 篇原創文章 · 獲贊 88 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章