操作系統(tǒng)中的虛擬內(nèi)存
我們知道電腦的硬件中有內(nèi)存條(物理內(nèi)存)、硬盤,當(dāng)內(nèi)存條中的空間不足時操作系統(tǒng)會從硬盤中分配一部分空間當(dāng)作內(nèi)存來使用。這里給大家分享一些關(guān)于操作系統(tǒng)中的虛擬內(nèi)存,希望對大家能有所幫助。
傳統(tǒng)存儲管理方式的特征
各種內(nèi)存管理策略都是為了同時將多個進程保存在內(nèi)存中以便允許多道程序設(shè)計。它們都具有以下兩個共同的特征:
1) 一次性
作業(yè)必須一次性全部裝入內(nèi)存后,方能開始運行。這會導(dǎo)致兩種情況發(fā)生:
· 當(dāng)作業(yè)很大,不能全部被裝入內(nèi)存時,將使該作業(yè)無法運行;
· 當(dāng)大量作業(yè)要求運行時,由于內(nèi)存不足以容納所有作業(yè),只能使少數(shù)作業(yè)先運行,導(dǎo)致多道程序度的下降。
2) 駐留性
作業(yè)被裝入內(nèi)存后,就一直駐留在內(nèi)存中,其任何部分都不會被換出,直至作業(yè)運行結(jié)束。運行中的進程,會因等待I/O而被阻塞,可能處于長期等待狀態(tài)。
局部性原理
要真正理解虛擬內(nèi)存技術(shù)的思想,首先必須了解計算機中著名的局部性原理。著名的 Bill Joy (SUN公司CEO)說過:”在研究所的時候,我經(jīng)常開玩笑地說高速緩存是計算機科學(xué)中唯一重要的思想。事實上,髙速緩存技術(shù)確實極大地影響了計算機系統(tǒng)的設(shè)計。“快表、頁高速緩存以及虛擬內(nèi)存技術(shù)從廣義上講,都是屬于高速緩存技術(shù)。這個技術(shù)所依賴的原理就是局部性原理。局部性原理既適用于程序結(jié)構(gòu),也適用于數(shù)據(jù)結(jié)構(gòu)(更遠(yuǎn)地講,Dijkstra 著名的關(guān)于“goto語句有害”的論文也是出于對程序局部性原理的深刻認(rèn)識和理解)。
局部性原理表現(xiàn)在以下兩個方面:
· 時間局部性:如果程序中的某條指令一旦執(zhí)行,不久以后該指令可能再次執(zhí)行;如果某數(shù)據(jù)被訪問過,不久以后該數(shù)據(jù)可能再次被訪問。產(chǎn)生時間局部性的典型原因,是由于在程序中存在著大量的循環(huán)操作。
· 空間局部性:一旦程序訪問了某個存儲單元,在不久之后,其附近的存儲單元也將被訪問,即程序在一段時間內(nèi)所訪問的地址,可能集中在一定的范圍之內(nèi),這是因為指令通常是順序存放、順序執(zhí)行的,數(shù)據(jù)也一般是以向量、數(shù)組、表等形式簇聚存儲的。
時間局部性是通過將近來使用的指令和數(shù)據(jù)保存到高速緩存存儲器中,并使用高速緩存的層次結(jié)構(gòu)實現(xiàn)??臻g局部性通常是使用較大的高速緩存,并將預(yù)取機制集成到高速緩存控制邏輯中實現(xiàn)。虛擬內(nèi)存技術(shù)實際上就是建立了 “內(nèi)存一外存”的兩級存儲器的結(jié)構(gòu),利用局部性原理實現(xiàn)髙速緩存。
由以上分析可知,許多在程序運行中不用或暫時不用的程序(數(shù)據(jù))占據(jù)了大量的內(nèi)存空間,而一些需要運行的作業(yè)又無法裝入運行,顯然浪費了寶貴的內(nèi)存資源。
請求分頁管理方式實現(xiàn)虛擬內(nèi)存
請求分頁系統(tǒng)建立在基本分頁系統(tǒng)基礎(chǔ)之上,為了支持虛擬存儲器功能而增加了請求調(diào)頁功能和頁面置換功能。請求分頁是目前最常用的一種實現(xiàn)虛擬存儲器的方法。
在請求分頁系統(tǒng)中,只要求將當(dāng)前需要的一部分頁面裝入內(nèi)存,便可以啟動作業(yè)運行。在作業(yè)執(zhí)行過程中,當(dāng)所要訪問的頁面不在內(nèi)存時,再通過調(diào)頁功能將其調(diào)入,同時還可以通過置換功能將暫時不用的頁面換出到外存上,以便騰出內(nèi)存空間。
為了實現(xiàn)請求分頁,系統(tǒng)必須提供一定的硬件支持。除了需要一定容量的內(nèi)存及外存的計算機系統(tǒng),還需要有頁表機制、缺頁中斷機構(gòu)和地址變換機構(gòu)。
頁表機制
請求分頁系統(tǒng)的頁表機制不同于基本分頁系統(tǒng),請求分頁系統(tǒng)在一個作業(yè)運行之前不要求全部一次性調(diào)入內(nèi)存,因此在作業(yè)的運行過程中,必然會出現(xiàn)要訪問的頁面不在內(nèi)存的情況,如何發(fā)現(xiàn)和處理這種情況是請求分頁系統(tǒng)必須解決的兩個基本問題。為此,在請求頁表項中增加了四個字段,
增加的四個字段說明如下:
· 狀態(tài)位P:用于指示該頁是否已調(diào)入內(nèi)存,供程序訪問時參考。
· 訪問字段A:用于記錄本頁在一段時間內(nèi)被訪問的次數(shù),或記錄本頁最近己有多長時間未被訪問,供置換算法換出頁面時參考。
· 修改位M:標(biāo)識該頁在調(diào)入內(nèi)存后是否被修改過。
· 外存地址:用于指出該頁在外存上的地址,通常是物理塊號,供調(diào)入該頁時參考。
缺頁中斷機構(gòu)
在請求分頁系統(tǒng)中,每當(dāng)所要訪問的頁面不在內(nèi)存時,便產(chǎn)生一個缺頁中斷,請求操作系統(tǒng)將所缺的頁調(diào)入內(nèi)存。此時應(yīng)將缺頁的進程阻塞(調(diào)頁完成喚醒),如果內(nèi)存中有空閑塊,則分配一個塊,將要調(diào)入的頁裝入該塊,并修改頁表中相應(yīng)頁表項,若此時內(nèi)存中沒有空閑塊,則要淘汰某頁(若被淘汰頁在內(nèi)存期間被修改過,則要將其寫回外存)。
缺頁中斷作為中斷同樣要經(jīng)歷,諸如保護CPU環(huán)境、分析中斷原因、轉(zhuǎn)入缺頁中斷處理程序、恢復(fù)CPU環(huán)境等幾個步驟。但與一般的中斷相比,它有以下兩個明顯的區(qū)別:
· 在指令執(zhí)行期間產(chǎn)生和處理中斷信號,而非一條指令執(zhí)行完后,屬于內(nèi)部中斷。
· 一條指令在執(zhí)行期間,可能產(chǎn)生多次缺頁中斷。
地址變換機構(gòu)
請求分頁系統(tǒng)中的地址變換機構(gòu),是在分頁系統(tǒng)地址變換機構(gòu)的基礎(chǔ)上,為實現(xiàn)虛擬內(nèi)存,又增加了某些功能而形成的。
若找到要訪問的頁,便修改頁表項中的訪問位(寫指令則還須重置修改位),然后利用頁表項中給出的物理塊號和頁內(nèi)地址形成物理地址。
· 若未找到該頁的頁表項,應(yīng)到內(nèi)存中去查找頁表,再對比頁表項中的狀態(tài)位P,看該頁是否已調(diào)入內(nèi)存,未調(diào)入則產(chǎn)生缺頁中斷,請求從外存把該頁調(diào)入內(nèi)存。
操作系統(tǒng)中的虛擬內(nèi)存相關(guān)文章:
★ 如何合理設(shè)置電腦虛擬內(nèi)存,提高電腦運行速度
★ 32位與64位操作系統(tǒng)的區(qū)別
★ 提高內(nèi)存使用效能的幾種方法
★ 能讓硬盤更快的“孤獨九劍”
★ 介紹幾個妙招加快內(nèi)存運行速度
★ 電腦操作系統(tǒng)藍屏怎么解決
★ 計算機的日常維護
★ 全面釋放C盤被強行占用的空間
★ 電腦死機的原因和處理辦法
★ c盤滿了空間不足怎么辦
本站部分文章來自網(wǎng)絡(luò)或用戶投稿。涉及到的言論觀點不代表本站立場。閱讀前請查看【免責(zé)聲明】發(fā)布者:天下,如若本篇文章侵犯了原著者的合法權(quán)益,可聯(lián)系我們進行處理。本文鏈接:http://www.256680.cn/dnxx/nczs/22758.html
下一篇:深入了解虛擬內(nèi)存