操作系统——7.虚拟存储技术
JAVA后端開發(fā)知識總結(jié)(持續(xù)更新…)
虛擬內(nèi)存與虛擬存儲技術(shù)
參考文檔
B站:《王道考研 操作系統(tǒng)》
《現(xiàn)代操作系統(tǒng)》
《虛擬內(nèi)存的那點事兒》
文章目錄
- 虛擬內(nèi)存與虛擬存儲技術(shù)
- 參考文檔
- 一、虛擬內(nèi)存基本概念
- 二、請求分頁管理方式
- 2.1 請求頁表機制
- 2.2 缺頁中斷機構(gòu)
- 2.3 頁面置換算法
一、虛擬內(nèi)存基本概念
??虛擬存儲技術(shù)是內(nèi)存空間擴充的相關(guān)技術(shù),在傳統(tǒng)存儲管理方式的基礎(chǔ)上,結(jié)合內(nèi)存擴充技術(shù)從邏輯上擴充內(nèi)存容量。
- 傳統(tǒng)存儲管理方式的缺點
??一次性:作業(yè)必須一次性全部裝入內(nèi)存后才能開始運行,造成兩個問題:①作業(yè)很大時,不能全部裝入內(nèi)存;②當(dāng)大量作業(yè)要求運行時,無法容納所有作業(yè),只有少量作業(yè)能運行,導(dǎo)致多道程序并發(fā)度下降。
??駐留性:一旦作業(yè)被裝入內(nèi)存,就會一直駐留在內(nèi)存中,直至作業(yè)運行結(jié)束。但在一個時間段內(nèi),只需要訪問作業(yè)的一小部分數(shù)據(jù)即可正常運行,這就導(dǎo)致了內(nèi)存中會駐留大量的、暫時用不到的數(shù)據(jù),浪費了寶貴的內(nèi)存資源。
??上述問題可以通過虛擬存儲技術(shù)解決,可以只裝入部分程序到內(nèi)存就開始運行,虛擬存儲技術(shù)是基于局部性原理的:
- 局部性原理
??時間局部性 :如果執(zhí)行了程序中的某條指令,那么不久后這條指令很有可能再次執(zhí)行;如果某個數(shù)據(jù)被訪問過,不久之后該數(shù)據(jù)很可能再次被訪問。(因為程序中存在大量的循環(huán))
??空間局部性 :一旦程序訪問了某個存儲單元,在不久之后,其附近的存儲單元也很有可能被訪問(因為很多數(shù)據(jù)在內(nèi)存中都是連續(xù)存放的,并且程序的指令也是順序地在內(nèi)存中存放的)。
- 應(yīng)用局部性原理
??高速緩沖技術(shù):時間局部性是通過將近期會頻繁訪問到的指令和數(shù)據(jù)放到更高速的緩存存儲器中,暫時用不到的數(shù)據(jù)放在更低速存儲器中。空間局部性通常是使用較大的高速緩存,并將預(yù)取機制集成到高速緩存控制邏輯中實現(xiàn)。
??虛擬內(nèi)存技術(shù)實際上就是建立了“內(nèi)存一外存”的兩級存儲器的結(jié)構(gòu),利用局部性原理實現(xiàn)髙速緩存。
- 虛擬內(nèi)存
??基于局部性原理,在程序裝入時,可以將程序中很快會用到的部分裝入內(nèi)存,暫時用不到的部分留在外存,然后就可以讓程序開始執(zhí)行。
??在程序執(zhí)行過程中,當(dāng)所訪問的信息不在內(nèi)存時,由操作系統(tǒng)負責(zé)將所需信息從外存調(diào)入內(nèi)存,然后繼續(xù)執(zhí)行程序。
??若內(nèi)存空間不夠,由操作系統(tǒng)負責(zé)將內(nèi)存中暫時用不到的信息換出到外存。在操作系統(tǒng)的管理下,在用戶看來似乎有一個比實際內(nèi)存大得多的內(nèi)存,這就是虛擬內(nèi)存。
??虛擬內(nèi)存的重要意義是它定義了一個連續(xù)的虛擬地址空間,把內(nèi)存擴展到硬盤空間是使用虛擬內(nèi)存的必然結(jié)果。實際上,它通常是被分隔成多個物理內(nèi)存碎片,還有部分暫時存儲在外部磁盤存儲器上,在需要時進行數(shù)據(jù)交換。
??虛擬內(nèi)存為每個進程提供了一個一致的、私有的地址空間,它讓每個進程產(chǎn)生了一種自己在獨享主存的錯覺(每個進程擁有一片連續(xù)完整的內(nèi)存空間)。
??虛擬內(nèi)存的實現(xiàn)需要建立在離散分配的內(nèi)存管理方式的基礎(chǔ)上,與傳統(tǒng)離散內(nèi)存管理技術(shù)的區(qū)別是新增了兩大功能:
二、請求分頁管理方式
??請求分頁存儲管理與基本分頁存儲管理的主要區(qū)別在于新增了請求調(diào)頁和頁面置換功能,根本區(qū)別在于是否將程序所需的全部地址空間都裝入內(nèi)存。請求分頁是目前最常用的一種實現(xiàn)虛擬存儲器的方法。請求分頁存儲管理系統(tǒng)中,在作業(yè)開始運行之前,僅裝入當(dāng)前要執(zhí)行的部分頁即可運行。
2.1 請求頁表機制
2.2 缺頁中斷機構(gòu)
??缺頁中斷是因為當(dāng)前執(zhí)行的指令想要訪問的目標頁面未調(diào)入內(nèi)存而產(chǎn)生的,因此屬于內(nèi)中斷。一條指令在執(zhí)行期間,可能產(chǎn)生多次缺頁中斷。
基本流程:
相應(yīng)的地址變換機構(gòu):
2.3 頁面置換算法
- 最佳置換算法(OPT)
??每次選擇淘汰的頁面將是以后永不使用,或者在最長時間內(nèi)不再被訪問的頁面,這樣可以保證最低的缺頁率。但是,最佳置換算法是無法實現(xiàn)的。
- 先進先出置換算法(FIFO)
??每次選擇淘汰的頁面是最早進入內(nèi)存的頁面。把調(diào)入內(nèi)存的頁面根據(jù)調(diào)入的先后順序排成一個隊列,需要換出頁面時選擇隊頭頁面即可。
- 最近最久未使用置換算法(LRU)
??每次淘汰的頁面是最近最久未使用的頁面。賦予每個頁面對應(yīng)的頁表項中,用訪問字段記錄該頁面自上次被訪問以來所經(jīng)歷的時間t。當(dāng)需要淘汰一個頁面時,選擇現(xiàn)有頁面中 t 值最大的,即最近最久未使用的頁面。
??最佳置換算法性能最好,但無法實現(xiàn);先進先出置換算法實現(xiàn)簡單,但算法性能差;最近最久未使用置換算法性能好,是最接近OPT算法性能的,但是實現(xiàn)起來需要專門的硬件支持,算法開銷大。
??時鐘置換算法是一種性能和開銷較均衡的算法,又稱CLOCK算法,或最近未用算法(LFU)。
- 時鐘置換算法(CLOCK)
??為每個頁面設(shè)置一個訪問位和修改位,再將內(nèi)存中的頁面都通過鏈接指針鏈接成循環(huán)隊列。
??訪問位為1,表示最近訪問過,訪問位為0,表示最近沒訪問過。
??在其它條件都相同時,應(yīng)優(yōu)先淘汰沒有修改過的頁面,避免I/O操作。修改位=0,表示頁面沒有被修改過,修改位=1,表示頁面被修改過。改進型CLOCK置換算法選擇一個淘汰頁面最多會進行四輪掃描。
對比:
總結(jié)
以上是生活随笔為你收集整理的操作系统——7.虚拟存储技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP与 WebService接口的配置
- 下一篇: 万字详述推荐系统经典模型DCN,DCN_