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