一、什么時(shí)虛擬內(nèi)存?
這個(gè)虛擬內(nèi)存空間大小是由什么決定的呢?
虛擬內(nèi)存的大小,由于CPU的位數(shù)決定的,也就是CPU能尋址多少位,虛擬內(nèi)存就有多大
32位的CPU,虛擬內(nèi)存的空間就是4GB
64位的CPU,虛擬內(nèi)存空間就是:4G*4G=16G
CPU在處理數(shù)據(jù)時(shí),都在是虛擬內(nèi)存中進(jìn)行讀寫操作,但是畢竟是虛擬內(nèi)存,最終的數(shù)據(jù)還是要存放在真正的物理內(nèi)存上的。
這時(shí)呢還需要內(nèi)存管理單無MMU和操作系統(tǒng)一起合作,來實(shí)現(xiàn)虛擬內(nèi)存和物理內(nèi)存之間的映射。
MMU是Memory Management Unit的縮寫,中文名是內(nèi)存管理單元,有時(shí)稱作分頁內(nèi)存管理單元(英語:paged memory management unit,縮寫為PMMU)。它是一種負(fù)責(zé)處理中央處理器(CPU)的內(nèi)存訪問請(qǐng)求的計(jì)算機(jī)硬件。
這種虛擬內(nèi)存與物理內(nèi)存之前的映射,對(duì)用戶和程序員是無感的。
二、使用虛擬內(nèi)存有什么好處呢?
1、簡(jiǎn)化程序運(yùn)行條件,虛擬內(nèi)存為程序加載提供了很大的靈活性。
現(xiàn)在比如一個(gè)程序直接跑在物理內(nèi)存上,有很多時(shí)候,很多程序都需要調(diào)試,如果都直接跑到物理內(nèi)存上,現(xiàn)在就要一直占用著實(shí)際的物理內(nèi)存,如果程序調(diào)試的多,那么物理內(nèi)存就會(huì)被占用的很大。
現(xiàn)在如果說,所有的程序都在虛擬內(nèi)存上調(diào)試使用,這些程序如果映射到物理內(nèi)存上,這個(gè)是由CPU靈活調(diào)用的,不需要我們參與,這樣就可以節(jié)省很大一部分內(nèi)存空間。
2、隔離進(jìn)程
當(dāng)有一個(gè)程序員,或者用戶,要使用兩個(gè)相同的程序進(jìn)行編譯的時(shí)候,會(huì)出現(xiàn)兩個(gè)相同的虛擬內(nèi)存,然后映射到不同的物理內(nèi)存存儲(chǔ)模塊內(nèi),當(dāng)有一個(gè)程序進(jìn)程死掉的時(shí)候,不影響另外一個(gè)進(jìn)程。
3、有效使用內(nèi)存
舉一個(gè)簡(jiǎn)單的例子,當(dāng)我們系統(tǒng)開機(jī)時(shí),加載的字體文件,直接加載到虛擬內(nèi)存中,當(dāng)我們進(jìn)入系統(tǒng)后,有些程序需要使用到這些字體時(shí),那么就可以共享使用內(nèi)存中的字體,如果進(jìn)入系統(tǒng)需要編輯字體文件時(shí),這時(shí)就需要這程序自己?jiǎn)为?dú)再copy一份字體在內(nèi)存中進(jìn)行修改。
4、擴(kuò)大內(nèi)存應(yīng)用
很重要的知識(shí)點(diǎn):
swap
假設(shè)我們現(xiàn)在的操作系統(tǒng)程序已經(jīng)全部用完了物理內(nèi)存,簡(jiǎn)單起見,我們通過設(shè)置頁表讓虛擬內(nèi)存頁和物理內(nèi)存頁,一一對(duì)應(yīng),此時(shí),如果還有程序還需要申請(qǐng)一個(gè)內(nèi)存頁,這時(shí)應(yīng)該如何處理呢?
為了讓程序繼續(xù)運(yùn)行下去,操作系統(tǒng)會(huì)通過一定的算法,選擇某一個(gè)內(nèi)存頁,暫時(shí)轉(zhuǎn)移到硬盤上,同時(shí)更新一下對(duì)應(yīng)的頁表的信息,記錄一下內(nèi)存頁所在的:硬盤扇區(qū)號(hào)碼,這樣就臨時(shí)騰出了一個(gè)空間的內(nèi)存頁,更新一個(gè)頁表,完成內(nèi)存映射后,就可以返回給程序使用了
那如果程序需要讀取:剛才轉(zhuǎn)移到硬盤上的內(nèi)存頁,那該怎么辦呢?顯然,這時(shí)仍然沒有空宋的物理內(nèi)存可供使用,還是老辦法,操作系統(tǒng)再選擇一個(gè)內(nèi)存頁,將它也暫時(shí)轉(zhuǎn)移到硬盤上面,并更新一下頁表。
這樣就又臨時(shí)騰出了一個(gè)空閑的內(nèi)存頁,此時(shí)操作系統(tǒng),就可以根據(jù)頁表上的硬盤扇區(qū)號(hào)碼,把存在硬盤上的內(nèi)存頁,讀取到剛剛空閑的內(nèi)存頁上了,當(dāng)然由于改變了位置,頁表也需要更新一下,不得不說,
這是一個(gè)偉大的功能,重點(diǎn)來了,當(dāng)你的電腦需要使用swap的時(shí)候,這時(shí)就需要使用到硬盤的讀取,因?yàn)閟wap是需要使用到硬盤的讀寫速度的,如果是機(jī)械硬盤那么電腦就會(huì)變慢了,如果是固態(tài)盤那還是可以的。
三、虛擬內(nèi)存如何設(shè)置大小
在運(yùn)行中sysdm.cpl打開系統(tǒng)屬性。
找到高級(jí)--設(shè)置
在性能選項(xiàng)中,找到高級(jí)--更改。
我們可以看一下,我電腦物理內(nèi)存是12G,虛擬內(nèi)存推薦的大小是2399MB=2.3GB
系統(tǒng)中存放的內(nèi)存分頁文件在哪呢?
pagefile.sys即安裝過程中創(chuàng)建的虛擬內(nèi)存頁面文件。這個(gè)文件的大小是自己系統(tǒng)虛擬內(nèi)存設(shè)置的最小值的大小。假如虛擬內(nèi)存的設(shè)置為800MB-1600MB那么你在自己的設(shè)定驅(qū)動(dòng)盤下面就可看到大小為800MB的pagefile.sys文件
Pagefile.sys是用于管理虛擬內(nèi)存的Windows分頁(或交換)文件。它在系統(tǒng)物理內(nèi)存
RAM
不足時(shí)使用。
Windows使用pagefile.sys來存儲(chǔ)數(shù)據(jù),否則這些數(shù)據(jù)將位于計(jì)算機(jī)的隨機(jī)存取存儲(chǔ)器
RAM
中。有時(shí)根本沒有足夠的容量在RAM中保存所有必要的文件,因此pagefile.sys位于您的硬盤驅(qū)動(dòng)器或SSD
C:\pagefile.sys
上,隨時(shí)準(zhǔn)備在必要時(shí)接收數(shù)據(jù),通常是最少使用的文件在RAM中被“分頁”到這個(gè)文件中。 |