、應(yīng)用中的概念。
物理內(nèi)存,在應(yīng)用中,自然是顧名思義,物理上,真實(shí)的插在板子上的內(nèi)存是多大就是多大了??礄C(jī)器配置的時(shí)候,看的就是這個(gè)物理內(nèi)存。
虛擬內(nèi)存,這個(gè)概念就要稍微了解一下CPU了,只是稍微,畢竟我們現(xiàn)在談的是應(yīng)用中的概念。我們應(yīng)該知道,對(duì)于一般的32位CPU,有32根地址線,那么它的尋址空間就是4GB。也就是說,如果沒有其他的限制,我們的主板上最大可以安裝4GB的物理內(nèi)存。哈哈,一般的機(jī)器是不會(huì)裝那么多物理內(nèi)存的,大把的銀子啊,性價(jià)比可合不上。程序員可不管這個(gè),我們對(duì)CPU編程,不能一臺(tái)機(jī)器根據(jù)你物理內(nèi)存的大小我編一個(gè)程序吧?那也太原始社會(huì)了吧。所以程序員都是直接使用的4GB的奢侈的進(jìn)程空間(或許,不應(yīng)該用奢侈這么短視的詞。曾幾何時(shí),128M的物理內(nèi)存也是我們不可想象的呢?)。這怎么辦?總不能不用那些程序了吧。好吧,這個(gè)問題交給OS去解決吧。這樣,OS就提出了一個(gè)虛擬內(nèi)存的概念。就是進(jìn)程、用戶、不必考慮實(shí)際上物理內(nèi)存的限制,而直接對(duì) 4GB的進(jìn)程空間進(jìn)行尋址。如果所尋址的數(shù)據(jù)實(shí)際上不在物理內(nèi)存中,那就從“虛擬內(nèi)存”中來獲取。這個(gè)虛擬內(nèi)存可以是一個(gè)專門文件格式的磁盤分區(qū)(比如 linux下的swap分區(qū)),也可以是硬盤上的某個(gè)足夠大的文件(比如win下的那個(gè)i386文件,好像是這個(gè)名字)。物理內(nèi)存中長(zhǎng)期不用的數(shù)據(jù),也可以轉(zhuǎn)移到虛擬內(nèi)存中。這樣的交換由OS來控制,用戶看起來就好像物理內(nèi)存大了一樣。有了虛擬內(nèi)存的概念,我們就可以自由的使用4GB的進(jìn)程空間了。但是,前提是你的硬盤由足夠的空間,而且你舍得劃分出(4GB-物理內(nèi)存)大的虛擬內(nèi)存空間來。一般情況下,虛擬內(nèi)存的大小,各個(gè)OS也進(jìn)行了限制(比如linux的swap分區(qū)的大小,win下也可以調(diào)整虛擬內(nèi)存文件的大小和位置)。所以,我們程序所能使用的存儲(chǔ)空間大小就是:物理內(nèi)存+虛擬內(nèi)存。
2、CPU中的概念。
物理內(nèi)存,CPU的地址線可以直接進(jìn)行尋址的內(nèi)存空間大小。比如8086只有20根地址線,那它的尋址空間就是1MB。我們就說8086能支持1MB的物理內(nèi)存。即使我們安裝了128M的內(nèi)存條在板子上,我們也只能說8086擁有1MB的物理內(nèi)存空間。同理32位的386以上CPU,就可以支持最大4GB 的物理內(nèi)存空間了。
虛擬內(nèi)存,這便是一個(gè)和CPU的尋址方式有關(guān)的一個(gè)概念了。x86體系結(jié)構(gòu)中,為了更好的管理內(nèi)存空間,采用分段的方式來對(duì)內(nèi)存進(jìn)行尋址。比如8086就用兩個(gè)字節(jié)的段基地址和兩個(gè)字節(jié)的偏移地址來尋址整個(gè)可以尋址的內(nèi)存空間,即:0000:0000方式(具體怎么計(jì)算出實(shí)際的地址,參見各種匯編教材)。這樣,對(duì)整個(gè)1MB的物理內(nèi)存空間尋址是沒有問題了??墒?,用這種方式,最大可以尋址到10FFEF這個(gè)地址。這超出了20根地址線的地址的FFEF大小的空間,就可以說是8086的虛擬內(nèi)存了,所以可以說8086的虛擬內(nèi)存地址空間可以達(dá)到10FFEF。具體怎么使用和看待這段內(nèi)存,還取決于 A20線的選通與否了,這是另外的話題了。同樣的道理,386以上的CPU,由于在保護(hù)模式下使用了GDT和LDT,將段的定義放到了內(nèi)存中,從而可以使用16位的段地址和32位的偏移地址。這樣算來,386以上的CPU的虛擬內(nèi)存地址空間就可以達(dá)到64TB了。真是大的驚人,看來,這么大的地址空間,一時(shí)還不能被軟件的發(fā)展淘汰 .
3、零碎的叫法。
零碎的叫法常常來自與相對(duì)感覺深?yuàn)W詼澀的虛擬內(nèi)存概念。物理的東西,人們大多不去碰它,畢竟是實(shí)實(shí)在在存在的。而虛擬內(nèi)存就經(jīng)常有別冒名頂替的。“一個(gè)進(jìn)程有4個(gè)GB的虛擬內(nèi)存”這樣的說法屢見不鮮,其實(shí),這是混淆了4GB的進(jìn)程地址空間和虛擬內(nèi)存這兩個(gè)概念。也算令一種解釋吧,畢竟那4個(gè)GB也是見不著影的,也是虛擬的。
虛擬內(nèi)存:
虛擬內(nèi)存指在硬盤中開辟出的、用于輔助物理內(nèi)存交換數(shù)據(jù)的那部分空間,在WINDOWS中可以指定其大小,也可以讓W(xué)INDOWS自動(dòng)調(diào)節(jié)。
進(jìn)入“控制面板/系統(tǒng)/高級(jí)/性能/設(shè)置/高級(jí)/虛擬內(nèi)存/更改”,來到虛擬內(nèi)存設(shè)置窗口,首先確定你的頁面文件在哪個(gè)驅(qū)動(dòng)器盤符,然后將別的盤符驅(qū)動(dòng)器的頁面文件全部禁用。建議你把它是設(shè)置到其他分區(qū)上,而不是默認(rèn)的系統(tǒng)所在的分區(qū),這樣可以提高頁面文件的讀寫速度,有利于系統(tǒng)的快速運(yùn)行。根據(jù)微軟的建議,頁面文件應(yīng)設(shè)為內(nèi)存容量的1.5倍,但如果你的內(nèi)存比較大,那它占用的空間也是很可觀的,所以,建議如果內(nèi)存容量在256MB以下,就設(shè)置為1.5 倍,最大值和最小值一樣,如果在512MB以上,設(shè)置為內(nèi)存容量的一半完全可行。
交換區(qū):一塊內(nèi)存區(qū)域或硬盤區(qū)域,用來處理數(shù)據(jù)交換
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。