資源描述:
《ppt示范之虛擬內(nèi)存》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第十章虛擬內(nèi)存10.1背景第九章所介紹的內(nèi)存管理算法都是基于一個(gè)基本要求:執(zhí)行指令必須在物理內(nèi)存中。執(zhí)行前將整個(gè)進(jìn)程放在內(nèi)存中。連續(xù)內(nèi)存分配分頁分段覆蓋是個(gè)例外,但需要程序員特別小心。必須設(shè)計(jì)和編寫覆蓋結(jié)構(gòu)2背景在許多情況下并不需要將整個(gè)程序放到內(nèi)存中處理異常錯(cuò)誤條件的代碼數(shù)組、鏈表和表通常分配了比實(shí)際所需要更多的內(nèi)存。程序的某些選項(xiàng)或特點(diǎn)可能很少使用。即使需要完整程序,也并不是在某時(shí)刻同時(shí)需要(與覆蓋相似)3背景結(jié)論:如果只保存部分程序在內(nèi)存中可運(yùn)行一個(gè)比物理內(nèi)存大的多的程序可以有更多程序同時(shí)運(yùn)行程序運(yùn)行更快4背景虛擬內(nèi)存—物理內(nèi)存和用戶邏輯內(nèi)
2、存的區(qū)分只有部分運(yùn)行的程序需要在內(nèi)存中因此,邏輯地址空間能夠比物理地址空間大允許若干個(gè)進(jìn)程共享地址空間允許更多有效進(jìn)程創(chuàng)建5虛擬內(nèi)存大于物理內(nèi)存的示意圖6背景虛擬內(nèi)存能夠通過以下手段來執(zhí)行:請(qǐng)求頁面調(diào)度(Demandpaging)用戶觀點(diǎn)是分段,而操作系統(tǒng)可以通過請(qǐng)求頁面調(diào)度實(shí)現(xiàn)這一觀點(diǎn)類似于分頁系統(tǒng)加上交換。交換程序?qū)φ麄€(gè)進(jìn)程操作,調(diào)頁程序只對(duì)進(jìn)程的單個(gè)頁進(jìn)行操作請(qǐng)求分段調(diào)度(Demandsegmentation)7分頁的內(nèi)存與鄰接的磁盤空間之間的傳遞8請(qǐng)求頁面調(diào)度只有在一個(gè)頁需要的時(shí)候才把它換入內(nèi)存.需要很少的I/O需要很少的內(nèi)存快速響應(yīng)多用
3、戶需要頁?查閱此頁無效的訪問?中止不在內(nèi)存?換入內(nèi)存9有效-無效位在每一個(gè)頁表的表項(xiàng)有一個(gè)有效-無效位相關(guān)聯(lián)有效:相關(guān)的頁既合法且也在內(nèi)存中無效:相關(guān)的頁不在進(jìn)程的邏輯地址空間內(nèi)或者有效但是在磁盤上10有效-無效位iiiiviv?幀頁表v當(dāng)有些頁不在內(nèi)存中時(shí)的頁表11頁錯(cuò)誤(缺頁)如果只訪問真正需要的并已在內(nèi)存中的頁,那么進(jìn)程就可如同所有頁都已調(diào)入一樣正常運(yùn)行。當(dāng)進(jìn)程試圖訪問那些尚未調(diào)入到內(nèi)存的頁時(shí)?頁錯(cuò)誤陷阱(缺頁)OS查看頁表來決定無效引用?終止僅僅不在內(nèi)存找一個(gè)空閑幀將需要的頁調(diào)入空閑幀重置頁表,有效位為1重啟指令12處理頁錯(cuò)誤的步驟13純
4、粹請(qǐng)求頁面調(diào)度:只有在需要時(shí)才將頁調(diào)入內(nèi)存所有的頁都不在內(nèi)存中,就開始執(zhí)行進(jìn)程,立即出現(xiàn)頁錯(cuò)誤,當(dāng)頁調(diào)入內(nèi)存時(shí),進(jìn)程繼續(xù)執(zhí)行,并不斷出現(xiàn)頁錯(cuò)誤直到所有所需的頁均在內(nèi)存中。14請(qǐng)求頁面調(diào)度的性能頁錯(cuò)誤的概率(缺頁率)0?p?1.0如果p=0,沒有缺頁如果p=1,每次訪問都缺頁有效訪問時(shí)間(EffectiveAccessTime,EAT)EAT=(1–p)*內(nèi)存訪問時(shí)間+p*頁錯(cuò)誤時(shí)間頁錯(cuò)誤時(shí)間主要包含三個(gè)方面:1、處理頁錯(cuò)誤中斷2、讀入頁3、重新啟動(dòng)進(jìn)程15性能舉例內(nèi)存訪問時(shí)間=100ns平均頁錯(cuò)誤處理時(shí)間=25ms有效訪問時(shí)間EAT=(1–p)*
5、100+p*25,000,000=100+24,999,900*p性能與缺頁率直接有關(guān)如果需要性能降低不超過10%->110>100+25000000p->10>25000000p->p<0.0000004毫秒,符號(hào)ms(millisecond)1s=1000ms微秒,符號(hào)μs(microsecond)1ms=1000μs納秒,符號(hào)ns(nanosecond)1μs=1000ns16頁面置換一個(gè)進(jìn)程可能比物理內(nèi)存大多個(gè)進(jìn)程總和可能比物理內(nèi)存大過度分配解決辦法交換頁面置換:修改頁錯(cuò)誤處理程序以包括頁置換17基本方法查找所需頁在磁盤上的位置查找一空
6、閑幀:-如果由空閑幀,那么就使用它.-如果沒有空閑幀,那么就使用頁置換算法以選擇一個(gè)犧牲幀-將犧牲幀的內(nèi)容寫道磁盤上,改變頁表和幀表將所需頁讀入(新)空閑幀,改變頁表和幀表重啟用戶進(jìn)程18頁置換19頁面置換如果沒有空閑幀,那么需要兩次頁傳輸通過修改(臟)位來防止頁面?zhèn)鬏斶^多—只有被修改的頁面才寫回磁盤.通過硬件實(shí)現(xiàn)。頁內(nèi)的任何字或字節(jié)被寫入,硬件就會(huì)設(shè)置修改位頁面置換完善了邏輯內(nèi)存和物理內(nèi)存的劃分—在一個(gè)較小的物理內(nèi)存基礎(chǔ)之上可以提供一個(gè)大的虛擬內(nèi)存.20為實(shí)現(xiàn)請(qǐng)求頁面調(diào)度必須解決兩個(gè)主要問題幀分配算法:給每個(gè)進(jìn)程分配多少幀頁置換算法:怎樣選
7、擇要置換的幀磁盤I/O非常費(fèi)時(shí)->降低缺頁率21頁置換算法需要一個(gè)最小的缺頁率通過運(yùn)行一個(gè)內(nèi)存訪問的特殊序列(訪問序列),計(jì)算這個(gè)序列的缺頁次數(shù)引用串:只考慮頁碼,任何緊跟著的引用不會(huì)出錯(cuò)22內(nèi)存訪問地址順序:0100,0432,0101,0612,0102,0103,0104,0101,0611,0102,0103,0104,0101,0610,0102,0103,0104,0101,0609,0102,0105頁大小100B,頁碼序列:1,4,1,6,1,1,1,1,6,1,1,1,1,6,1,1,1,1,6,1,1引用串:1,4,1,
8、6,1,6,1,6,1,6,123理想的缺頁與幀數(shù)量關(guān)系圖24給定引用串:1,4,1,6,1,6,1,6,1,6,1如果有三幀:3次缺