【第六章】虛擬存儲器
| 本章概念
1.虛擬存儲器概述
- 前面基礎(chǔ)存儲器的缺點
- 有一個共同特點:作業(yè)全部裝入內(nèi)存后方能運行
- 常規(guī)存儲器管理方式的特征:一次性:作業(yè)被一次性全部裝入內(nèi)存;駐留性:作業(yè)一直駐留在內(nèi)存
- 一次性和駐留性使許多在程序運行中不用或暫不用的程序(數(shù)據(jù))占據(jù)了 大量的內(nèi)存空間,使得一些需要運行的作業(yè)無法裝入運行。
- 如何解決【大作業(yè)裝不下、少量作業(yè)得以運行】的問題?解決辦法:擴(kuò)充內(nèi)存、邏輯上擴(kuò)充內(nèi)存容量(虛擬存儲器)
- 虛擬存儲器的定義
- 應(yīng)用程序在運行之前,沒有必要全部裝入內(nèi)存,僅須將 那些當(dāng)前要運行的部分頁面或段先裝入內(nèi)存便可運行
- 具有請求調(diào)入功能和置換功能,能從邏輯上對內(nèi)存容量加以擴(kuò)充的一種存儲器系統(tǒng)。
- 其運行速度接近于內(nèi)存速度,而成本接近于外存
- 虛擬存儲器的特征
- 多次性:作業(yè)中的程序和數(shù)據(jù)允許被分成多次調(diào)入內(nèi)存允許
- 對換性:作業(yè)運行時無須常駐內(nèi)存
- 虛擬性:從邏輯上擴(kuò)充了內(nèi)存容量,使用戶看到的內(nèi)存容量遠(yuǎn)大于實 際內(nèi)存容量
- 虛擬存儲器的實現(xiàn)方法
- 請求分頁系統(tǒng)
- 請求分段系統(tǒng)
- 段頁式虛擬存儲器
2.請求分頁存儲管理方式基本概念
- 最小物理塊數(shù)的確定:保證進(jìn)程正常運行所需的最小物理塊數(shù)。取決于指令的格式、功能和尋址方式。
- 平均分配算法;
- 按比例分配算法; 各進(jìn)程頁面總和 S = ΣSi 每個進(jìn)程所能分到的物理塊數(shù) bi = Si / S * m
- 考慮優(yōu)先權(quán)的分配算法;
- 頁面調(diào)入策略:
- 何時調(diào)入頁面?預(yù)調(diào)頁策略、請求調(diào)頁策略
- 從何處調(diào)入頁面?
- 如何調(diào)入頁面?查找所需頁在磁盤上的位置、查找一內(nèi)存空閑塊、將所需頁讀入新空閑塊然后更新頁表、重啟用戶進(jìn)程
- 缺頁率的計算:
- S:訪問頁面成功次數(shù)
- F:訪問頁面失敗次數(shù)
- A : 總訪問次數(shù) = S+F
- 缺頁率 = F/A
- 缺頁中斷處理時間:
- β:被置換的頁面被修改的概率
- ta:被置換頁面被 修改的缺頁中斷處理時間
- tb:被置換頁面沒有被修改的缺頁中斷時間
- 缺頁中斷處理的時間 = β * ta + (1-β)*tb
3.頁面置換算法的相關(guān)概念
- 頁面置換:找到內(nèi)存中沒有使用的一些頁,換出
- 性能的關(guān)鍵點 :找出一個導(dǎo)致最小缺頁數(shù)的算法
- 同一個頁可能會被裝入內(nèi)存多次(可能造成“抖動”)
- 頁面置換完善了邏輯內(nèi)存和物理內(nèi)存的劃分——在一個較小的物理 內(nèi)存基礎(chǔ)之上可以提供一個大的虛擬內(nèi)存
- 常見的頁面置換算法:最佳置換算法 OPT 、先進(jìn)先出置換算法 FIFO 、最近最久未使用算法 LRU 、最少使用算法 LFU、Clock置換算法、頁面緩沖算法
- 目的:盡可能小的缺頁率
4.請求分段存儲管理方式基本概念
- 在分頁基礎(chǔ)上建立的請求分頁式虛擬存儲器系統(tǒng),是以頁面為單位進(jìn)行換出 / 換入的。而在分段基礎(chǔ)上所建立的請求分段式虛擬存儲器系統(tǒng),則是以分段為單位進(jìn)行換入 / 換出的
- 請求分段中的硬件支持
- 請求段表機(jī)制
- 缺段中斷機(jī)構(gòu):在指令執(zhí)行期間產(chǎn)生和處理中斷信號。一條指令在執(zhí)行期間,可能產(chǎn) 生多次缺段中斷。由于段不是定長的,因此中斷處理比缺頁中斷復(fù)雜
- 地址變換機(jī)構(gòu):若段不在內(nèi)存中,則必須先將 所缺的段調(diào)入內(nèi)存,并修改段表,然后利用段表進(jìn)行地址變換。
- 分段保護(hù):
- 越界檢查:比較段號與段表長度;段內(nèi)地址與段表長度
- 存取控制檢查:以段為基本單位進(jìn)行
- 環(huán)保護(hù)機(jī)構(gòu)
| 本章算法
1.分頁存儲管理的有關(guān)計算公式
最小物理塊的數(shù)量計算公式
按比例分配算法; 各進(jìn)程頁面總和 S = ΣSi 每個進(jìn)程所能分到的物理塊數(shù) bi = Si / S * m
缺頁率的計算
- S:訪問頁面成功次數(shù)
- F:訪問頁面失敗次數(shù)
- A : 總訪問次數(shù) = S+F
- 缺頁率 = F/A
缺頁中斷處理時間的計算
- β:被置換的頁面被修改的概率
- ta:被置換頁面被 修改的缺頁中斷處理時間
- tb:被置換頁面沒有被修改的缺頁中斷時間
- 缺頁中斷處理的時間 = β * ta + (1-β)*tb
2.請求分頁系統(tǒng)訪問內(nèi)存的有效時間EAT
λ:為查找快表所需要的時間
t:為訪問一次內(nèi)存所需要的時間
訪問頁在內(nèi)存,且其對應(yīng)頁表項在快表中 EAT= λ + t
訪問頁在內(nèi)存,但其對應(yīng)頁表項不在快表中 EAT= λ + t + λ + t = 2(λ + t)
t:為訪問一次內(nèi)存所需要的時間
φ:缺頁中斷處理時間
f:缺頁率
訪問頁不在內(nèi)存中:需進(jìn)行缺頁中斷處理,有效時間可分為查找快表的時間、查找頁表的時間、 處理缺頁的時間、更新快表的時間和訪問實際物理地址的時間
EAT = t + f ×(φ + t) + (1- f) × t
區(qū)別于【第五章:存儲器管理】的【引入快表后的有效訪問時間】計算公式
這個是請求調(diào)頁系統(tǒng),第五章那個是分頁存儲系統(tǒng)
3.已知邏輯地址、頁大小、頁表;求物理地址
①把邏輯地址轉(zhuǎn)為二進(jìn)制(如101(8) → 001 000 001)
②根據(jù)頁大小計算出頁的地址結(jié)構(gòu)(如一頁32B,2^5=32 因此低5位為頁內(nèi)地址,其余頁為頁號)
③由①的二進(jìn)制,結(jié)合②的地址結(jié)構(gòu),可以得出【頁號、頁內(nèi)地址】(如001 000 001,低5位為頁內(nèi)地址,則該二進(jìn)制表示第2頁,頁內(nèi)第1位)
④查表,若查得到則OK;若查不到則表示該邏輯地址不能轉(zhuǎn)換
4.頁面置換算法
最佳頁面置換算法 OPT
- 被置換的頁將是之后最長時間不被使用的頁。是一種理想算法,永遠(yuǎn)不可能實現(xiàn)
先進(jìn)先出置換算法 FIFO
- 總是淘汰最先進(jìn)入內(nèi)存的頁面
最近最久未使用算法 LRU
- 選擇最近最久未使用的頁面予以淘汰
- 硬件支持:被訪問的頁面對應(yīng)寄存器的Rn-1位置為1,定時右移
- 具有最小數(shù)值的寄存器所對應(yīng)的頁面為淘汰頁
最少使用算法 LFU(了解)
- 選擇在最近時期使用最少的頁面作為淘汰頁。(如果一個數(shù)據(jù)在最近一段時間很少被訪問到,那么可以認(rèn)為在將來它被訪問的可能性也很小。因此,當(dāng)空間滿時,最小頻率訪問的數(shù)據(jù)最先被淘汰;當(dāng)存在兩個或者更多個鍵具有相同的使用頻次時,應(yīng)該淘汰最久未使用的數(shù)據(jù)。(即此時為 LRU)
- 為內(nèi)存中的每個頁面設(shè)置 一個移位寄存器,用來記 錄該頁面的被訪問頻率
Clock置換算法(了解)
-
LRU的近似算法,又稱最近未用(NRU)或二次機(jī)會頁面置換算法
-
每個頁都與一個訪問位相關(guān)聯(lián),初始值位0,當(dāng)頁被訪問時置訪問位為1,置換時選擇訪問位為0的頁 ;若為1,重新置為0
頁面緩沖算法(了解) -
設(shè)置兩個鏈表:
- ①空閑頁面鏈表:保存空閑物理塊
- ②修改頁面鏈表:保存已修改且需要被換出的頁面,等被換出的頁面數(shù)目達(dá)到一定值時,再一起換出外存
5.請求分段存儲管理方式 地址變換
作業(yè)最多可擁有的段數(shù) = 2 ^ 虛擬地址中【段號】的位數(shù)
作業(yè)最多可擁有的長度字節(jié) = 2 ^ 虛擬地址中【段內(nèi)相對地址】的位數(shù)
已知段號和段內(nèi)地址,如何進(jìn)行地址變換?
① 找到段號對應(yīng)的段長 L 和主存起始地址 S
② 若段表中段號所對應(yīng)的段長 < 所給的段內(nèi)地址 則說明產(chǎn)生了越界中斷,無法轉(zhuǎn)換
? 若段表中段號對應(yīng)的段長 ≥ 所給的段內(nèi)地址, 則邏輯地址對應(yīng)的主存地址為【主存起始地址 + 段內(nèi)地址】
| 課后簡答題
1.常規(guī)存儲器管理方式具有哪兩大特征?它們對系統(tǒng)性能有何影響?
一次性:進(jìn)程必須全部裝入內(nèi)存。一次性對內(nèi)存空間的浪費非落大
駐留性:在程序運行過程中,進(jìn)程全部駐留在內(nèi)存中。駐留性使內(nèi)存中暫時不用的程序或數(shù)據(jù)無法被釋放。
2.什么是虛擬存儲器?如何實現(xiàn)頁式虛擬存儲器?
虛擬存儲器是具有請求調(diào)入功能和置換功能,能從邏輯上對內(nèi)存容量進(jìn)行擴(kuò)充的一種存儲系統(tǒng)
為實現(xiàn)虛擬存儲器,首先需要擴(kuò)充頁表,增加狀態(tài)位以指出所需頁是否在內(nèi)存中,
另外,還要使用兩種關(guān)鍵技術(shù)。
①請求調(diào)頁技術(shù)該項技術(shù)是指及時將進(jìn)程所要訪問的不在內(nèi)存中的頁調(diào)人內(nèi)存。
②置換頁技術(shù)該項技術(shù)
3.“整體對換從邏輯上也擴(kuò)充了內(nèi)存,因此也實現(xiàn)了虛擬存儲器的功能”這種說法是否正確,請說明理由。
這種說法是錯誤的。
整體對換將內(nèi)存中暫時不用的某個程序及其數(shù)據(jù)換出至外存,騰出足夠的內(nèi)存空間以裝入在外存中具備運行條件的進(jìn)程所對應(yīng)的程序和數(shù)據(jù)。
虛擬存儲器是指僅把作業(yè)的一部分裝入內(nèi)存便可運行作業(yè)的存儲器系統(tǒng),亦指具有請求調(diào)人功能和置換功能、能從邏輯上對內(nèi)存容量進(jìn)行擴(kuò)充的存儲器系統(tǒng),它的實現(xiàn)必須建立在離散分配的基礎(chǔ)上。雖然整體對換和虛擬存儲器均能從邏輯上擴(kuò)充內(nèi)存空間,但整體對換不具備離散性。實際上,在具有整體對換功能的系統(tǒng)中,進(jìn)程的大小仍將受到實際內(nèi)存容量的限制。
4.在請求分頁系統(tǒng)中,為什么說一條指令執(zhí)行期間可能產(chǎn)生多次缺頁中斷?
在請求調(diào)頁時,只要作業(yè)的部分頁在內(nèi)存中,該作業(yè)就能執(zhí)行;
而在執(zhí)行過程中發(fā)現(xiàn)所要訪問的指令或數(shù)據(jù)不在內(nèi)存中時、系統(tǒng)會產(chǎn)生缺頁中斷,將所需的頁面調(diào)入內(nèi)存。
在請求調(diào)頁系統(tǒng)中,—條指令(如copy A to B)可能跨了兩個頁,而其中要訪問的操作數(shù)可能與指令不在同一個頁上,且操作數(shù)本身也可能跨了兩個頁。當(dāng)要執(zhí)行這類指令而相應(yīng)的頁又都不在內(nèi)存中時,就將產(chǎn)生多次缺頁中斷。
5.試比較缺頁中斷與一般的中斷,它們之間有何明顯區(qū)別?
缺頁中斷與一般中斷的區(qū)別主要有:
①一般中斷只需要保護(hù)現(xiàn)場然后即可直接跳到須及時處理的地方;
②缺頁中斷除了需要保護(hù)現(xiàn)場外,還需要判斷內(nèi)存中是否有足夠的空間來存儲所需的頁或段,然后再把所需的頁或段調(diào)進(jìn)來使用。
6.試說明在請求分頁系統(tǒng)中頁面的調(diào)入過程。
每當(dāng)程序所要訪問的頁面未在內(nèi)存時(存在位為“0”).便向CPU發(fā)出缺頁中斷,中斷處理程序保存CPU現(xiàn)場信息,分析中斷原因后,轉(zhuǎn)人缺頁中斷處理程序。該程序通過查找頁表得到該頁在外存的物理地址,如果此時內(nèi)存能谷納新貝,則后功伍,將歷歐貝面調(diào)人內(nèi)存,然后修改頁表。如果內(nèi)存已滿,則須按照某種置換算法進(jìn)行頁面置換;如果換出頁面被修改過(修改位為“1”),則必須將它寫回磁盤,再把缺頁調(diào)入內(nèi)存,將頁表中調(diào)入頁的存在位改為“1”,并將此頁表項寫入快表中。利用修改后的頁表,形成要訪問數(shù)據(jù)的物理地址,再去訪問內(nèi)存數(shù)據(jù)。整個頁面調(diào)人過程對用戶是透明的。
7.(考研真題)簡述在具有快表的請求分頁系統(tǒng)中,將邏輯地址轉(zhuǎn)換為物理地址的完整過程。
在具有快表的請求分頁系統(tǒng)中、將邏輯地址轉(zhuǎn)換為物理地址的完整過程為
①檢索快表,試圖從中找出所要訪問的頁
②如果找到,那么修改頁表項中的訪問位,供置換算法選擇淘汰頁時參考,將寫指令的修改位置1,然啟利用頁表項中給出的物理塊號和頁內(nèi)地址形成物理地址,地址轉(zhuǎn)換結(jié)束:
③如果沒找到,那么應(yīng)到內(nèi)存中查找貝表,再根據(jù)查找到的貝表項中的狀態(tài)位來判斷該頁是否已調(diào)。若該頁已調(diào)入內(nèi)存、則將該頁的頁表項寫入快表。
當(dāng)快表已滿時,先調(diào)出按某種算法所確定的頁的頁表項,再寫人該頁的頁表項。若該頁未調(diào)入內(nèi)存,則產(chǎn)生缺頁中斷,請求OS從外存中將該頁調(diào)人內(nèi)存,再轉(zhuǎn)到步驟②進(jìn)行地址轉(zhuǎn)換。
8.何謂固定分配局部置換和可變分配全局置換的內(nèi)存分配策略?
(1)固定分配局部置換:固定分配是指,為每個進(jìn)程分配一組固定數(shù)目的物理塊,在進(jìn)程運行期間不再改變;局部置換是指,如果進(jìn)程在運行中發(fā)現(xiàn)缺頁,則只能從分配給該進(jìn)程的n個頁面中選出1頁換出,然后再調(diào)人1頁。
(2)可變分配全局置換;可變分配是指,先為每個進(jìn)程分配一定數(shù)目的物理塊,在進(jìn)程運行期間,可根據(jù)情況做適當(dāng)?shù)母淖?全局置換是指,如果進(jìn)程在運行中發(fā)現(xiàn)缺頁,則將Os所保留的空閑物理塊或者所有進(jìn)程的全部物理塊選擇1塊換出然后再將缺頁調(diào)入。
10.為了實現(xiàn)請求分段存儲管理,應(yīng)在系統(tǒng)中增加配置哪些硬件機(jī)構(gòu)?
為了實現(xiàn)請求分段存儲管理,應(yīng)在系統(tǒng)中配置多種硬件機(jī)構(gòu)以支持快速完成請求分段功能。文章來源:http://www.zghlxwxcb.cn/news/detail-498210.html
所需的硬件支持有段表機(jī)制、缺段中斷機(jī)構(gòu)以及地址轉(zhuǎn)換機(jī)構(gòu)。文章來源地址http://www.zghlxwxcb.cn/news/detail-498210.html
到了這里,關(guān)于【第六章 | 虛擬存儲器】《操作系統(tǒng) 慕課版》課后答案 + 復(fù)習(xí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!