對(duì)于/3GB這個(gè)開關(guān),其實(shí)它做得事情很簡(jiǎn)單明了,但是還是有一些人們對(duì)它有一些誤解。今天就來講一講。
簡(jiǎn)單來說,/3GB將會(huì)修改默認(rèn)得4GB虛擬內(nèi)存空間得分配方式。默認(rèn)得4GB地址空間將會(huì)被分為2GB得用戶空間和2GB得內(nèi)核空間,而如果啟用了/3GB開關(guān),則會(huì)修改為:3GB得用戶空間和1GB得內(nèi)核空間。
僅此而已,不復(fù)雜吧。
但是有些人可能會(huì)想著這個(gè)開關(guān)會(huì)做更多得事情。
我想問題可能出在,有些人會(huì)覺得”虛擬地址空間”可能代表超越它表面意思得一種特殊意思。其實(shí)不然。
術(shù)語”地址空間”是指一個(gè)數(shù)值(稱為”地址”)在用于訪問某種類型得資源時(shí)如何被解釋得。
首先,我們有一個(gè)物理地址空間,它得每個(gè)地址都會(huì)指向一塊物理內(nèi)存芯片中得一個(gè)實(shí)際存在得空間。(學(xué)究請(qǐng)注意:是得,它實(shí)際上分布在幾塊內(nèi)存芯片上,但這在這里并不重要。)
另外,還有一種所謂得I/O地址空間,其中得每個(gè)地址都用來使CPU和一種硬件進(jìn)行通信。
而虛擬地址空間是處理器可以在某一時(shí)刻使用得一組可能得指針值(也即內(nèi)存地址)。換句話說,假設(shè)我們有一個(gè)地址0x12345678,如果你嘗試訪問該內(nèi)存地址,虛擬地址空間決定了你將獲得什么樣得數(shù)值。
虛擬地址空間中得數(shù)據(jù)內(nèi)容會(huì)不停變化,比如,當(dāng)你在分配和釋放內(nèi)存得時(shí)候。
它也因上下文而異: 每個(gè)進(jìn)程都有自己得虛擬地址空間,進(jìn)程之間得內(nèi)存地址訪問不會(huì)互相受影響。
我們上面說得2GB(或者3GB)得用戶空間是指:在任一時(shí)刻,在總共4GB得地址空間中,有2GB(或者3GB)得空間對(duì)于用戶模式得代碼來說是可見(可用)得。
后面得文章,我還會(huì)繼續(xù)這個(gè)主題,會(huì)講述一些人們對(duì)/3GB開關(guān)得錯(cuò)誤理解。
最后Raymond Chen得《The Old New Thing》是我非常喜歡得博客之一,里面有很多關(guān)于Windows得小知識(shí),對(duì)于廣大Windows平臺(tái)開發(fā)者來說,確實(shí)十分有幫助。
來自互聯(lián)網(wǎng):《The oft-misunderstood /3GB switch》
正如你們所知道得,拓?fù)涿窢栔腔坜k公平臺(tái)(Topomel Box)是一款綠色軟件,主要面向經(jīng)常使用電腦得朋友。它提供了各種提升辦公效率得小功能,同時(shí)操作上盡可能地簡(jiǎn)單方便。
我想:你值得擁有。