日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

地址空间和虚拟内存(转载)http://topic.csdn.net/u/20090619/10/4c62a13b-536b-4b0a-af09-2271c6a104e1.html...

發(fā)布時(shí)間:2025/7/25 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 地址空间和虚拟内存(转载)http://topic.csdn.net/u/20090619/10/4c62a13b-536b-4b0a-af09-2271c6a104e1.html... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我對(duì)于虛擬地址空間和虛擬內(nèi)存的理解:32位的CPU中,一個(gè)進(jìn)程都有個(gè)4G的虛擬地址空間;虛擬內(nèi)存是存在于硬盤(pán)上的頁(yè)交換文件。
前段時(shí)間聽(tīng)了一個(gè)報(bào)告,報(bào)告人竟然一再?gòu)?qiáng)調(diào)說(shuō)MMU管理的是虛擬內(nèi)存,個(gè)人認(rèn)為MMU管理的應(yīng)該是進(jìn)程的虛擬地址空間吧?
回來(lái)查了下《WINODWS核心編程》,發(fā)現(xiàn)第五版的中文版本中對(duì)這兩個(gè)概念說(shuō)的也不清楚,如P362頁(yè):磁盤(pán)上的文件一般被稱為頁(yè)交換文件,其中包含虛擬內(nèi)存。難道頁(yè)交換文件不是等價(jià)于虛擬內(nèi)存嗎?

歡迎大家討論,最后能得出個(gè)一致的結(jié)論。
?
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP
回復(fù)次數(shù):38

?

?

?




  • jcsnwpu
  • 等 級(jí):

#1樓 得分:0回復(fù)于:2009-06-19 11:10:30

就沒(méi)哥哥給我回答個(gè),是不是太EASY,呵呵
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

精華推薦:一個(gè)跟線程同步類似的問(wèn)題,請(qǐng)各位幫幫看看出錯(cuò)原因

?

?




  • microyzy
  • (分也許不少,但別誤會(huì)俺是高手)

  • 等 級(jí):

#2樓 得分:4回復(fù)于:2009-06-19 11:42:36

硬盤(pán)上的文件是虛擬內(nèi)存交換到磁盤(pán)的結(jié)果,虛擬內(nèi)存就是你的程序能訪問(wèn)到的那些內(nèi)存,這是相對(duì)于真正的內(nèi)存物理地址而言,這是我的理解。我覺(jué)得,windows核心已經(jīng)解釋得足夠清晰了,如果認(rèn)為模糊,那么多讀幾次,另外補(bǔ)下基礎(chǔ)知識(shí),其實(shí),有幾個(gè)人完全清楚捏-_-
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

精華推薦:三流大學(xué)在校一年級(jí)學(xué)生(碩士),畢業(yè)想找C/C++方面工作,薪水在6000元/月以上,請(qǐng)有經(jīng)驗(yàn)的高手指點(diǎn),我在學(xué)校應(yīng)該從哪些方向?qū)W習(xí)哪些方面的知識(shí)?

?

?




  • tumen
  • (tumen)

  • 等 級(jí):

#3樓 得分:4回復(fù)于:2009-06-19 12:30:18

第一個(gè)問(wèn)題:
?
虛擬內(nèi)存是一個(gè)4G的地址空間,是一個(gè)空間,有部分對(duì)應(yīng)實(shí)在的代碼和數(shù)據(jù),還有很多是空的地址,不對(duì)應(yīng)實(shí)際的代碼和數(shù)據(jù)。
第一個(gè)疑點(diǎn):
?
MMU管理的確實(shí)是虛擬內(nèi)存,它是CPU的一個(gè)物理部件。
第二個(gè)問(wèn)題:
?
虛擬內(nèi)存對(duì)應(yīng)實(shí)在的代碼和數(shù)據(jù)存在兩個(gè)地方,一個(gè)是按頁(yè)存入物理內(nèi)存(以下簡(jiǎn)稱內(nèi)存),另一個(gè)是按頁(yè)存入硬盤(pán)。在硬盤(pán)上的部分是以文件形式存在,目的是為了換入換出內(nèi)存,所以叫頁(yè)交換文件。
?
說(shuō)明白點(diǎn):頁(yè)交換文件不是虛擬內(nèi)存(白馬非馬),是其中的一種存在形式,另一種形式是內(nèi)存(黑馬也是馬)。
問(wèn)題擴(kuò)充:
?
舉例,可執(zhí)行文件運(yùn)行時(shí)要先裝載,但并沒(méi)有把所有代碼和數(shù)據(jù)從硬盤(pán)復(fù)制到內(nèi)存(內(nèi)存和硬盤(pán)中各有部分,并且以頁(yè)形式存在,一般頁(yè)有4KB大小),當(dāng)程序執(zhí)行到某個(gè)代碼或數(shù)據(jù)時(shí),如果內(nèi)存中沒(méi)有,那么CPU就產(chǎn)生一個(gè)異常(因?yàn)镃PU只能直接存取在內(nèi)存中的代碼和數(shù)據(jù),不能直接訪問(wèn)硬盤(pán)中的),然后通過(guò)MMU控制把對(duì)應(yīng)的代碼或數(shù)據(jù)的頁(yè)從硬盤(pán)調(diào)入內(nèi)存,再回到產(chǎn)生異常的指令,重新執(zhí)行(當(dāng)然代碼或數(shù)據(jù)已經(jīng)在內(nèi)存,這次不產(chǎn)生異常了)。
問(wèn)題溯源:
?
那為什么不全部調(diào)入內(nèi)存?
? 因?yàn)橐谖业?2M的物理內(nèi)存的586電腦中執(zhí)行大于32M的程序(比如WIN2000)。
?
還有一個(gè)好處,可以把物理內(nèi)存中長(zhǎng)時(shí)間沒(méi)用到的數(shù)據(jù)和代碼頁(yè)移出到硬盤(pán),騰出內(nèi)存空間我再開(kāi)始運(yùn)行另一個(gè)新的程序。
?
還有一個(gè)好處,....虛擬內(nèi)存的用處很多。
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

精華推薦:MFC實(shí)現(xiàn)模擬線程同步(司機(jī)與售票員)(附有源碼)

?

?




  • sandyandy
  • (songwenchao)

  • 等 級(jí):

#4樓 得分:0回復(fù)于:2009-06-19 12:35:45

虛擬內(nèi)存就是用頁(yè)面文件來(lái)充當(dāng)內(nèi)存使用.
某種意義上是一致的,但不是絕對(duì)相等的
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

精華推薦:谷歌瀏覽器優(yōu)化綠色版,大家都來(lái)用用提提建議啊

?

?




  • tumen
  • (tumen)

  • 等 級(jí):

#5樓 得分:0回復(fù)于:2009-06-19 12:37:36

“還有一個(gè)好處,可以把物理內(nèi)存中長(zhǎng)時(shí)間沒(méi)用到的數(shù)據(jù)和代碼頁(yè)出到硬盤(pán)中的頁(yè)交換文件,騰出內(nèi)存空間我再開(kāi)始運(yùn)行另一個(gè)新的程序。”

這樣改一下更好理解。
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

精華推薦:感受微軟外包項(xiàng)目(一)

?

?




  • wocow3
  • (wocow3)

  • 等 級(jí):

#6樓 得分:4回復(fù)于:2009-06-19 12:50:09

虛擬內(nèi)存是一個(gè)Windows內(nèi)存管理的概括
非要說(shuō)是由什么組成的:物理內(nèi)存、頁(yè)文件和映射文件都是虛擬內(nèi)存機(jī)制的一部分

說(shuō)虛擬內(nèi)存就是頁(yè)文件并不正確,映射文件的部分后援存儲(chǔ)器都是直接對(duì)應(yīng)磁盤(pán)文件的,而不是頁(yè)文件
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • jcsnwpu
  • 等 級(jí):

#7樓 得分:0回復(fù)于:2009-06-19 13:41:53

非常感謝以上各位的回答,談?wù)勛约旱目捶ā?br />microyzy:虛擬內(nèi)存就是你的程序能訪問(wèn)到的那些內(nèi)存,我認(rèn)為這句話是不確切的。程序的進(jìn)程地址空間的用戶區(qū)所有映射的內(nèi)存,我的程序應(yīng)該都能訪問(wèn),包括實(shí)際的物理內(nèi)存。
tumen:虛擬內(nèi)存是一個(gè)4GB的地址空間,-----。我認(rèn)為虛擬內(nèi)存理論上是最大值是4GB的地址空間(32位尋址),但實(shí)際上虛擬內(nèi)存僅僅是進(jìn)程地址中映射到頁(yè)交換文件中的那部分。
wocow3:說(shuō)虛擬內(nèi)存就是頁(yè)文件并不正確,映射文件的部分后援存儲(chǔ)器都是直接對(duì)應(yīng)磁盤(pán)文件的,而不是頁(yè)文件。文件映射部分絕對(duì)不是虛擬內(nèi)存機(jī)制。

綜合以上各位的回答,有幾個(gè)相互混淆的概念:
1、進(jìn)程地址空間和虛擬內(nèi)存應(yīng)該不是同一概念,在tumen的敘述中我覺(jué)得存在將兩者等價(jià)的嫌疑;
2、虛擬內(nèi)存和實(shí)際的物理內(nèi)存絕對(duì)不是一個(gè)誰(shuí)包含于誰(shuí)的概念。在tumen、wocow3的敘述中都有將物理內(nèi)存劃入到是虛擬內(nèi)存機(jī)制的一部分之嫌疑。我覺(jué)得虛擬內(nèi)存應(yīng)該是相對(duì)于物理內(nèi)存而言的。

目前我的理解:
每個(gè)進(jìn)程都有個(gè)4G的進(jìn)程虛擬地址空間,虛擬地址空間和實(shí)際的物理存儲(chǔ)介質(zhì)(包括物理內(nèi)存、硬盤(pán)等)具有映射關(guān)系,而映射到頁(yè)交換文件的那部分即為虛擬內(nèi)存。

請(qǐng)大家批評(píng)修正。
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • jcsnwpu
  • 等 級(jí):

#8樓 得分:0回復(fù)于:2009-06-19 14:04:12



引用 4 樓 sandyandy 的回復(fù):
虛擬內(nèi)存就是用頁(yè)面文件來(lái)充當(dāng)內(nèi)存使用.

某種意義上是一致的,但不是絕對(duì)相等的 某種意義上是一致的?哪種意義上是一致的?
但不是絕對(duì)相等的?什么時(shí)候體現(xiàn)出區(qū)別?
還請(qǐng)sandyandy兄詳細(xì)指教。
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • wocow3
  • (wocow3)

  • 等 級(jí):

#9樓 得分:0回復(fù)于:2009-06-19 14:18:41

代碼和數(shù)據(jù)要放到內(nèi)存中才能跑
虛擬內(nèi)存就是一種機(jī)制,讓有限的物理內(nèi)存運(yùn)行更大更多的程序。
當(dāng)物理內(nèi)存中不夠時(shí),需要將內(nèi)存的頁(yè)換出或是丟棄。
那么對(duì)于映射文件,直接在內(nèi)存中清除就可以了,而不是換出到頁(yè)文件保存。
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • justin_bo
  • (justin_bo)

  • 等 級(jí):

#10樓 得分:0回復(fù)于:2009-06-19 14:29:29

攪胡了~~
虛擬內(nèi)存空間就是操作系統(tǒng)讓你覺(jué)得你能使用的內(nèi)存空間吧。
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • jcsnwpu
  • 等 級(jí):

#11樓 得分:0回復(fù)于:2009-06-19 14:39:33



引用 9 樓 wocow3 的回復(fù):
代碼和數(shù)據(jù)要放到內(nèi)存中才能跑

虛擬內(nèi)存就是一種機(jī)制,讓有限的物理內(nèi)存運(yùn)行更大更多的程序。
當(dāng)物理內(nèi)存中不夠時(shí),需要將內(nèi)存的頁(yè)換出或是丟棄。

那么對(duì)于映射文件,直接在內(nèi)存中清除就可以了,而不是換出到頁(yè)文件保存。 如果說(shuō)虛擬內(nèi)存是一種機(jī)制的話,我同意,但是,虛擬內(nèi)存機(jī)制和文件映射的機(jī)制明顯不是一樣的。
虛擬內(nèi)存機(jī)制應(yīng)該只是內(nèi)存管理機(jī)制中的一種。
虛擬內(nèi)存機(jī)制是在給進(jìn)程地址空間劃撥實(shí)際物理存儲(chǔ)器時(shí),用的是頁(yè)交換文件。不知這樣wocow3兄是否同意?
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • wocow3
  • (wocow3)

  • 等 級(jí):

#12樓 得分:0回復(fù)于:2009-06-19 16:04:14

虛擬內(nèi)存機(jī)制是在給進(jìn)程地址空間劃撥實(shí)際物理存儲(chǔ)器時(shí),用的是頁(yè)交換文件。
-------------------
當(dāng)然不全是,可執(zhí)行程序的代碼段多是直接映射內(nèi)存的。在劃撥實(shí)際物理存儲(chǔ)器不用頁(yè)交換文件
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • qq14923349
  • (劍神)
  • 等 級(jí):

#13樓 得分:0回復(fù)于:2009-06-19 16:10:00

每個(gè)進(jìn)程都有獨(dú)立的虛擬內(nèi)存
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • jcsnwpu
  • 等 級(jí):

#14樓 得分:0回復(fù)于:2009-06-19 16:45:20



引用 12 樓 wocow3
的回復(fù):
虛擬內(nèi)存機(jī)制是在給進(jìn)程地址空間劃撥實(shí)際物理存儲(chǔ)器時(shí),用的是頁(yè)交換文件。
-------------------

當(dāng)然不全是,可執(zhí)行程序的代碼段多是直接映射內(nèi)存的。在劃撥實(shí)際物理存儲(chǔ)器不用頁(yè)交換文件 可執(zhí)行程序的代碼段是用的直接映射,劃撥存儲(chǔ)器時(shí)也是不用頁(yè)交換文件.但是這種方式就不是
虛擬內(nèi)存機(jī)制,而是文件映射.
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • tumen
  • (tumen)

  • 等 級(jí):

#15樓 得分:0回復(fù)于:2009-06-19 20:16:34

搞深了。如果不怕不明白,我就往深處說(shuō)說(shuō)。

?
虛擬內(nèi)存世上本不存在,在8086,或者說(shuō)80186(不要說(shuō)沒(méi)聽(tīng)過(guò),后來(lái)多用于單片機(jī)了)以前,程序?qū)?nèi)存的訪問(wèn),不管是代碼地址還是數(shù)據(jù)地址,都是直來(lái)直去,是幾號(hào)單元就去幾號(hào)內(nèi)存單元找,當(dāng)然,最復(fù)雜的也就算
段地址×16+偏移地址了。
? 從286開(kāi)始引入虛擬內(nèi)存,當(dāng)然,我們現(xiàn)在很少見(jiàn)到針對(duì)286虛擬內(nèi)存的程序。
?
經(jīng)過(guò)完善,386時(shí)虛擬內(nèi)存全面登場(chǎng),“虛擬內(nèi)存”加上“32位數(shù)據(jù)和地址”兩大特性成為劃時(shí)代的經(jīng)典CPU,這也是現(xiàn)在很多操作系統(tǒng)文件中殘留i386、386、32等字樣的歷史原因。
?
386的一大突破就是設(shè)計(jì)了一個(gè)功能強(qiáng)大(相對(duì)286)可以使用虛擬內(nèi)存地址尋址的MMU(內(nèi)存管理單元),把物理內(nèi)存(簡(jiǎn)稱內(nèi)存)劃分成一頁(yè)一頁(yè)來(lái)管理,一頁(yè)內(nèi)存大小是固定的(一般是4KB并按4KB地址對(duì)齊),把每頁(yè)的首地址按順序排成一個(gè)數(shù)組放在內(nèi)存,稱為頁(yè)表,頁(yè)表的大小也是固定的,再把頁(yè)表的首地址排成數(shù)組放在內(nèi)存,稱為頁(yè)目錄表,再把頁(yè)目錄表的首地址用一個(gè)專用CPU寄存器保存。
?
程序代碼通過(guò)MMU進(jìn)行虛擬內(nèi)存尋址時(shí),先取出專用寄存器中保存的頁(yè)目錄表首地址,再用32位虛擬地址的高20位作為索引來(lái)一層一層的查目錄表查頁(yè)表找到物理內(nèi)存頁(yè)的首地址,用虛擬地址低12位(對(duì)于4kb頁(yè))做頁(yè)內(nèi)偏移來(lái)找到指定單元。

如果非要說(shuō)的再明白一點(diǎn),那么:虛擬內(nèi)存就是程序代碼不能直接訪問(wèn)物理內(nèi)存的一種間接訪問(wèn)物理內(nèi)存的機(jī)制。或者說(shuō)是把程序中的地址值x和物理內(nèi)存單元地址值y用y=f(x)的方式架開(kāi)分隔。

每個(gè)進(jìn)程都有自己的一套獨(dú)立的頁(yè)表和頁(yè)目錄(在進(jìn)程創(chuàng)建時(shí)建立),CPU切換進(jìn)程時(shí),只要把下一個(gè)進(jìn)程的頁(yè)目錄表的首地址寫(xiě)入專用寄存器,就開(kāi)始尋址該進(jìn)程的代碼和數(shù)據(jù)了(頁(yè)目錄表的首地址是領(lǐng)導(dǎo),領(lǐng)導(dǎo)換了,下面的頁(yè)目錄和頁(yè)表這些小頭目也變成了另一套班子了)。

對(duì)于一個(gè)進(jìn)程來(lái)說(shuō),它能見(jiàn)到和使用的一切內(nèi)存地址都是虛擬內(nèi)存地址(不管訪問(wèn)最終目標(biāo)的是在內(nèi)存中,還是硬盤(pán)上),物理內(nèi)存地址也就只有操作系統(tǒng)偶爾私自在背后把玩把玩,什么時(shí)候都不要認(rèn)為你的程序中的地址是物理內(nèi)存地址,它會(huì)去直接訪問(wèn)物理內(nèi)存地址。(除非你是在做操作系統(tǒng))

在物理內(nèi)存中只有一套操作系統(tǒng)的代碼,把所有操作系統(tǒng)代碼頁(yè)的頁(yè)首地址在每個(gè)進(jìn)程的頁(yè)表和頁(yè)目錄表中都抄一份,那么每個(gè)進(jìn)程就可以共享同一個(gè)操作系統(tǒng)的代碼了。

虛擬內(nèi)存地址通常絕不等于物理內(nèi)存地址,隔了十萬(wàn)八千里,風(fēng)牛馬不相及。

當(dāng)然,頁(yè)表和頁(yè)目錄中有很多不對(duì)應(yīng)物理內(nèi)存頁(yè)的空項(xiàng),這些空項(xiàng)要么是程序沒(méi)用到那么多的內(nèi)存,要么該頁(yè)放在了硬盤(pán)上,這些信息在頁(yè)表項(xiàng)和頁(yè)目錄表項(xiàng)的指定位上有標(biāo)記指示,當(dāng)MMU查到這些頁(yè)表項(xiàng)或頁(yè)目錄表項(xiàng)時(shí),會(huì)根據(jù)標(biāo)記確定是出錯(cuò)(因?yàn)樵L問(wèn)了程序使用范圍外的虛擬內(nèi)存地址)或者調(diào)入硬盤(pán)中對(duì)應(yīng)的映射頁(yè)到內(nèi)在存并登記頁(yè)表和頁(yè)目錄更改對(duì)應(yīng)項(xiàng)的標(biāo)記。

同樣,即使沒(méi)有映射到硬盤(pán)上一個(gè)字節(jié),你的程序全部裝載到物理內(nèi)存,進(jìn)程使用的還是虛擬內(nèi)存地址,因?yàn)樘摂M內(nèi)存和是否使用硬盤(pán)沒(méi)有必然關(guān)系,說(shuō)的直白一點(diǎn),即使一臺(tái)沒(méi)有硬盤(pán)的電腦,它也能使用虛擬內(nèi)存。

系統(tǒng)并不機(jī)械地建立一個(gè)從00000000h到0ffffffffh的4GB虛擬內(nèi)存映射的頁(yè)表和頁(yè)目錄,只對(duì)那些隔三插王的使用了的虛擬地址才建立對(duì)應(yīng)的頁(yè)表和頁(yè)目錄,否則的話,小小的內(nèi)存全被一個(gè)個(gè)進(jìn)程的頁(yè)表和頁(yè)目錄填滿了。



這些基本原理明白后就可以清醒了。
?



    • 對(duì)我有用[2]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • tumen
  • (tumen)

  • 等 級(jí):

#16樓 得分:0回復(fù)于:2009-06-19 20:22:50

在WindowXP上編程,就是在使用虛擬內(nèi)存。
?



    • 對(duì)我有用[1]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • jcsnwpu
  • 等 級(jí):

#17樓 得分:0回復(fù)于:2009-06-20 09:37:34



引用 16 樓 tumen
的回復(fù):
在WindowXP上編程,就是在使用虛擬內(nèi)存。 tumen:
?
您好!
感謝你給出的很多原理性的解釋,通俗易懂,讓我學(xué)到了
很多東西.但是,我始終認(rèn)為你把進(jìn)程的虛擬地址空間和虛擬
內(nèi)存的概念搞混淆了,呵呵,也許我太犟,不過(guò)純粹是學(xué)術(shù)討論,
還請(qǐng)不吝賜教.
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • ok1234567
  • (ok1234567)

  • 等 級(jí):

#18樓 得分:3回復(fù)于:2009-06-20 11:12:57

我覺(jué)得,虛擬內(nèi)存與虛擬內(nèi)存管理技術(shù)是不同的概念

虛擬內(nèi)存是與物理內(nèi)存對(duì)應(yīng)的一個(gè)概念,指的是有假包換的假內(nèi)存,也就是用硬盤(pán)充當(dāng)(冒充)的內(nèi)存

至于虛擬內(nèi)存管理技術(shù),進(jìn)程空間那是另外一套符號(hào)體系:)
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • jcsnwpu
  • 等 級(jí):

#19樓 得分:0回復(fù)于:2009-06-20 12:04:06



引用 18 樓 ok1234567 的回復(fù):
我覺(jué)得,虛擬內(nèi)存與虛擬內(nèi)存管理技術(shù)是不同的概念


虛擬內(nèi)存是與物理內(nèi)存對(duì)應(yīng)的一個(gè)概念,指的是有假包換的假內(nèi)存,也就是用硬盤(pán)充當(dāng)(冒充)的內(nèi)存


至于虛擬內(nèi)存管理技術(shù),進(jìn)程空間那是另外一套符號(hào)體系:) 感謝OK1234567的回復(fù),我非常贊同你的解釋.也就是說(shuō),虛擬內(nèi)存和虛擬內(nèi)存管理技術(shù)、進(jìn)程地址
空間是不同的概念。并且虛擬內(nèi)存就是硬盤(pán)充當(dāng)?shù)哪遣糠謨?nèi)存,即是頁(yè)交換文件的一部分。希望大家能得
出個(gè)統(tǒng)一的認(rèn)識(shí),求同存異。
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • bottlebox
  • (瓶盒)
  • 等 級(jí):

#20樓 得分:0回復(fù)于:2009-06-20 13:49:03

我理解:進(jìn)程地址是一個(gè)程序的運(yùn)行空間,程序的運(yùn)行需要在內(nèi)存中進(jìn)行,虛擬內(nèi)存技術(shù)實(shí)現(xiàn)了進(jìn)程地址到內(nèi)存地址的映射。
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • cnzdgs
  • (滿天星\n技術(shù)問(wèn)題請(qǐng)勿私聊)

  • 等 級(jí):





  • 2


    更多勛章

#21樓 得分:3回復(fù)于:2009-06-20 21:04:57

虛擬地址空間包括已分配和未分配的空間,已分配的就是虛擬內(nèi)存,虛擬內(nèi)存的儲(chǔ)存單元可能是物理內(nèi)存,也可能是磁盤(pán)文件。
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • zufei
  • (Vc豬仔)

  • 等 級(jí):

#22樓 得分:2回復(fù)于:2009-06-21 01:24:59

記得以前的286,386 CPU內(nèi)存是分開(kāi)的,一個(gè)是代碼段,另外一個(gè)數(shù)據(jù)段,后來(lái)到MMX
就改了,好像說(shuō)用線性內(nèi)存管理,
我覺(jué)得tumen兄,講的是CPU對(duì)內(nèi)存尋址技術(shù)(虛擬內(nèi)存管理技術(shù))好像是單片機(jī)8031+RAM
而所謂"虛擬內(nèi)存"是在Win系統(tǒng)下建立,有相應(yīng)多的硬件I/O支持,有不經(jīng)CPU的大流量數(shù)據(jù)塊傳輸(DMA),有硬盤(pán)..等等!

隨便說(shuō)說(shuō)而已,錯(cuò)了多多包涵!

?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • tumen
  • (tumen)

  • 等 級(jí):

#23樓 得分:0回復(fù)于:2009-06-21 14:23:29

我在樓主的帖子上耗費(fèi)的時(shí)間已有5個(gè)小時(shí),(不要認(rèn)為僅僅是打幾十個(gè)字的時(shí)間,我要針對(duì)問(wèn)題去長(zhǎng)時(shí)間思考和組織語(yǔ)言,目的是用簡(jiǎn)單的語(yǔ)言說(shuō)明白,我從不喜歡從GOOGLE的搜索結(jié)果中粘貼,我認(rèn)為我知道的我一定能說(shuō)明白),但我認(rèn)為這點(diǎn)時(shí)間還是值得。很大的原因在于我不想讓曾經(jīng)困惑我很久的問(wèn)題讓后來(lái)者再踏上同一條曲折的彎路。


引用 7 樓 jcsnwpu 的回復(fù):
非常感謝以上各位的回答,談?wù)勛约旱目捶ā?

microyzy:虛擬內(nèi)存就是你的程序能訪問(wèn)到的那些內(nèi)存,我認(rèn)為這句話是不確切的。程序的進(jìn)程地址空間的用戶區(qū)所有映射的內(nèi)存,我的程序應(yīng)該都能訪問(wèn),包括實(shí)際的物理內(nèi)存。

tumen:虛擬內(nèi)存是一個(gè)4GB的地址空間,-----。我認(rèn)為虛擬內(nèi)存理論上是最大值是4GB的地址空間(32位尋址),但實(shí)際上虛擬內(nèi)存僅僅是進(jìn)程地址中映射到頁(yè)交換文件中的那部分。

wocow3:說(shuō)虛擬內(nèi)存就是頁(yè)文件并不正確,映射文件的部分后援存儲(chǔ)器都是直接對(duì)應(yīng)磁盤(pán)文件的,而不是頁(yè)文件。文件映射部分絕對(duì)不是虛擬內(nèi)存機(jī)制。


綜合以上各位的回答,有幾個(gè)相互混淆的概念:
1、進(jìn)程地址空間和虛擬內(nèi)存應(yīng)該不是同一概念,在tumen的敘述中我覺(jué)得存在將兩者等價(jià)的嫌疑;

2、虛擬內(nèi)存和實(shí)際的物理內(nèi)存絕對(duì)不是一個(gè)誰(shuí)包含于誰(shuí)的概念。在tumen、wocow3的敘述中都有將物理內(nèi)存劃入到是虛擬內(nèi)存機(jī)制的一部分之嫌疑。我覺(jué)得虛擬內(nèi)存應(yīng)該是相對(duì)于物理內(nèi)存而言的。


目前我的理解:

每個(gè)進(jìn)程都有個(gè)4G的進(jìn)程虛擬地址空間,虛擬地址空間和實(shí)際的物理存儲(chǔ)介質(zhì)(包括物理內(nèi)存、硬盤(pán)等)具有映射關(guān)系,而映射到頁(yè)交換文件的那部分即為虛擬內(nèi)存。


請(qǐng)大家批評(píng)修正。
?
對(duì)于以上問(wèn)題和疑惑我認(rèn)為我已經(jīng)說(shuō)明白了,但又為什么不能讓人明白,我只好模擬通常學(xué)東西的方法,上GOOGLE搜了一下“虛擬內(nèi)存”,我明白了,我也想起了我以前走的彎路。
?
又是微軟,又是WINDOWS,還是微軟,還是WINDOWS。
? 再說(shuō)兩段,能明白就明白吧。
???
?
1.如果是網(wǎng)管,或者經(jīng)常修機(jī)裝系統(tǒng),能把虛擬內(nèi)存理解成你設(shè)置在硬盤(pán)的C盤(pán)或D盤(pán)或E盤(pán)等邏輯盤(pán)上一個(gè)多達(dá)幾百M(fèi)B或幾個(gè)GB的交換文件,沒(méi)錯(cuò),按照微軟或者WINDOWS的定義沒(méi)錯(cuò),你是合格的,勝任自己的工作。
?
2.如果是編程,特別是中低層相關(guān)的系統(tǒng)編程(相對(duì)于網(wǎng)頁(yè)、PHOTOSHOP\3DMAX等),按MS的定義你必將走上和我曾經(jīng)一樣的充滿困惑和疑慮的彎路。

?
建議兩條路可走:A.抱緊MS的教條,繼續(xù)疑惑別人的一些觀點(diǎn)并一直疑惑下去,成為程序生涯中一個(gè)不愿面對(duì)的死胡同。B.讓MS的教條去死吧,去接受一個(gè)真正的、開(kāi)放意義上的虛擬內(nèi)存,讓自己對(duì)電腦軟硬件的認(rèn)識(shí)有一個(gè)更高視野。低眉信首,疑云隨風(fēng)散。

?
也許我的效率低了,近兩個(gè)小時(shí),但我還是希望都能明白。
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • codewarrior
  • (會(huì)思考的草)

  • 等 級(jí):

#24樓 得分:0回復(fù)于:2009-06-21 22:55:38

真是無(wú)語(yǔ)了,刨根問(wèn)底是好的,但是不能像孔乙己那樣追究茴香豆茴字的寫(xiě)法,那就變成了掉書(shū)袋了,毫無(wú)意義。
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • zufei
  • (Vc豬仔)

  • 等 級(jí):

#25樓 得分:0回復(fù)于:2009-06-22 00:35:48

其實(shí)“虛擬內(nèi)存”是宏觀概念!就好像兩父子,父親(CPU有虛擬的技術(shù)),到兒子(系統(tǒng))繼承了該技術(shù),再發(fā)揚(yáng)光大應(yīng)用到硬盤(pán)上!只不過(guò)一些人講他父親的屬性,一些講兒子的屬性,一些講他家族的屬性!
大家都有道理!!
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • jcsnwpu
  • 等 級(jí):

#26樓 得分:0回復(fù)于:2009-06-22 08:38:41



引用 24 樓 codewarrior
的回復(fù):
真是無(wú)語(yǔ)了,刨根問(wèn)底是好的,但是不能像孔乙己那樣追究茴香豆茴字的寫(xiě)法,那就變成了掉書(shū)袋了,毫無(wú)意義。


感謝您的回復(fù).其實(shí)虛擬內(nèi)存對(duì)WINDOWS編程人員來(lái)是說(shuō),是相當(dāng)重要的一個(gè)概念.也許有很多人像我這樣
地在困惑,也許是我的領(lǐng)悟能力太差,但絕不是孔乙己的茴香豆,謝謝.
?



    • 對(duì)我有用[0]

    • 丟個(gè)板磚[0]

    • 引用

    • 舉報(bào)

    • 管理

  • TOP

?

?




  • jcsnwpu
  • 等 級(jí):

#27樓 得分:0回復(fù)于:2009-06-22 08:59:12

感謝大家,感謝microyzy,tumen,wocow3,ok1234567,cnzdgs,zufei.
討論是必要的,爭(zhēng)議也是將認(rèn)識(shí)和技術(shù)升華的一種的動(dòng)力.或許最終沒(méi)有得出一個(gè)
統(tǒng)一的結(jié)論,但是我還是從這個(gè)帖子中受益良多.
最后尤其要感謝tuemn,在這個(gè)帖子上花費(fèi)了很多寶貴的時(shí)間,甚至讓我一度不能贊成
他的觀念,但腦子里卻認(rèn)為他應(yīng)該是對(duì)的,自己盡量朝他的方向去想.但遺憾的是,他最終
未能說(shuō)服我,也許他的觀點(diǎn)是對(duì)的.最后,也想給tumen一點(diǎn)建議:你說(shuō)的很多,也很詳細(xì),
從原理上講也是對(duì)的,但更多的是缺少回答問(wèn)題的針對(duì)性,比如我一再和你強(qiáng)調(diào)的進(jìn)程地址
空間和你說(shuō)的虛擬內(nèi)存到底是什么區(qū)別等,你從未正面回答這些問(wèn)題.
最后,謝謝大家.祝大家工作順利,月月加薪!

轉(zhuǎn)載于:https://www.cnblogs.com/dirichlet/archive/2011/03/17/1987182.html

總結(jié)

以上是生活随笔為你收集整理的地址空间和虚拟内存(转载)http://topic.csdn.net/u/20090619/10/4c62a13b-536b-4b0a-af09-2271c6a104e1.html...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。