傳統(tǒng)存儲管理方式的特征
常規(guī)存儲管理方式具有以下共同的特征:
1) 一次性
作業(yè)必須一次性全部裝入內(nèi)存后苟弛,方能開始運行秆麸。這會導致兩種情況發(fā)生:
- 當作業(yè)很大瓤的,不能全部被裝入內(nèi)存時,將使該作業(yè)無法運行盅抚;
- 當大量作業(yè)要求運行時,由于內(nèi)存不足以容納所有作業(yè)染厅,只能使少數(shù)作業(yè)先運行痘绎,導致多道程序度的下降。
由于內(nèi)存成本很高肖粮,針對以上問題,較為有效的解決方案是從邏輯上擴充內(nèi)存容量尔苦,也就是虛擬存儲技術(shù)需要解決的問題涩馆。
2) 駐留性
- 作業(yè)被裝入內(nèi)存后,就一直駐留在內(nèi)存中允坚,其任何部分都不會被換出魂那,直至作業(yè)運行結(jié)束。運行中的進程稠项,會因等待I/O而被阻塞涯雅,可能處于長期等待狀態(tài)。
許多在程序運行中不用或暫時不用的程序(數(shù)據(jù))占據(jù)了大量的內(nèi)存空間展运,而一些需要運行的作業(yè)又無法裝入運行活逆,顯然浪費了寶貴的內(nèi)存資源。
局部性原理
要真正理解虛擬內(nèi)存技術(shù)的思想拗胜,首先必須了解計算機中著名的局部性原理蔗候。髙速緩存技術(shù)極大地影響了計算機系統(tǒng)的設(shè)計。
局部性原理表現(xiàn)在以下兩個方面:
1) 時間局部性
如果程序中的某條指令一旦執(zhí)行埂软,不久以后該指令可能再次執(zhí)行锈遥;如果某數(shù)據(jù)被訪問過,不久以后該數(shù)據(jù)可能再次被訪問勘畔。產(chǎn)生時間局部性的典型原因所灸,是由于在程序中存在著大量的循環(huán)操作。
2) 空間局部性
一旦程序訪問了某個存儲單元炫七,在不久之后爬立,其附近的存儲單元也將被訪問,即程序在一段時間內(nèi)所訪問的地址诉字,可能集中在一定的范圍之內(nèi)懦尝,這是因為指令通常是順序存放、順序執(zhí)行的壤圃,數(shù)據(jù)也一般是以向量陵霉、數(shù)組、表等形式簇聚存儲的伍绳。
時間局部性是通過將近來使用的指令和數(shù)據(jù)保存到高速緩存存儲器中踊挠,并使用高速緩存的層次結(jié)構(gòu)實現(xiàn)。空間局部性通常是使用較大的高速緩存效床,并將預(yù)取機制集成到高速緩存控制邏輯中實現(xiàn)睹酌。虛擬內(nèi)存技術(shù)實際上就是建立了 “內(nèi)存一外存”的兩級存儲器的結(jié)構(gòu),利用局部性原理實現(xiàn)髙速緩存剩檀。
虛擬存儲器的定義和特征
基于局部性原理憋沿,在程序裝入時,可將程序的一部分裝入內(nèi)存沪猴,而將其余部分留在外存辐啄,即可啟動程序執(zhí)行。在程序執(zhí)行過程中运嗜,當所訪問的信息不在內(nèi)存時壶辜,由操作系統(tǒng)將所需要的部分調(diào)入內(nèi)存,然后繼續(xù)執(zhí)行程序担租。
另一方面砸民,操作系統(tǒng)將內(nèi)存中暫時不使用的內(nèi)容換出到外存上,從而騰出空間存放將要調(diào)入內(nèi)存的信息奋救。這樣岭参,系統(tǒng)好像為用戶提供了一個比實際內(nèi)存大得多的存儲器,稱為虛擬存儲器菠镇。
之所以將其稱為虛擬存儲器冗荸,是因為這種存儲器實際上并不存在,只是由于系統(tǒng)提供了部分裝入利耍、請求調(diào)入和置換功能后(對用戶完全透明)蚌本,給用戶的感覺是好像存在一個比實際物理內(nèi)存大得多的存儲器。虛擬存儲器的最大容量為:min(內(nèi)存+外存隘梨,2^n) 程癌。n為計算機的地址總線位數(shù)赢笨。
虛擬存儲器有以下三個主要特征:
- 多次性摹芙,是指無需在作業(yè)運行時一次性地全部裝入內(nèi)存,而是允許被分成多次調(diào)入內(nèi)存運行筛谚。
- 對換性捻脖,是指無需在作業(yè)運行時一直常駐內(nèi)存锐峭,而是允許在作業(yè)的運行過程中,進行換進和換出可婶。
- 虛擬性沿癞,是指從邏輯上擴充內(nèi)存的容量,使用戶所看到的內(nèi)存容量矛渴,遠大于實際的內(nèi)存容量椎扬。
虛擬內(nèi)存技術(shù)的實現(xiàn)
虛擬內(nèi)存中,允許將一個作業(yè)分多次調(diào)入內(nèi)存。釆用連續(xù)分配方式時蚕涤,會使相當一部分內(nèi)存空間都處于暫時或“永久”的空閑狀態(tài)筐赔,造成內(nèi)存資源的嚴重浪費,而且也無法從邏輯上擴大內(nèi)存容量揖铜。因此茴丰,虛擬內(nèi)存的實需要建立在離散分配的內(nèi)存管理方式的基礎(chǔ)上。虛擬內(nèi)存的實現(xiàn)有以下三種方式:
- 請求分頁存儲管理
- 請求分段存儲管理
- 請求段頁式存儲管理
不管哪種方式蛮位,都需要有一定的硬件支持较沪。一般需要的支持有以下幾個方面:
- 一定容量的內(nèi)存和外存。
- 頁表機制(或段表機制)失仁,作為主要的數(shù)據(jù)結(jié)構(gòu)。
- 中斷機構(gòu)们何,當用戶程序要訪問的部分尚未調(diào)入內(nèi)存萄焦,則產(chǎn)生中斷。
- 地址變換機構(gòu)冤竹,邏輯地址到物理地址的變換拂封。