虛擬記憶體和實體記憶體有什麼關係,實體記憶體和虛擬記憶體有什麼區別

2022-01-07 20:19:20 字數 5178 閱讀 8205

1樓:今夜沒洗腳

簡單來講就是檔案資料交叉連結的活動檔案。是windows目錄下的一個"win386.swp"檔案,這個檔案會不斷地擴大和自動縮小。

虛擬記憶體有如像cpu的l1和l2快取和硬碟的512k-2m快取。具體分析來講如果電腦只有64m實體記憶體的話,當讀取一個為100m的可執行檔案時,就必須要用到比較大虛擬記憶體,檔案先會被記憶體讀取之後就會先儲存到虛擬記憶體,等待記憶體把檔案全部儲存到虛擬記憶體之後,跟住就會把虛擬內裡儲存的檔案釋放到原來的安裝目錄裡了.

實體記憶體是真正的記憶體,基本就是記憶體條上的記憶體。而虛擬記憶體是為了滿足系統對超出實體記憶體容量的需求時在外存(如硬碟)上開闢的儲存空間。

由於虛擬記憶體其實是放在外存上,因而與實體記憶體相比讀寫速度都非常慢。

關於可用實體記憶體的問題:由於系統要佔用一部分實體記憶體,因此可用的實體記憶體必然比總的實體記憶體少。至於多少是正常的,可以參考乾淨的系統進行比較。

既然是虛擬的 是在硬碟上化出一塊空間用來暫時儲存資料 不過需要不停的讀出寫入 很費硬碟的。

2樓:匿名使用者

1、應用中的概念。

實體記憶體,在應用中,自然是顧名思義,物理上,真實的插在板子上的記憶體是多大就是多大了。看機器配置的時候,看的就是這個實體記憶體。

虛擬記憶體,這個概念就要稍微瞭解一下cpu了,^_^,只是稍微,畢竟我們現在談的是應用中的概念。我們應該知道,對於一般的32位cpu,有32根地址線,那麼它的定址空間就是4gb。也就是說,如果沒有其他的限制,我們的主機板上最大可以安裝4gb的實體記憶體。

哈哈,一般的機器是不會裝那麼多實體記憶體的,大把的銀子啊,價效比可合不上。程式設計師可不管這個,我們對cpu程式設計,不能一臺機器根據你實體記憶體的大小我編一個程式吧?那也太原始社會了吧。

所以程式設計師都是直接使用的4gb的奢侈的程序空間(或許,不應該用奢侈這麼短視的詞。曾幾何時,128m的實體記憶體也是我們不可想象的呢?)。

這怎麼辦?總不能不用那些程式了吧。好吧,這個問題交給os去解決吧。

這樣,os就提出了一個虛擬記憶體的概念。就是程序、使用者、不必考慮實際上實體記憶體的限制,而直接對4gb的程序空間進行定址。如果所定址的資料實際上不在實體記憶體中,那就從「虛擬記憶體」中來獲取。

這個虛擬記憶體可以是一個專門檔案格式的磁碟分割槽(比如linux下的swap分割槽),也可以是硬碟上的某個足夠大的檔案(比如win下的那個i386檔案,好像是這個名字)。實體記憶體中長期不用的資料,也可以轉移到虛擬記憶體中。這樣的交換由os來控制,使用者看起來就好像實體記憶體大了一樣。

有了虛擬記憶體的概念,我們就可以自由的使用4gb的程序空間了。但是,前提是你的硬碟由足夠的空間,而且你捨得劃分出(4gb-實體記憶體)大的虛擬記憶體空間來。^_^。

一般情況下,虛擬記憶體的大小,各個os也進行了限制(比如linux的swap分割槽的大小,win下也可以調整虛擬記憶體檔案的大小和位置)。所以,我們程式所能使用的儲存空間大小就是:實體記憶體+虛擬記憶體。

2、cpu中的概念。

實體記憶體,cpu的地址線可以直接進行定址的記憶體空間大小。比如8086只有20根地址線,那它的定址空間就是1mb。我們就說8086能支援1mb的實體記憶體。

即使我們安裝了128m的記憶體條在板子上,我們也只能說8086擁有1mb的實體記憶體空間。同理32位的386以上cpu,就可以支援最大4gb的實體記憶體空間了。

虛擬記憶體,這便是一個和cpu的定址方式有關的一個概念了。x86體系結構中,為了更好的管理記憶體空間,採用分段的方式來對記憶體進行定址。比如8086就用兩個位元組的段基地址和兩個位元組的偏移地址來定址整個可以定址的記憶體空間,即:

0000:0000方式(具體怎麼計算出實際的地址,參見各種彙編教材)。這樣,對整個1mb的實體記憶體空間定址是沒有問題了。

可是,用這種方式,最大可以定址到10ffef這個地址。這超出了20根地址線的地址的ffef大小的空間,就可以說是8086的虛擬記憶體了,所以可以說8086的虛擬記憶體地址空間可以達到10ffef。^_^,具體怎麼使用和看待這段記憶體,還取決於a20線的選通與否了,這是另外的話題了。

同樣的道理,386以上的cpu,由於在保護模式下使用了gdt和ldt,將段的定義放到了記憶體中,從而可以使用16位的段地址和32位的偏移地址。這樣算來,386以上的cpu的虛擬記憶體地址空間就可以達到64tb了。真是大的驚人,看來,這麼大的地址空間,一時還不能被軟體的發展淘汰。

3、零碎的叫法。

零碎的叫法常常來自與相對感覺深奧詼澀的虛擬記憶體概念。物理的東西,人們大多不去碰它,畢竟是實實在在存在的。而虛擬記憶體就經常有別冒名頂替的。

「一個程序有4個gb的虛擬記憶體」這樣的說法屢見不鮮,其實,這是混淆了4gb的程序地址空間和虛擬記憶體這兩個概念。也算令一種解釋吧,畢竟那4個gb也是見不著影的,也是虛擬的。

3樓:光天翰計璟

1m硬碟=1m虛擬記憶體

記憶體的效能

遠遠大於

虛擬記憶體

一般虛擬記憶體大小

設定成記憶體大小的1.5倍

4樓:饒若南樂掣

虛擬記憶體是在硬碟中,實體記憶體是直接加上電腦裡面的!

實體記憶體比虛擬的快十幾倍!

5樓:匿名使用者

虛擬記憶體,就是通過軟體手段從磁碟上劃出一塊位置,所以虛擬記憶體一般不能超過實體記憶體.虛擬記憶體一般就是當作備用的,它依賴於實體記憶體.

6樓:

coshxb說的也不完全正確哦

如果實體記憶體在夠用的情況下 一般不會動用虛擬記憶體的,而且 如果盲目的把虛擬記憶體設定的超大的話,關機的時候 系統就會慢很多的

7樓:

實體記憶體就是實際的記憶體,就是指我們平常看到的記憶體條。而虛擬記憶體是為了滿足系統的處理要求,而拿出系統硬碟的一小部分來作為處理臨時檔案的那麼一個區域,由於其處理的功能根記憶體差不多所以叫做虛擬記憶體!!!!

8樓:鄔櫻

實體記憶體。就是你自己真正擁有的記憶體。

虛擬記憶體,就是通過軟體手段,從其他儲存器中劃分出一部分儲存空間用來做記憶體。一般是從硬碟上劃分的。雖然硬碟的讀取速度沒有記憶體快,但是硬碟的空間比記憶體要大很多,所以可以把虛擬記憶體的大小設定的比較大。

9樓:依明智桑恆

1m換1m

虛擬記憶體和實體記憶體的功能是一致的,只是效能有差異。就速度而言,再多的虛擬記憶體也比不上實體記憶體。但是虛擬記憶體有一個實體記憶體很難比擬的優勢--夠大而且便宜。

所謂記憶體就是一個資料的臨時儲存和交換空間,實體記憶體以其高速性滿足了cpu對資料供給速度的需求,但是高速的代價是**(想想記憶體1g多少錢,硬碟1g多少錢)。而且實體記憶體沒有辦法完全滿足cpu對資料量的需求,因為成本高了。

要想在高速和成本之間選擇一個折衷的方案,那就是虛擬記憶體技術。用一定的硬碟空間虛擬成記憶體空間,配合實體記憶體,滿足cpu的資料的「速」和「量」這兩方面的需求。

當然,要是足夠有錢,給電腦配上足夠多的記憶體,虛擬記憶體也可以不用,比如用win

xp的電腦配上2g實體記憶體,就可以禁用虛擬記憶體了。這樣速度當然更快了。

實體記憶體和虛擬記憶體有什麼區別

10樓:喜鯤黨北晶

1、應用中的概念。

實體記憶體,在應用中,自然是顧名思義,物理上,真實的插在板子上的記憶體是多大就是多大了。看機器配置的時候,看的就是這個實體記憶體。

虛擬記憶體,這個概念就要稍微瞭解一下cpu了,^_^,只是稍微,畢竟我們現在談的是應用中的概念。我們應該知道,對於一般的32位cpu,有32根地址線,那麼它的定址空間就是4gb。也就是說,如果沒有其他的限制,我們的主機板上最大可以安裝4gb的實體記憶體。

哈哈,一般的機器是不會裝那麼多實體記憶體的,大把的銀子啊,價效比可合不上。程式設計師可不管這個,我們對cpu程式設計,不能一臺機器根據你實體記憶體的大小我編一個程式吧?那也太原始社會了吧。

所以程式設計師都是直接使用的4gb的奢侈的程序空間(或許,不應該用奢侈這麼短視的詞。曾幾何時,128m的實體記憶體也是我們不可想象的呢?)。

這怎麼辦?總不能不用那些程式了吧。好吧,這個問題交給os去解決吧。

這樣,os就提出了一個虛擬記憶體的概念。就是程序、使用者、不必考慮實際上實體記憶體的限制,而直接對4gb的程序空間進行定址。如果所定址的資料實際上不在實體記憶體中,那就從「虛擬記憶體」中來獲取。

這個虛擬記憶體可以是一個專門檔案格式的磁碟分割槽(比如linux下的swap分割槽),也可以是硬碟上的某個足夠大的檔案(比如win下的那個i386檔案,好像是這個名字)。實體記憶體中長期不用的資料,也可以轉移到虛擬記憶體中。這樣的交換由os來控制,使用者看起來就好像實體記憶體大了一樣。

有了虛擬記憶體的概念,我們就可以自由的使用4gb的程序空間了。但是,前提是你的硬碟由足夠的空間,而且你捨得劃分出(4gb-實體記憶體)大的虛擬記憶體空間來。^_^。

一般情況下,虛擬記憶體的大小,各個os也進行了限制(比如linux的swap分割槽的大小,win下也可以調整虛擬記憶體檔案的大小和位置)。所以,我們程式所能使用的儲存空間大小就是:實體記憶體+虛擬記憶體。

2、cpu中的概念。

實體記憶體,cpu的地址線可以直接進行定址的記憶體空間大小。比如8086只有20根地址線,那它的定址空間就是1mb。我們就說8086能支援1mb的實體記憶體。

即使我們安裝了128m的記憶體條在板子上,我們也只能說8086擁有1mb的實體記憶體空間。同理32位的386以上cpu,就可以支援最大4gb的實體記憶體空間了。

虛擬記憶體,這便是一個和cpu的定址方式有關的一個概念了。x86體系結構中,為了更好的管理記憶體空間,採用分段的方式來對記憶體進行定址。比如8086就用兩個位元組的段基地址和兩個位元組的偏移地址來定址整個可以定址的記憶體空間,即:

0000:0000方式(具體怎麼計算出實際的地址,參見各種彙編教材)。這樣,對整個1mb的實體記憶體空間定址是沒有問題了。

可是,用這種方式,最大可以定址到10ffef這個地址。這超出了20根地址線的地址的ffef大小的空間,就可以說是8086的虛擬記憶體了,所以可以說8086的虛擬記憶體地址空間可以達到10ffef。^_^,具體怎麼使用和看待這段記憶體,還取決於a20線的選通與否了,這是另外的話題了。

同樣的道理,386以上的cpu,由於在保護模式下使用了gdt和ldt,將段的定義放到了記憶體中,從而可以使用16位的段地址和32位的偏移地址。這樣算來,386以上的cpu的虛擬記憶體地址空間就可以達到64tb了。真是大的驚人,看來,這麼大的地址空間,一時還不能被軟體的發展淘汰。

3、零碎的叫法。

零碎的叫法常常來自與相對感覺深奧詼澀的虛擬記憶體概念。物理的東西,人們大多不去碰它,畢竟是實實在在存在的。而虛擬記憶體就經常有別冒名頂替的。

「一個程序有4個gb的虛擬記憶體」這樣的說法屢見不鮮,其實,這是混淆了4gb的程序地址空間和虛擬記憶體這兩個概念。也算令一種解釋吧,畢竟那4個gb也是見不著影的,也是虛擬的。

虛擬記憶體與實體記憶體有什麼區別拜託各位了3Q

物理內即你電腦主機板記憶體槽上的實際容量。虛擬記憶體是當實體記憶體不夠用時系統自動從硬碟空間劃分一些容量出來當做虛擬記憶體使用 即輔助實體記憶體 當執行的程式很大或很多,導致記憶體消耗殆盡時。windows中會運用虛擬記憶體技術,即拿出一部分硬碟空間來充當記憶體使用,當記憶體佔用完時,電腦就會自動呼...

記憶體和外存有什麼關係,電腦作業系統與記憶體有什麼關係?

記憶體是計算機中重要的部件之一,它是與cpu進行溝通的橋樑。計算機中所有程式的執行都是在記憶體中進行的,因此記憶體的效能對計算機的影響非常大。記憶體 memory 也被稱為記憶體儲器,其作用是用於暫時存放cpu中的運算資料,以及與硬碟等外部儲存器交換的資料。只要計算機在執行中,cpu就會把需要運算的...

快取和虛擬記憶體設定,快取和虛擬記憶體的區別

你先要了解虛擬記憶體原理,虛擬記憶體就是在你電腦記憶體滿了之後 多數在你開了太多視窗,或是玩很厲害的遊戲,如天堂2 電腦自動分配些需要放到記憶體的檔案到你電腦硬碟上,至於放到那個盤,放多少,這是由使用者設定的.在我的電腦裡有,初始大小就是一開電腦,電腦就已經把硬碟的多少mb當作虛擬記憶體,不能往裡面...