當前位置:首頁 » 服務存儲 » 虛擬存儲地址空間和主存地址空間
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

虛擬存儲地址空間和主存地址空間

發布時間: 2022-05-17 08:41:01

⑴ 物理內存和虛擬內存又是什麼

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了。真是大的驚人,看來,這么大的地址空間,一時還不能被軟體的發展淘汰。

⑵ 硬碟內存和虛擬內存分別指什麼

內存和虛擬內存各自的作用
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也是見不著影的,也是虛擬的。

⑶ 虛擬存儲器技術主要用於解決什麼問題簡述虛擬存儲器的基本工作原理。

虛擬存儲器技術主要解決電腦內存不夠的問題,電腦中所運行的程序均需經由內存執行,若執行的程序佔用內存很大或很多,則會導致內存消耗殆盡。

為解決該問題,Windows中運用了虛擬內存技術,即勻出一部分硬碟空間來充當內存使用。當內存耗盡時,電腦就會自動調用硬碟來充當內存,以緩解內存的緊張。若計算機運行程序或操作所需的隨機存儲器(RAM)不足時,則 Windows 會用虛擬存儲器進行補償。

工作原理

1、中央處理器訪問主存的邏輯地址分解成組號a和組內地址b,並對組號a進行地址變換,即將邏輯組號a作為索引,查地址變換表,以確定該組信息是否存放在主存內。

2、如該組號已在主存內,則轉而執行④;如果該組號不在主存內,則檢查主存中是否有空閑區,如果沒有,便將某個暫時不用的組調出送往輔存,以便將這組信息調入主存。

3、從輔存讀出所要的組,並送到主存空閑區,然後將那個空閑的物理組號a和邏輯組號a登錄在地址變換表中。

4、從地址變換表讀出與邏輯組號a對應的物理組號a。

5、從物理組號a和組內位元組地址b得到物理地址。

6、根據物理地址從主存中存取必要的信息。


(3)虛擬存儲地址空間和主存地址空間擴展閱讀:

相關概念

1、實地址與虛地址

用戶編製程序時使用的地址稱為虛地址或邏輯地址,其對應的存儲空間稱為虛存空間或邏輯地址空間;而計算機物理內存的訪問地址則稱為實地址或物理地址,其對應的存儲空間稱為物理存儲空間或主存空間。程序進行虛地址到實地址轉換的過程稱為程序的再定位。

2、虛擬內存的訪問過程

虛存空間的用戶程序按照虛地址編程並存放在輔存中。程序運行時,由地址變換機構依據當時分配給該程序的實地址空間把程序的一部分調入實存。

每次訪存時,首先判斷該虛地址所對應的部分是否在實存中:如果是,則進行地址轉換並用實地址訪問主存;否則,按照某種演算法將輔存中的部分程序調度進內存,再按同樣的方法訪問主存。

3、異構體系

從虛存的概念可以看出,主存-輔存的訪問機制與cache-主存的訪問機制是類似的。這是由cache存儲器、主存和輔存構成的三級存儲體系中的兩個層次。cache和主存之間以及主存和輔存之間分別有輔助硬體和輔助軟硬體負責地址變換與管理,以便各級存儲器能夠組成有機的三級存儲體系。

⑷ 求解一道簡答題:虛擬存儲器與主存儲器的差別是什麼

你好,主存儲器(Main memory),簡稱主存。是計算機硬體的一個重要部件,其作用是存放指令和數據,並能由中央處理器(CPU)直接隨機存取。現代計算機是為了提高性能,又能兼顧合理的造價,往往採用多級存儲體系。即由存儲容量小,存取速度高的高速緩沖存儲器,存儲容量和存取速度適中的主存儲器是必不可少的。
虛擬存儲器一般指虛擬內存,虛擬內存是計算機系統內存管理的一種技術。它使得應用程序認為它擁有連續的可用的內存(一個連續完整的地址空間),而實際上,它通常是被分隔成多個物理內存碎片,還有部分暫時存儲在外部磁碟存儲器上,在需要時進行數據交換。

⑸ 虛擬內存與虛擬地址空間有什麼聯系

1、windows下的虛擬內存指的是在硬碟上建一個文件,用來放置系統非活躍性內存數據或交換數據(怎麼放,放多少由操作系統決定)。

2、虛擬地址空間,指windows下每個進程的私有內存空間,大小是4G,能訪問的是不到2G的空間,其餘是系統保留的.這2G是能訪問的,但並不是立即分配的,當進程使用多少時,才從物理內存中劃分給它多少,劃分的的方式是"映射",操作系統將虛擬內存的起始地址做個標記,標記成對應的物理內存的某個地址上.在這里,只有操作系統知道,進程是沒有任何辦法知道的。

3、這是WINDOWS的高級內存管理機制決定的.物理內存的地址空間,只有操作系統才能訪問(硬體驅動也可以,但已經屬於系統低層了,進程是屬於用戶層)進程虛擬內存空間和物理內存空間的關系僅僅是看不見的映射關系。

4、虛擬內存通常只在系統物理內存用完時,才會使用到,但這個時候系統已經非常卡了.但也不是一點用處沒有,非活躍性進程的部分數據,系統是完全可以放在虛擬內存中的。

5、以上基於32位Windows系統.64位的沒去看過相關的資源,不清楚有沒有變動。

⑹ 主存,內存,緩存,和虛擬儲存器的區別與聯系

1。主存就是內存啦,它是主要的存儲單元,一台計算機的內存(主存)是指CPU能夠通過指令中的地址碼直接訪問的存儲器,常用於存放處於活動狀態的程序和數據。

2。然後還有外存(外部存儲器),它是主存的補充,所以一般又叫它輔存(輔助存儲器),比如光碟、U盤、軟盤、磁帶等。

3。緩存顧名思義就是緩沖寄存器,在CPU同時處理很多數據,而又不可能同時進行所有數據的傳輸的情況,把優先順序底的數據暫時放入緩存中,等優先順序高的數據處理完畢後再把它們從緩存中拿出來進行處理。(它也可以看成是主存的補充)

4。虛擬內存(又稱虛擬存儲器),其實一般主存是不夠用的,計算機通常會在硬碟上劃出一塊區域來虛擬一個內存空間,從而進行對數據和程序的處理,於是硬碟就會產生一個頁面文件PF,它也是主存的擴充。

⑺ 什麼是虛擬存儲器

虛擬存儲器是指具有請求調入功能和置換功能,能從邏輯上對內存容量加以擴充的一種存儲器系統。

功能:基本分頁 + 「請求調頁」和「頁面置換」功能。

換入和換出基本單位都是長度固定的頁面。請求分頁技術的基本思想是:當一個進程的部分頁面在內存時就可調度它運行;在運行過程中若用到的頁面尚未在內存,則把它們動態換入內存。這樣,就減少了對換時間和所需內存數量,允許增加程序的道數。

請求分頁技術是在簡單分頁技術基礎上發展起來的,兩者根本區別是:請求分頁提供虛擬存儲器,而簡單分頁系統並未提供虛擬存儲器。

(7)虛擬存儲地址空間和主存地址空間擴展閱讀

虛擬存儲器地址變換基本上有3種形虛擬存儲器工作過程式:全聯想變換、直接變換和組聯想變換。替換規則用來確定替換主存中哪一部分,以便騰空部分主存,存放來自輔存要調入的那部分內容。常見的替換演算法有4種:

①隨機演算法:用軟體或硬體隨機數產生器確定替換的頁面。

②先進先出:先調入主存的頁面先替換。

③近期最少使用演算法(LRU,Least Recently Used):替換最長時間不用的頁面。

④最優演算法:替換最長時間以後才使用的頁面。這是理想化的演算法,只能作為衡量其他各種演算法優劣的標准。

虛擬存儲器的效率是系統性能評價的重要內容,它與主存容量、頁面大小、命中率,程序局部性和替換演算法等因素有關。

⑻ 虛擬內存與虛擬地址空間

windows下的虛擬內存指的是在硬碟上建一個文件,用來放置系統非活躍性內存數據或交換數據(怎麼放,放多少由操作系統決定)
虛擬地址空間,指windows下每個進程的私有內存空間,大小是4G,能訪問的是不到2G的空間,其餘是系統保留的.這2G是能訪問的,但並不是立即分配的,當進程使用多少時,才從物理內存中劃分給它多少,劃分的的方式是"映射",操作系統將虛擬內存的起始地址做個標記,標記成對應的物理內存的某個地址上.在這里,只有操作系統知道,進程是沒有任何辦法知道的,這是WINDOWS的高級內存管理機制決定的.物理內存的地址空間,只有操作系統才能訪問(硬體驅動也可以,但已經屬於系統低層了,進程是屬於用戶層)進程虛擬內存空間和物理內存空間的關系僅僅是看不見的映射關系.
虛擬內存通常只在系統物理內存用完時,才會使用到,但這個時候系統已經非常卡了.但也不是一點用處沒有,非活躍性進程的部分數據,系統是完全可以放在虛擬內存中的,
以上基於32位Windows系統.64位的沒去看過相關的資源,不清楚有沒有變動.

⑼ 虛擬內存是什麼

虛擬內存是計算機系統內存管理的一種技術。它使得應用程序認為它擁有連續的可用的內存(一個連續完整的地址空間),而實際上,它通常是被分隔成多個物理內存碎片,還有部分暫時存儲在外部磁碟存儲器上,在需要時進行數據交換。目前,大多數操作系統都使用了虛擬內存,如Windows家族的「虛擬內存」;Linux的「交換空間」等。

1、虛擬內存別稱虛擬存儲器(VirtualMemory)。

電腦中所運行的程序均需經由內存執行,若執行的程序佔用內存很大或很多,則會導致內存消耗殆盡。為解決該問題,Windows中運用了虛擬內存技術,即勻出一部分硬碟空間來充當內存使用。

當內存耗盡時,電腦就會自動調用硬碟來充當內存,以緩解內存的緊張。若計算機運行程序或操作所需的隨機存儲器(RAM)不足時,則Windows會用虛擬存儲器進行補償。它將計算機的RAM和硬碟上的臨時空間組合。

當RAM運行速率緩慢時,它便將數據從RAM移動到稱為「分頁文件」的空間中。將數據移入分頁文件可釋放RAM,以便完成工作。一般而言,計算機的RAM容量越大,程序運行得越快。

若計算機的速率由於RAM可用空間匱乏而減緩,則可嘗試通過增加虛擬內存來進行補償。但是,計算機從RAM讀取數據的速率要比從硬碟讀取數據的速率快,因而擴增RAM容量(可加內存條)是最佳選擇。

2、虛擬內存是Windows為作為內存使用的一部分硬碟空間。

虛擬內存在硬碟上其實就是為一個碩大無比的文件,文件名是PageFile.Sys,通常狀態下是看不到的。必須關閉資源管理器對系統文件的保護功能才能看到這個文件。虛擬內存有時候也被稱為是「頁面文件」就是從這個文件的文件名中來的。

⑽ 物理內存和虛擬內存有什麼區別

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也是見不著影的,也是虛擬的。