第五章 虛擬存儲器

1.虛擬存儲器的基本概念

1)常規(guī)存儲器管理不足的原因:

常規(guī)存儲器管理方式的特征:

一次性:作業(yè)在運(yùn)行前一次性地全部裝入內(nèi)存

駐留性:作業(yè)裝入內(nèi)存后粘优,便一直駐留在內(nèi)存中梢灭,直至作業(yè)運(yùn)行結(jié)束

2)局部性原理

時(shí)間局部性:被引用過一次的存儲器位置很可能在不遠(yuǎn)的將來再被多次引用

空間局部性:如果一個存儲器位置被引用了一次畦娄,那么程序很可能在不遠(yuǎn)的將來引用附近的一個存儲器功能。

基于局部性原理

程序運(yùn)行前,不需全部裝入內(nèi)存(打破一次性)

? ? 僅裝入當(dāng)前要運(yùn)行的部分頁面或段即可運(yùn)行,其余部分暫留在外存上害驹。

? ?缺頁/段的情況:要訪問的頁(段) 尚未調(diào)入內(nèi)存程序應(yīng)利用OS所提供的請求調(diào)頁(段)功能蛤育,? ? ? ?將它們調(diào)入內(nèi)存宛官,使程序繼續(xù)執(zhí)行。

調(diào)入需要的頁/段時(shí)瓦糕,如果內(nèi)存已滿底洗,無法再裝入新頁(段),通過置換功能將內(nèi)存中暫時(shí)不用的頁(段)調(diào)至外存咕娄,騰出足夠的內(nèi)存空間亥揖。(不總駐留)

3)虛擬存儲器的定義:

所謂“虛擬存儲器”,是指具有請求調(diào)入功能和置換功能圣勒,能從邏輯上對內(nèi)存容量加以擴(kuò)充的一種存儲器系統(tǒng)费变。

虛擬存儲管理下

內(nèi)存邏輯容量由內(nèi)存容量和外存容量之和所決定

運(yùn)行速度接近于內(nèi)存速度

每位的成本卻接近于外存摧扇。

4)虛擬存儲器的實(shí)現(xiàn)

采用連續(xù)分配方式,需申請足夠空間胡控,再分多次裝入,造成內(nèi)存資源浪費(fèi)旁趟,并不能從邏輯上擴(kuò)大內(nèi)存容量昼激。

虛擬的實(shí)現(xiàn)建立在離散分配存儲管理基礎(chǔ)上

方式:請求分頁/請求分段系統(tǒng)

細(xì)節(jié):分頁/段機(jī)構(gòu)、中斷機(jī)構(gòu)锡搜、地址變換機(jī)構(gòu)橙困、軟件支持

5)虛擬存儲器的特征

離散分配方式是基礎(chǔ)

多次性:一個作業(yè)被分成多次調(diào)入內(nèi)存運(yùn)行

對換性:允許在作業(yè)的運(yùn)行過程中進(jìn)行換進(jìn)、換出耕餐。(進(jìn)程整體對換不算虛擬)

最終體現(xiàn)虛擬性:能夠從邏輯上擴(kuò)充內(nèi)存容量凡傅,使用戶所看到的內(nèi)存容量遠(yuǎn)大于實(shí)際內(nèi)存容量。

2.請求分頁存儲管理方式

基本分頁 + “請求調(diào)頁”和“頁面置換”功能肠缔。

換入和換出基本單位都是長度固定的頁面

1)硬件支持

一臺具有一定容量的內(nèi)/外存的計(jì)算機(jī)+ 頁表機(jī)制+ 缺頁中斷機(jī)構(gòu)+ 地址轉(zhuǎn)換機(jī)構(gòu)

(1)頁表基本功能不變:邏輯地址映射為物理地址

①?狀態(tài)位P :指示該頁是否已調(diào)入內(nèi)存夏跷。

② 訪問字段A :用于記錄本頁在一段時(shí)間內(nèi)被訪問的次數(shù),或記錄本頁最近已有多長時(shí)間未被訪問明未。(置換時(shí)考量的參數(shù))

③修改位M :該頁在調(diào)入內(nèi)存后是否被修改過槽华。(關(guān)系到置換時(shí)調(diào)出的具體操作)

④ 外存地址:用于指出該頁在外存上的地址。

(2)缺頁中斷機(jī)構(gòu)

每當(dāng)要訪問的頁面不在內(nèi)存時(shí)趟妥,便產(chǎn)生一缺頁中斷通知OS猫态,OS則將所缺之頁調(diào)入內(nèi)存。作為中斷披摄,需經(jīng)歷幾個步驟:

“保護(hù)CPU環(huán)境”

“分析中斷原因”

“轉(zhuǎn)入缺頁中斷處理程序”

“恢復(fù)CPU環(huán)境”等亲雪。

作為一種特殊中斷,與一般中斷有明顯區(qū)別:

①在指令執(zhí)行期間產(chǎn)生和處理中斷信號疚膊。

②?一條指令在執(zhí)行期間义辕,可能產(chǎn)生多次缺頁中斷。

(3)地址變換機(jī)構(gòu)

2)內(nèi)存分配

(1)最小物理塊數(shù)的確定

少于此數(shù)量進(jìn)程將不能運(yùn)行

與計(jì)算機(jī)的硬件結(jié)構(gòu)有關(guān)寓盗,取決于指令的格式终息、功能和尋址方式

(2)物理塊的分配策略

固定分配、局部置換

可變分配贞让、全局置換

可變分配周崭、局部置換

(3)物理塊的分配算法

①平均分配算法

將所有可供分配的物理塊平均分配給各進(jìn)程。

缺點(diǎn):未考慮各進(jìn)程本身的大小喳张,利用率不均续镇。

②按比例分配算法

根據(jù)進(jìn)程的大小按比例分配物理塊。

設(shè)系統(tǒng)中共有n個進(jìn)程

則销部,每個進(jìn)程能分到的物理塊數(shù)

Si:進(jìn)程i頁面數(shù)為摸航;S:n個進(jìn)程頁面數(shù)總和制跟;m:可用物理塊總數(shù)


③考慮優(yōu)先權(quán)的分配算法

所有可用物理塊分兩部分:

一部分按比例分配給各進(jìn)程;

另一部分根據(jù)各進(jìn)程優(yōu)先權(quán)酱虎,適當(dāng)?shù)貫槠湓黾臃蓊~雨膨,分配給各進(jìn)程。

3)調(diào)頁策略

(1)何時(shí)調(diào)入頁面

預(yù)調(diào)頁策略

請求調(diào)頁策略

(2)從何處調(diào)入頁面

在請求分頁系統(tǒng)中的外存分為:

對換區(qū):連續(xù)存放數(shù)據(jù)读串,讀寫速度較快

文件區(qū):離散分配方式聊记,I/O速度相對慢

發(fā)生缺頁時(shí),系統(tǒng)應(yīng)從何處將缺頁調(diào)入內(nèi)存恢暖,分成三種情況

①系統(tǒng)擁有足夠的對換區(qū)空間:

進(jìn)程運(yùn)行前所有頁面由文件區(qū)拷貝到對換區(qū)排监;

運(yùn)行需要的頁面全部從對換區(qū)調(diào)入內(nèi)存,提高調(diào)頁速度杰捂。

②系統(tǒng)缺少足夠的對換區(qū)空間:

不會被修改的部分舆床,在文件區(qū)操作(即:直接從文件區(qū)調(diào)入,換出時(shí)不用寫入文件嫁佳,再調(diào)入時(shí)仍從文件區(qū)調(diào)入)

可能被修改的部分挨队,在對換區(qū)操作。

③UNIX方式:(隨運(yùn)行數(shù)據(jù)逐漸從文件區(qū)轉(zhuǎn)到對換區(qū))

未運(yùn)行的頁面從文件區(qū)調(diào)入蒿往;

曾經(jīng)運(yùn)行瞒瘸,但又被換出的頁面放在對換區(qū),下次調(diào)入應(yīng)從對換區(qū)調(diào)入熄浓。

進(jìn)程請求的共享頁面可能已被其他進(jìn)程調(diào)入情臭,無需再從對換區(qū)調(diào)入。

(3)頁面調(diào)入過程

程序運(yùn)行前需要裝入內(nèi)存:上述的②步策略處理何處調(diào)入赌蔑;

開始運(yùn)行:先預(yù)調(diào)入一部分頁面俯在;

運(yùn)行中:需要的頁面不在內(nèi)存時(shí),

向CPU發(fā)出一缺頁中斷娃惯,“中斷處理程序”開始工作:

? ? ①首先保留CPU環(huán)境

? ?②分析中斷原因后跷乐,轉(zhuǎn)入缺頁中斷處理程序。

? ?③處理:判斷是否置換趾浅、頁表信息更新

? ?④恢復(fù)現(xiàn)場愕提,重新操作頁面。

3.頁面置換算法

1)最佳Optimal置換算法

優(yōu)點(diǎn):保證獲得最低的缺頁率

不足:無法實(shí)現(xiàn)皿哨,因?yàn)闊o法預(yù)知一進(jìn)程將來的運(yùn)行情況

作用:作為參照標(biāo)準(zhǔn)浅侨,評價(jià)其他算法。

2)先進(jìn)先出FIFO置換算法

先進(jìn)入的先淘汰证膨,即選擇內(nèi)存中駐留時(shí)間最久的頁面予以淘汰如输。

優(yōu)點(diǎn):實(shí)現(xiàn)簡單,把一進(jìn)程已調(diào)入內(nèi)存的頁面按先后次序組織成一個隊(duì)列,并設(shè)置一個指針(替換指針)不见,使它總是指向隊(duì)首最老的頁面澳化。

不足:與進(jìn)程實(shí)際運(yùn)行規(guī)律不相適應(yīng)(較早調(diào)入的頁往往是經(jīng)常被訪問的頁,頻繁被對換造成運(yùn)行性能降低)

3)最近最久未使用(LRU)置換算法

不足:有時(shí)頁面過去和未來的走向之間并無必然的聯(lián)系稳吮。

相應(yīng)的需較多的硬件支持:記錄每個頁面自上次被訪問以來所經(jīng)歷的時(shí)間t缎谷,淘汰時(shí)選擇頁面t值最大的;以及需要快速地知道哪一頁是最近最久未使用的頁面灶似,用寄存器或棧列林。

4)CLOCK置換算法

每個頁設(shè)一個使用標(biāo)志位(use bit),若該頁被訪問則將其置為1喻奥。

設(shè)置一個指針席纽,從當(dāng)前指針位置開始按地址先后檢查各頁捏悬,尋找use bit=0的頁面作為被置換頁撞蚕。

若指針經(jīng)過的頁use bit=1,修改use bit=0(暫不凋出过牙,給被用過的頁面駐留的機(jī)會 )甥厦,指針繼續(xù)向下。到所有頁面末尾后再返回隊(duì)首檢查寇钉。

說明:

增加了一個使用位

當(dāng)一頁首次加載入內(nèi)存時(shí)刀疙,該位為1,當(dāng)該頁被訪問時(shí)扫倡,使用位也置1

當(dāng)需要進(jìn)行頁替換時(shí)

第一個使用位為0的幀被替換谦秧,指針指向緩沖區(qū)的下一幀

循環(huán)掃描,遇到使用位為1的撵溃,變成0

改進(jìn)CLOCK:

改進(jìn):主要考慮對沒訪問過的頁面再細(xì)分是否修改過的不同情況疚鲤,減少因修改造成的頻繁I/O操作。

每頁除記錄是否用過A缘挑,還記錄是否修改的標(biāo)志M集歇。置換時(shí)根據(jù)兩個標(biāo)志的值有4種不同情況的處理。

5)其他

(1)最少使用 (LFU, Least Frequently Used)

關(guān)鍵在次數(shù)記錄上

每頁設(shè)置訪問計(jì)數(shù)器语淘,每當(dāng)頁面被訪問時(shí)诲宇,該頁面的訪問計(jì)數(shù)器加1密浑;缺頁中斷時(shí)荆几,淘汰計(jì)數(shù)值最小的頁面,并將所有計(jì)數(shù)清零锅移;

計(jì)數(shù)的實(shí)現(xiàn)類似LRU吕粗,用移位寄存器它掂,但比較時(shí)不是簡單比較寄存器的值,而是比較寄存器每位的和∑Ri。

(2)頁面緩沖算法PBA(page buffering algorithm)

對FIFO算法的發(fā)展虐秋,彌補(bǔ)了FIFO可能造成的I/O開銷榕茧,又不需要LRU等算法的硬件支持。

仍用FIFO算法選擇被置換頁

但并不將其馬上換入外存客给。

系統(tǒng)將頁面放入兩個鏈表之一:如果頁面未被修改用押,就將其歸入到空閑頁面鏈表的末尾;否則將其歸入到已修改頁面鏈表靶剑。

需要調(diào)入新的物理頁面時(shí)蜻拨,將新頁面內(nèi)容讀入到空閑頁面鏈表的第一項(xiàng)所指的頁面,然后將第一項(xiàng)刪除(從空閑鏈表摘下)桩引。

空閑頁面和已修改頁面缎讼,仍停留在內(nèi)存中一段時(shí)間,如果這些頁面被再次訪問坑匠,只需較小開銷血崭,而被訪問的頁面可以返還作為進(jìn)程的內(nèi)存頁。

當(dāng)已修改頁面達(dá)到一定數(shù)目后厘灼,再將它們一起調(diào)出到外存夹纫,然后將它們歸入空閑頁面鏈表,這樣能大大減少I/O操作的次數(shù)设凹。

6)虛擬存儲管理下訪問內(nèi)存的有效時(shí)間

7)影響缺頁率的主要因素

(1)分配給作業(yè)的主存塊數(shù):

多則缺頁率低舰讹,反之則高。

(2)頁面大猩林臁:

大則缺頁率低月匣;反之則高。

(3)頁面調(diào)度算法:

對缺頁中斷率影響很大奋姿,但不可能找到一種最佳算法锄开。

(4)程序編制方法:

以數(shù)組運(yùn)算為例,如果每一行元素存放在一頁中胀蛮,則按行處理各元素缺頁中斷率低院刁;反之,按列處理各元素粪狼,則缺頁中斷率高退腥。

8)抖動

(1)系統(tǒng)抖動:

為了提高處理機(jī)利用率,可增加多道程序并發(fā)度再榄;

但進(jìn)程數(shù)目增加過多狡刘,每個進(jìn)程分配得到的物理塊太少,在某個臨界點(diǎn)上困鸥,會出現(xiàn)剛被淘汰的頁很快又需重新調(diào)入嗅蔬;而調(diào)入不久又被淘汰出去剑按;出現(xiàn)頻繁缺頁

大部分處理器時(shí)間都用在來回的頁面調(diào)度上,這種局面稱為系統(tǒng)抖動或顛簸(thrashing)

(2)抖動的后果:

缺頁率急劇增加

內(nèi)存有效存取時(shí)間加長澜术,

系統(tǒng)吞吐量驟減艺蝴;系統(tǒng)已基本不能完成什么任務(wù),而是忙于頁面對換操作鸟废,cpu雖然忙猜敢,但效率急劇下降。

(3)根本原因:

頁面淘汰算法不合理盒延;分配給進(jìn)程的物理頁面數(shù)(駐留集)太少缩擂。

(4)常用防抖動方法:

局部置換策略;

頁面調(diào)入內(nèi)存前檢查各進(jìn)程工作集添寺,為缺頁率高的增加有限物理塊胯盯;

L缺頁間的平均時(shí)間=S置換一個頁面所需時(shí)間,可使磁盤和cpu達(dá)到最大利用率计露;

抖動發(fā)生時(shí)選擇暫停一些進(jìn)程博脑,調(diào)節(jié)多道程序度。

(5)工作集模型的原理:

操作系統(tǒng)跟蹤每個進(jìn)程的工作集薄坏,并為進(jìn)程分配大于其工作集的物理塊趋厉。

如果還有空閑物理塊寨闹,則可以再調(diào)一個進(jìn)程到內(nèi)存以增加多道程序數(shù)胶坠。

如果所有工作集之和增加以至于超過了可用物理塊的總數(shù),那么操作系統(tǒng)會暫停一個進(jìn)程繁堡,將其頁面調(diào)出并且將其物理塊分配給其他進(jìn)程沈善,防止出現(xiàn)抖動現(xiàn)象。

(6)駐留集

駐留(常駐)集是指在當(dāng)前時(shí)刻椭蹄,進(jìn)程實(shí)際駐留在內(nèi)存當(dāng)中的頁面集合闻牡。

工作集是進(jìn)程在運(yùn)行過程中固有的性質(zhì),而駐留集取決于系統(tǒng)分配給進(jìn)程的物理頁面數(shù)目绳矩,以及所采用的頁面置換算法罩润;

如果一個進(jìn)程的整個工作集都在內(nèi)存當(dāng)中,即駐留集 <=工作集翼馆,那么進(jìn)程將很順利地運(yùn)行割以,而不會造成太多的缺頁中斷(直到工作集發(fā)生劇烈變動,從而過渡到另一個狀態(tài))应媚;

當(dāng)駐留集達(dá)到某個數(shù)目之后严沥,再給它分配更多的物理頁面,缺頁率也不會明顯下降中姜。

4.請求分段存儲管理方式

1)請求分段中的硬件支持

(1)段表機(jī)制

(2)缺段中斷機(jī)構(gòu)

(3)地址變換機(jī)構(gòu)

2)分段的共享和保護(hù)

(1)實(shí)現(xiàn)共享:共享段表

(2)共享段如何分享與回收

①共享段的分配

②共享段的回收

③分段保護(hù)

a.越界檢查

b.存取控制檢查

c.環(huán)保護(hù)機(jī)構(gòu)


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末消玄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌翩瓜,老刑警劉巖受扳,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異兔跌,居然都是意外死亡辞色,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門浮定,熙熙樓的掌柜王于貴愁眉苦臉地迎上來相满,“玉大人,你說我怎么就攤上這事桦卒×⒚溃” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵方灾,是天一觀的道長建蹄。 經(jīng)常有香客問我,道長裕偿,這世上最難降的妖魔是什么洞慎? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮嘿棘,結(jié)果婚禮上劲腿,老公的妹妹穿的比我還像新娘。我一直安慰自己鸟妙,他們只是感情好焦人,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著重父,像睡著了一般花椭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上房午,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天矿辽,我揣著相機(jī)與錄音,去河邊找鬼郭厌。 笑死袋倔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沪曙。 我是一名探鬼主播奕污,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼液走!你這毒婦竟也來了碳默?” 一聲冷哼從身側(cè)響起贾陷,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嘱根,沒想到半個月后髓废,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡该抒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年慌洪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凑保。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡冈爹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出欧引,到底是詐尸還是另有隱情频伤,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布芝此,位于F島的核電站憋肖,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏婚苹。R本人自食惡果不足惜岸更,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望膊升。 院中可真熱鬧怎炊,春花似錦、人聲如沸用僧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽责循。三九已至,卻和暖如春攀操,著一層夾襖步出監(jiān)牢的瞬間院仿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工速和, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留歹垫,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓颠放,卻偏偏與公主長得像排惨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子碰凶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一暮芭、虛擬存儲器的基本概念 1鹿驼、程序執(zhí)行的特點(diǎn): 1)多數(shù)情況下仍是順序執(zhí)行。 2)少部分的轉(zhuǎn)移和過程調(diào)用指令會使程...
    6d9fe196fd45閱讀 928評論 0 0
  • 虛擬存儲器的定義:所謂“虛擬存儲器”辕宏,是指具有請求調(diào)入功能和置換功能畜晰,能從邏輯上對內(nèi)存容量加以擴(kuò)充的一種存儲器系統(tǒng)...
    yangzai1997閱讀 439評論 0 0
  • 1. 基礎(chǔ)知識 1.1、 基本概念瑞筐、 功能 馮諾伊曼體系結(jié)構(gòu)1凄鼻、計(jì)算機(jī)處理的數(shù)據(jù)和指令一律用二進(jìn)制數(shù)表示2、順序執(zhí)...
    yunpiao閱讀 5,309評論 1 22
  • 2016.9.19 這兩天早晨聚假,都是按時(shí)把今天要做的事情块蚌,要聯(lián)系的朋友都先計(jì)劃寫出來,然后完成一個就√掉一個膘格,還是...
    風(fēng)飄飄_閱讀 202評論 0 0