複製鏈接
請複製以下鏈接發送給好友

虛擬存儲器

鎖定
虛擬存儲器(Virtual Memory):在具有層次結構存儲器的計算機系統中,自動實現部分裝入和部分替換功能,能從邏輯上為用户提供一個比物理貯存容量大得多,可尋址的“主存儲器”。虛擬存儲區的容量與物理主存大小無關,而受限於計算機的地址結構和可用磁盤容量。根據所用的存儲器映像算法,虛擬存儲器管理方式主要有段式、頁式、和段頁式三種。
中文名
虛擬存儲器
外文名
Virtual Memory
詞    目
虛擬存儲器
英    譯
Virtual Memory
近義詞
虛擬內存
結構特徵
內存外存結合
結構目的
虛擬出一個容量極大的內存儲器

虛擬存儲器作用

虛擬存儲器 虛擬存儲器
虛擬內存的作用 內存在計算機中的作用很大,電腦中所有運行的程序都需要經過內存來執行,如果執行的程序很大或很多,就會導致內存消耗殆盡。為了解決這個問題,Windows中運用了虛擬內存技術,即拿出一部分硬盤空間來充當內存使用,當內存佔用完時,電腦就會自動調用硬盤來充當內存,以緩解內存的緊張。舉一個例子來説,如果電腦只有128MB物理內存的話,當讀取一個容量為200MB的文件時,就必須要用到比較大的虛擬內存,文件被內存讀取之後就會先儲存到虛擬內存,等待內存把文件全部儲存到虛擬內存之後,跟着就會把虛擬內存裏儲存的文件釋放到原來的安裝目錄裏了。

虛擬存儲器設置

虛擬存儲器 虛擬存儲器
虛擬內存的設置 對於虛擬內存主要設置兩點,即內存大小和分頁位置,內存大小就是設置虛擬內存最小為多少和最大為多少;而分頁位置則是設置虛擬內存應使用那個分區中的硬盤空間。對於內存大小的設置,如何得到最小值最大值呢?你可以通過下面的方法獲得:選擇“開始→程序→附件→系統工具→系統監視器”(如果系統工具中沒有,可以通過“添加/刪除程序”中的Windows安裝程序進行安裝)打開系統監視器,然後選擇“編輯→添加項目”,在“類型”項中選擇“內存管理程序”,在右側的列表選擇“交換文件大小”。這樣隨着你的操作,會顯示出交換文件值的波動情況,你可以把經常要使用到的程序打開,然後對它們進行使用,這時查看一下系統監視器中的表現值,由於用户每次使用電腦時的情況都不盡相同,因此,最好能夠通過較長時間對交換文件進行監視來找出最符合您的交換文件的數值,這樣才能保證系統性能穩定以及保持在最佳的狀態。 找出最合適的範圍值後,在設置虛擬內存時,用鼠標右鍵點擊“我的電腦”,選擇“屬性”,彈出系統屬性窗口,選擇“性能”標籤,點擊下面“虛擬內存”按鈕,彈出虛擬內存設置窗口,點擊“用户自己指定虛擬內存設置”單選按鈕,“硬盤”選較大剩餘空間的分區,然後在“最小值”和“最大值”文本框中輸入合適的範圍值。如果您感覺使用系統監視器來獲得最大和最小值有些麻煩的話,這裏完全可以選擇“讓Windows管理虛擬內存設置”。

虛擬存儲器調整分頁位置

虛擬存儲器 虛擬存儲器
Windows 9x虛擬內存分頁位置,其實就是保存在C盤根目錄下的一個虛擬內存文件(也稱為交換文件)Win386.swp,它的存放位置可以是任何一個分區,如果系統盤C容量有限,我們可以把Win386.swp調到別的分區中,方法是在記事本中打開System.ini(C:\\Windows下)文件,在[386Enh]小節中,將“PagingDrive=C:WindowsWin 386.swp”,改為其他分區的路徑,如將交換文件放在D:中,則改為“PagingDrive=D:Win386.swp”,如沒有上述語句可以直接鍵入即可。 而對於使用Windows 2000Windows XP的,可以選擇“控制面板→系統→高級→性能”中的“設置→高級→更改”,打開虛擬內存設置窗口,在驅動器[卷標]中默認選擇的是系統所在的分區,如果想更改到其他分區中,首先要把原先的分區設置為無分頁文件,然後再選擇其他分區。
如果你的硬盤夠大,那就請你打開”控制面板“中的“系統”,在“性能”選項中打開“虛擬內存”,選擇第二項:用户自己設定虛擬內存設置,指向一個較少用的硬盤,並把最大值和最小值都設定為一個固定值,大小為物理內存的2倍左右。這樣,虛擬存儲器在使用硬盤時,就不用遷就其忽大忽小的差別,而將固定的空間作為虛擬內存,加快存取速度虛擬內存的設置最好在“磁盤碎片整理”之後進行,這樣虛擬內存就分佈在一個連續的、無碎片文件的空間上,可以更好的發揮作用。

虛擬存儲器使用技巧

虛擬內存使用技巧
虛擬存儲器 虛擬存儲器
對於虛擬內存如何設置的問題,微軟已經給我們提供了官方的解決辦法,對於一般情況下,我們推薦採用如下的設置方法:
(1)在Windows系統所在分區設置頁面文件,文件的大小由你對系統的設置決定。具體設置方法如下:打開"我的電腦"的"屬性"設置窗口,切換到"高級"選項卡,在"啓動和故障恢復"窗口的"寫入調試信息"欄,如果你採用的是"無",則將頁面文件大小設置為2MB左右,如果採用"核心內存存儲"和"完全內存存儲",則將頁面文件值設置得大一些,跟物理內存差不多就可以了。
小提示:對於系統分區是否設置頁面文件,這裏有一個矛盾:如果設置,則系統有可能會頻繁讀取這部分頁面文件,從而加大系統盤所在磁道的負荷,但如果不設置,當系統出現藍屏死機(特別是STOP錯誤)的時候,無法創建轉儲文件 (Memory.dmp),從而無法進行程序調試錯誤報告了。所以折中的辦法是在系統盤設置較小的頁面文件,只要夠用就行了。
虛擬存儲器 虛擬存儲器
(2)單獨建立一個空白分區,在該分區設置虛擬內存,其最小值設置為物理內存的1.5倍,最大值設置為物理內存的3倍,該分區專門用來存儲頁面文件,不要再存放其它任何文件。之所以單獨劃分一個分區用來設置虛擬內存,主要是基於兩點考慮:其一,由於該分區上沒有其它文件,這樣分區不會產生磁盤碎片,這樣能保證頁面文件的數據讀寫不受磁盤碎片的干擾;其二,按照Windows對內存的管理技術,Windows會優先使用不經常訪問的分區上的
頁面文件,這樣也減少了讀取系統盤裏的頁面文件的機會,減輕了系統盤的壓力。
(3)其它硬盤分區不設置任何頁面文件。當然,如果你有多個硬盤,則可以為每個硬盤都創建一個頁面文件。當信息分佈在多個頁面文件上時,硬盤控制器可以同時在多個硬盤上執行讀取和寫入操作。這樣系統性能將得到提高。
提示:
允許設置的虛擬內存最小值為2MB,最大值不能超過當前硬盤的剩餘空間值,同時也不能超過32位操作系統的內存尋址範圍——4GB。

虛擬存儲器相關

虛擬存儲器
為了給用户提供更大的隨機存取空間而採用的一種存儲技術。它將內存外存結合使用,好像有一個容量極大的內存儲器,工作速度接近於主存,每位成本又與輔存相近,在整機形成多層次存儲系統
虛擬存儲器源出於英國ATLAS計算機的一級存儲器概念。這種系統的主存為16千字的磁芯存儲器,但中央處理器可用20位邏輯地址對主存尋址。到1970年,美國RCA公司研究成功虛擬存儲器系統。IBM公司於1972年在IBM370系統上全面採用了虛擬存儲技術。虛擬存儲器已成為計算機系統中非常重要的部分。
虛擬存儲器是由硬件和操作系統自動實現存儲信息調度和管理的。它的工作過程包括6個步驟:①中央處理器訪問主存的邏輯地址分解成組號a和組內地址b,並對組號a進行地址變換,即將邏輯組號a作為索引,查地址變換表,以確定該組信息是否存放在主存內。②如該組號已在主存內,則轉而執行④;如果該組號不在主存內,則檢查主存中是否有空閒區,如果沒有,便將某個暫時不用的組調出送往輔存,以便將這組信息調入主存。③從輔存讀出所要的組,並送到主存空閒區,然後將那個空閒的物理組號a和邏輯組號a登錄在地址變換表中。④從地址變換表讀出與邏輯組號a對應的物理組號a。⑤從物理組號a和組內字節地址b得到物理地址。⑥根據物理地址從主存中存取必要的信息。
調度方式有分頁式、分段式、段頁式3種。頁式調度是將邏輯和物理地址空間都分成固定大小的頁。主存按頁順序編號,而每個獨立編址的程序空間有自己的頁號順序,通過調度輔存中程序的各頁可以離散裝入主存中不同的頁面位置,並可據表一一對應檢索。頁式調度的優點是頁內零頭小,頁表程序員來説是透明的,地址變換快,調入操作簡單;缺點是各頁不是程序的獨立模塊,不便於實現程序和數據的保護。段式調度是按程序的邏輯結構劃分地址空間,段的長度是隨意的,並且允許伸長,它的優點是消除了內存零頭,易於實現存儲保護,便於程序動態裝配;缺點是調入操作複雜。將這兩種方法結合起來便構成段頁式調度。在段頁式調度中把物理空間分成頁,程序按模塊分段,每個段再分成與物理空間頁同樣小的頁面。段頁式調度綜合了段式和頁式的優點。其缺點是增加了硬件成本,軟件也較複雜。大型通用計算機系統多數採用段頁式調度。

虛擬存儲器替換方法

虛擬存儲器隨機算法

用軟件或硬件隨機數產生器確定替換的頁面。

虛擬存儲器先進先出

先調入主存的頁面先替換。

虛擬存儲器最近最少使用算法

替換最長時間不用的頁面。
虛擬存儲器模型 虛擬存儲器模型

虛擬存儲器虛實地址

存儲模型 存儲模型
1、實地址與虛地址用户編制程序時使用的地址稱為虛地址或邏輯地址,其對應的存儲空間稱為虛存空間或邏輯地址空間;而計算機物理內存的訪問地址則稱為實地址或物理地址,其對應的存儲空間稱為物理存儲空間或主存空間。程序進行虛地址到實地址轉換的過程稱為程序的再定位
示意圖 示意圖
2、虛存的訪問過程
虛存空間的用户程序按照虛地址編程並存放在輔存中。程序運行時,由地址變換機構依據當時分配給該程序的實地址空間把程序的一部分調入實存。每次訪存時,首先判斷該虛地址所對應的部分是否在實存中:如果是,則進行地址轉換並用實地址訪問主存;否則,按照某種算法將輔存中的部分程序調度進內存,再按同樣的方法訪問主存。由此可見,每個程序的虛地址空間可以遠大於實地址空間,也可以遠小於實地址空
虛擬存儲器模型 虛擬存儲器模型
間。前一種情況以提高存儲容量為目的,後一種情況則以地址變換為目的。後者通常出現在多用户多任務系統中:實存空間較大,而單個任務並不需要很大的地址空間,較小的虛存空間則可以縮短指令中地址字段的長度。

虛擬存儲器異構體系

從虛存的概念可以看出,主存-輔存的訪問機制與cache-主存的訪問機制是類似的。這是由cache存儲器、主存和輔存構成的三級存儲體系中的兩個層次。cache和主存之間以及主存和輔存之間分別有輔助硬件和輔助軟硬件負責地址變換與管理,以便各級存儲器能夠組成有機的三級存儲體系。cache和主存構成了系統的內存,而主存和輔存依靠輔助軟硬件的支持構成了虛擬存儲器。
地址 地址
在三級存儲體系中,cache-主存和主存-輔存這兩個存儲層次有許多相同點:
(1)出發點相同:二者都是為了提高存儲系統的性能價格比而構造的分層存儲體系,都力圖使存儲系統的性能接近高速存儲器,而價格和容量接近低速存儲器。
(2)原理相同:都是利用了程序運行時的局部性原理把常用的信息塊從相對慢速而大容量的存儲器調入相對高速而小容量的存儲器。
存儲體系
但cache-主存和主存-輔存這兩個存儲層次也有許多不同之處:
存儲體系 存儲體系
(1)側重點不同:cache主要解決主存與CPU的速度差異問題;而就性能價格比的提高而言,虛存主要是解決存儲容量問題,另外還包括存儲管理、主存分配和存儲保護等方面。(2)數據通路不同:CPU與cache和主存之間均有直接訪問通路,cache不命中時可直接訪問主存;而虛存所依賴的輔存與CPU之間不存在直接的數據通路,當主存不命中時只能通過調頁解決,CPU最終還是要訪問主存。
(3)透明性不同:cache的管理完全由硬件完成,對系統程序員應用程序員均透明;而虛存管理由軟件(操作系統)和硬件共同完成,由於軟件的介入,虛存對實現存儲管理的系統程序員不透明,而只對應用程序員透明(段式和段頁式管理對應用程序員“半透明”)。
存儲體系 存儲體系
(4)未命中時的損失不同:由於主存的存取時間是cache的存取時間的5~10倍,而主存的存取速度通常比輔存的存取速度快上千倍,故主存未命中時系統的性能損失要遠大於cache未命中時的損失。虛存機制要解決的關鍵問題 (1)調度問題:決定哪些程序和數據應被調入主存。(2)地址映射問題:在訪問主存時把虛地址變為主存物理地址(這一過程稱為內地址變換);在訪問輔存時把虛地址變成輔存的物理地址(這一過程稱為外地址變換),以便換頁。此外還要解決主存分配、存儲保護與程序再定位等問題。
(3)替換問題:決定哪些程序和數據應被調出主存。
(4)更新問題:確保主存與輔存的一致性。
在操作系統的控制下,硬件和系統軟件為用户解決了上述問題,從而使應用程序的編程大大簡化。

虛擬存儲器頁式調度

1、頁式虛存地址映射
頁式虛擬存儲系統 頁式虛擬存儲系統
頁式虛擬存儲系統中,虛地址空間被分成等長大小的頁,稱為邏輯頁;主存空間也被分成同樣大小的頁,稱為物理頁。相應地,虛地址分為兩個字段:高字段為邏輯頁號,低字段為頁內地址(偏移量);實存地址也分兩個字段:高字段為物理頁號,低字段為頁內地址。通過頁表可以把虛地址(邏輯地址)轉換成物理地址。 在大多數系統中,每個進程對應一個頁表頁表中對應每一個虛存頁面有一個表項,表項的內容包含該虛存頁面所在的主存頁面的地址(物理頁號),以及指示該邏輯頁是否已調入主存的有效位。地址變換時,用邏輯頁號作為頁表內的偏移地址索引頁表(將虛頁號看作頁表數組下標)並找到相應物理頁號,用物理頁號作為實存地址的高字段,再與虛地址的頁內偏移量拼接,就構成完整的物理地址。現代的中央處理機通常有專門的硬件支持地址變換。
2、轉換後援緩衝器
由於頁表通常在主存中,因而即使邏輯頁已經在主存中,也至少要訪問兩次物理存儲器才能實現一次訪存,這將使虛擬存儲器存取時間加倍。為了避免對主存訪問次數的增多,可以對頁表本身實行二級緩存,把頁表中的最活躍的部分存放在高速存儲器中,組成快表。這個專用於頁表緩存的高速存儲部件通常稱為轉換後援緩衝器(TLB)。保存在主存中的完整頁表則稱為慢表。
3、內頁表和外頁表
頁表是虛地址到主存物理地址的變換表,通常稱為內頁表。與內頁表對應的還有外頁表,用於虛地址與輔存地址之間的變換。當主存缺頁時,調頁操作首先要定位輔存,而外頁表的結構與輔存的尋址機制密切相關。例如對磁盤而言,輔存地址包括磁盤機號、磁頭號、磁道號和扇區號等。

虛擬存儲器段式調度

段式虛擬存儲系統
頁式虛擬存儲系統 頁式虛擬存儲系統
段是按照程序的自然分界劃分的長度可以動態改變的區域。通常,程序員把子程序、操作數和常數等不同類型的數據劃分到不同的段中,並且每個程序可以有多個相同類型的段。在段式虛擬存儲系統中,虛地址由段號和段內地址(偏移量)組成。虛地址到實主存地址的變換通過段表實現。每個程序設置一個段表,段表的每一個表項對應一個段。每個表項至少包含下面三個字段: (1)有效位:指明該段是否已經調入實存。
(2)段起址:指明在該段已經調入實存的情況下,該段在實存中的首地址。
(3)段長:記錄該段的實際長度。設置段長字段的目的是為了保證訪問某段的地址空間時,段內地址不會超出該段長度導致地址越界而破壞其他段。
段表本身也是一個段,可以存在輔存中,但一般駐留在主存中。
段式虛擬存儲器有許多優點:
①段的邏輯獨立性使其易於編譯、管理、修改和保護,也便於多道程序共享。
②段長可以根據需要動態改變,允許自由調度,以便有效利用主存空間。
段式虛擬存儲器也有一些缺點:
①因為段的長度不固定,主存空間分配比較麻煩。
②容易在段間留下許多外碎片,造成存儲空間利用率降低。
③由於段長不一定是2的整數次冪,因而不能簡單地像分頁方式那樣用虛地址和實地址的最低若干二進制位作為段內偏移量,並與段號進行直接拼接,必須用加法操作通過段起址與段內偏移量的求和運算求得物理地址。因此,段式存儲管理比頁式存儲管理方式需要更多的硬件支持。

虛擬存儲器段頁式調度

段頁式虛擬存儲器 段頁式虛擬存儲器 [1]
段頁式虛擬存儲器是段式虛擬存儲器和頁式虛擬存儲器的結合。實存被等分成頁。每個程序則先按邏輯結構分段,每段再按照實存的頁大小分頁,程序按頁進行調入和調出操作,但可按段進行編程、保護和共享。它把程序按邏輯單位分段以後,再把每段分成固定大小的頁。程序對主存的調入調出是按頁面進行的,但它又可以按段實現共享和保護,兼備頁式和段式的優點。缺點是在映象過程中需要多次查表。在段頁式虛擬存儲系統中,每道程序是通過一個段表和一組頁表來進行定位的。段表中的每個表目對應一個段,每個表目有一個指向該段的頁表起始地址及該段的控制保護信息。由頁表指明該段各頁在主存中的位置以及是否已裝入、已修改等狀態信息。如果有多個用户在機器上運行,多道程序的每一道需要一個基號,由它指明該道程序的段表起始地址
虛擬地址格式如下:
基號
段號
頁號
頁內地址

虛擬存儲器變換算法

段式管理圖 段式管理圖
虛擬存儲器地址變換基本上有3種形虛擬存儲器工作過程式:全相聯變換、直接變換和組相聯變換。任何邏輯空間頁面能夠變換到物理空間任何頁面位置的方式稱為全相聯變換。每個邏輯空間頁面只能變換到物理空間一個特定頁面的方式稱為直接變換。組聯想變換是指各組之間是直接變換,而組內各頁間則是全相聯變換。替換規則用來確定替換主存中哪一部分,以便騰空部分主存,存放來自輔存要調入的那部分內容。常見的替換算法有4種。 ①隨機算法:用軟件或硬件隨機數產生器確定替換的頁面。
②先進先出:先調入主存的頁面先替換。
③最少使用算法:替換最長時間不用的頁面。
④最優算法:替換最長時間以後才使用的頁面。這是理想化的算法,只能作為衡量其他各種算法優劣的標準。
虛擬存儲器的效率是系統性能評價的重要內容,它與主存容量、頁面大小、命中率程序局部性替換算法等因素有關。
參考資料