存儲(chǔ)虛擬化是一種將物理存儲(chǔ)資源抽象化,發(fā)展的過(guò)程也是軟件能力不斷取代硬件能力的過(guò)程。虛擬存儲(chǔ)技術(shù)其核心目標(biāo)是通過(guò)動(dòng)態(tài)管理內(nèi)存資源,解決物理內(nèi)存容量有限與程序需求不斷增長(zhǎng)之間的矛盾,同時(shí)提升系統(tǒng)運(yùn)行效率和資源利用率,跟著小編一起詳細(xì)了解下吧。
一、虛擬存儲(chǔ)技術(shù)的定義
虛擬存儲(chǔ)技術(shù)是一種通過(guò)軟硬件結(jié)合,將物理內(nèi)存與磁盤(pán)等外部存儲(chǔ)有機(jī)結(jié)合,為用戶提供比實(shí)際物理內(nèi)存容量大得多的邏輯存儲(chǔ)空間的技術(shù)。其核心目標(biāo)是突破物理內(nèi)存容量的限制,實(shí)現(xiàn)內(nèi)存資源的透明擴(kuò)展和高效利用。
關(guān)鍵特征解析:
邏輯擴(kuò)展性
虛擬存儲(chǔ)技術(shù)通過(guò)“欺騙”用戶程序,使其認(rèn)為系統(tǒng)擁有一個(gè)遠(yuǎn)大于物理內(nèi)存的連續(xù)地址空間(如32位系統(tǒng)可達(dá)4GB,64位系統(tǒng)理論支持更大)。實(shí)際數(shù)據(jù)可能分散在主存和輔存中,但用戶無(wú)需感知物理存儲(chǔ)的細(xì)節(jié)。
動(dòng)態(tài)裝入機(jī)制
程序運(yùn)行時(shí),僅將當(dāng)前需要執(zhí)行的代碼和數(shù)據(jù)加載到主存,其余部分暫存于輔存。當(dāng)程序訪問(wèn)未加載的部分時(shí),系統(tǒng)通過(guò)缺頁(yè)中斷自動(dòng)將所需數(shù)據(jù)從輔存調(diào)入主存,實(shí)現(xiàn)“按需加載”。
透明性
對(duì)用戶程序而言,虛擬存儲(chǔ)完全隱藏了物理內(nèi)存與輔存的差異。程序直接使用虛擬地址訪問(wèn)數(shù)據(jù),地址轉(zhuǎn)換、數(shù)據(jù)換入換出等操作由操作系統(tǒng)和硬件(如MMU)自動(dòng)完成。
高效資源利用
基于程序執(zhí)行的局部性原理(時(shí)間局部性和空間局部性),虛擬存儲(chǔ)技術(shù)確保高頻訪問(wèn)的數(shù)據(jù)駐留主存,低頻數(shù)據(jù)暫存輔存,從而在有限物理內(nèi)存下支持更大規(guī)模程序的運(yùn)行。
二、虛擬存儲(chǔ)技術(shù)的實(shí)現(xiàn)原理
虛擬存儲(chǔ)技術(shù)的實(shí)現(xiàn)基于以下關(guān)鍵機(jī)制:
存儲(chǔ)層次結(jié)構(gòu):將主存與輔存統(tǒng)一編址,形成虛擬地址空間。操作系統(tǒng)通過(guò)管理主存和輔存的數(shù)據(jù)交換,使用戶感覺(jué)仿佛擁有一個(gè)連續(xù)的、大容量的存儲(chǔ)空間。
動(dòng)態(tài)裝入機(jī)制:程序運(yùn)行時(shí),僅將當(dāng)前需要執(zhí)行的部分代碼和數(shù)據(jù)裝入主存,其余部分暫留在輔存中。當(dāng)程序訪問(wèn)未裝入主存的部分時(shí),觸發(fā)缺頁(yè)中斷,操作系統(tǒng)再將所需數(shù)據(jù)從輔存調(diào)入主存。
地址映射系統(tǒng):通過(guò)頁(yè)表或段表實(shí)現(xiàn)虛擬地址到物理地址的轉(zhuǎn)換。頁(yè)表記錄虛擬頁(yè)號(hào)與物理頁(yè)框號(hào)的對(duì)應(yīng)關(guān)系,由內(nèi)存管理單元(MMU)執(zhí)行地址轉(zhuǎn)換。為加速尋址,通常采用快表(TLB)緩存最近使用的頁(yè)表項(xiàng)。
頁(yè)面置換策略:當(dāng)主存空間不足時(shí),操作系統(tǒng)根據(jù)置換算法選擇非活動(dòng)頁(yè)面置換到輔存,騰出空間加載所需頁(yè)面。缺頁(yè)中斷機(jī)制確保數(shù)據(jù)調(diào)入的及時(shí)性。
局部性原理支撐:程序執(zhí)行過(guò)程中存在時(shí)間局部性和空間局部性特征,即程序傾向于重復(fù)訪問(wèn)某些代碼段或數(shù)據(jù)塊,以及訪問(wèn)相鄰的存儲(chǔ)單元。虛擬存儲(chǔ)技術(shù)利用這一特性,確保高頻訪問(wèn)數(shù)據(jù)駐留主存,從而保證系統(tǒng)性能。
三、實(shí)現(xiàn)虛擬存儲(chǔ)器的三種方式
分頁(yè)式虛擬存儲(chǔ)器:
原理:將內(nèi)存和磁盤(pán)劃分為固定大小的頁(yè),通過(guò)頁(yè)表管理虛擬頁(yè)與物理頁(yè)框的映射關(guān)系。
特點(diǎn):實(shí)現(xiàn)簡(jiǎn)單,內(nèi)存利用率高,但可能產(chǎn)生內(nèi)部碎片。
應(yīng)用:廣泛應(yīng)用于現(xiàn)代操作系統(tǒng),如Linux、Windows等。
分段式虛擬存儲(chǔ)器:
原理:按程序的邏輯模塊劃分存儲(chǔ)空間,每個(gè)段擁有獨(dú)立的地址空間和長(zhǎng)度。通過(guò)段表管理段的基址和限長(zhǎng)信息。
特點(diǎn):便于共享和保護(hù),支持動(dòng)態(tài)鏈接和動(dòng)態(tài)增長(zhǎng),但可能產(chǎn)生外部碎片。
應(yīng)用:適用于需要邏輯分段管理的場(chǎng)景,如某些嵌入式系統(tǒng)或?qū)S貌僮飨到y(tǒng)。
段頁(yè)式虛擬存儲(chǔ)器:
原理:結(jié)合分段和分頁(yè)技術(shù),先將程序劃分為若干段,再將每個(gè)段劃分為若干頁(yè)。通過(guò)段表和頁(yè)表共同管理虛擬地址到物理地址的轉(zhuǎn)換。
特點(diǎn):兼具分段和分頁(yè)的優(yōu)點(diǎn),既支持邏輯分段管理,又提高內(nèi)存利用率。但實(shí)現(xiàn)復(fù)雜,地址轉(zhuǎn)換開(kāi)銷(xiāo)較大。
應(yīng)用:適用于對(duì)內(nèi)存管理和程序邏輯結(jié)構(gòu)均有較高要求的場(chǎng)景,如大型數(shù)據(jù)庫(kù)系統(tǒng)或高性能計(jì)算平臺(tái)。
虛擬存儲(chǔ)技術(shù)基于程序執(zhí)行的局部性原理,采用分頁(yè)/分段機(jī)制將主存與輔存統(tǒng)一編址,通過(guò)頁(yè)表實(shí)現(xiàn)虛擬地址到物理地址的映射。當(dāng)訪問(wèn)數(shù)據(jù)不在主存時(shí),觸發(fā)缺頁(yè)中斷,操作系統(tǒng)自動(dòng)將所需數(shù)據(jù)從輔存調(diào)入主存。若主存已滿,則通過(guò)頁(yè)面置換算法淘汰非活動(dòng)頁(yè)面,確保內(nèi)存空間高效利用。