虛擬存儲器(Virtual Memory)是用戶能作為可編址內存對待的虛擬存儲空間,它使用戶邏輯存儲器與物理存儲器分離,是操作系統給用戶提供的一個比真實內存空間大得多的地址空間。就是說,虛擬存儲器并不是實際的內存,它的大小比內存空間大得多;用戶感覺所能使用的“內存”非常大,這是操作系統對邏輯內存的擴充。
實現虛擬存儲技術的物質基礎是二級存儲器結構和動態地址轉換機構。經過操作系統的改造,將內存和外存有機地聯系在一起,在用戶面前呈現一個足以滿足編程需要的特大內存空間。
虛擬存儲器實質上是把用戶地址空間和實際的存儲空間區分開來,當作兩個不同的概念。動態地址轉換機構在程序運行時把邏輯地址轉換成物理地址,以實現動態定位。
應注意,虛擬存儲器雖然給用戶提供了特大地址空間,用戶在編程時一般不必考慮可用空間有多大,但虛擬存儲器的容量不是無限大的。它主要受到兩方面的限制:
① 指令中表示地址的字長。機器指令中表示地址的二進制位數是有限的,如果地址單元以字節編址,且表示地址的字長是16位,則可以表示的地址空間最大是64KB。如果表示地址的字長是32位,則可以表示的地址空間最大是4GB。
② 外存的容量。從實現觀點來看,用戶的程序和數據都必須完整地保存在外存(如硬盤)中。然而,外存容量、傳送速度和使用頻率等方面都受到物理因素的限制。就是說,磁盤的容量有限,并非真正“無窮大”,其傳送速度也不是“無限快”,所以,虛擬空間不可能無限大。
虛擬存儲器的特征
虛擬存儲器的特征可以用16個字來概括:虛擬擴充、部分裝入、離散分配、多次對換。
對于虛擬存儲器這個基本概念應從以下4個方面進行理解,這些也是虛擬存儲器所具有的基本特征:
① 虛擬擴充
虛擬存儲器不是擴大物理內存空間,而是擴充邏輯內存容量。就是說,用戶編程時所用到的地址空間可以遠大于實際內存的容量。例如,實際內存只有1MB,而用戶程序和數據所用的空間卻可以達到10MB或者更多。所以,用戶“感覺”內存擴大了。
② 部分裝入
每個進程不是全部一次性地裝入內存,而是分成若干部分。當進程要執行時,只需將當前運行需要用到的那部分程序和數據裝入內存。以后在運行過程中用到其他部分時,再分別把那些部分從外存調入內存。
③ 離散分配
一個進程分成多個部分,它們沒有被全部裝入內存。即使裝入內存的那部分也不必占用連續的內存空間。這樣,一個進程在內存的部分可能散布在內存的不同地方,彼此并不連續。這樣做,不僅可避免內存空間的浪費,而且為進程動態調入內存提供方便。
④ 多次對換
在一個進程運行期間,它所需的全部程序和數據分成多次調入內存。每次調入一部分,只解決當前需要,而在內存的那些暫時不被使用的程序和數據,可換出到外存的對換區;甚至把暫時不能運行的進程在內存的全部映像都換出到對換區,以騰出盡量多的內存空間供可運行的進程使用。被調出的程序和數據在需要時可以重新調入內存中。
虛擬存儲器根據地址空間的結構不同可以分為分頁虛擬存儲器和分段虛擬存儲器兩類。
責任編輯人:CC
-
存儲器
+關注
關注
38文章
7492瀏覽量
163845 -
虛擬儀器
+關注
關注
22文章
775瀏覽量
87334 -
虛擬存儲器
+關注
關注
0文章
12瀏覽量
8783
發布評論請先 登錄
相關推薦
評論