日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

[OS复习]虚拟存储管理技术 1

發(fā)布時(shí)間:2025/3/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [OS复习]虚拟存储管理技术 1 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.問(wèn)題的引入

簡(jiǎn)單存儲(chǔ):要求將一個(gè)進(jìn)程所需的程序和數(shù)據(jù)全部裝入內(nèi)存方可執(zhí)行。這樣的系統(tǒng)存在兩個(gè)很嚴(yán)重的問(wèn)題。其一,對(duì)于大進(jìn)程,如果其所需內(nèi)存空間超過(guò)了內(nèi)存的最大容量,則無(wú)法運(yùn)行。其二,對(duì)于多道程序系統(tǒng),由于每一個(gè)進(jìn)程需要全部裝入內(nèi)存,使同時(shí)駐留內(nèi)存的進(jìn)程數(shù)量受到限制。雖然也可以通過(guò)提高內(nèi)存容量來(lái)解決,但是代價(jià)太高。 如果能將一部分價(jià)格較低的外存空間當(dāng)作內(nèi)存使用,從邏輯上擴(kuò)充內(nèi)存容量。那么,將獲得更高的性價(jià)比。

2.虛擬存儲(chǔ)技術(shù)的理論依據(jù)

程序執(zhí)行的局部性原理:程序的執(zhí)行總是呈現(xiàn)局部性。即在一個(gè)較短的時(shí)間段內(nèi),程序的執(zhí)行僅限于某個(gè)部分;相應(yīng)的,它所訪問(wèn)的存儲(chǔ)空間也局限于某個(gè)區(qū)域。因此,只要保證進(jìn)程執(zhí)行所需的部分程序和數(shù)據(jù)駐留在內(nèi)存,一段時(shí)間內(nèi)進(jìn)程都能順利執(zhí)行。

3.實(shí)現(xiàn)虛擬存儲(chǔ)的一般過(guò)程?

step1:進(jìn)程運(yùn)行之前,僅需要將一部分頁(yè)面或段裝入內(nèi)存,便可啟動(dòng)運(yùn)行,其余部分暫時(shí)保留在磁盤上。
step2:進(jìn)程運(yùn)行時(shí),如果它所需要訪問(wèn)的頁(yè)面(段)已經(jīng)裝入內(nèi)存,則可以繼續(xù)執(zhí)行下去;:如果其所需要訪問(wèn)的頁(yè)面(段)尚未裝入內(nèi)存,則發(fā)生缺頁(yè)(段)中斷,進(jìn)程阻塞。此時(shí),系統(tǒng)將啟動(dòng)請(qǐng)求調(diào)頁(yè)(段)功能,將進(jìn)程所需的頁(yè)(段)裝入內(nèi)存。
step3:如果當(dāng)前內(nèi)存已滿,無(wú)法裝入新的頁(yè)(段),則還需要利用頁(yè)(段)置換功能,將內(nèi)存中暫時(shí)不用的頁(yè)(段)交換到磁盤上,以騰出足夠的內(nèi)存空間。再將進(jìn)程所需的頁(yè)(段)裝入內(nèi)存,喚醒阻塞的進(jìn)程,使之重新參與調(diào)度執(zhí)行。

3.1什么是虛擬存儲(chǔ)?

通過(guò)系統(tǒng)提供的缺頁(yè)/段中斷功能和交換技術(shù),動(dòng)態(tài)裝入進(jìn)程的程序代碼和數(shù)據(jù),使得一個(gè)大的用戶程序能在一個(gè)相對(duì)較小的內(nèi)存空間中運(yùn)行,也使得有限的內(nèi)存能同時(shí)容納更多的進(jìn)程。
習(xí)慣上,人們把這種用戶感覺(jué)上的、由實(shí)際內(nèi)存和部分外存共同構(gòu)成的存儲(chǔ)空間稱為虛擬存儲(chǔ)器。

3.2虛擬存儲(chǔ)技術(shù)的技術(shù)支持

首先,必須有相應(yīng)的硬件支持,用以實(shí)現(xiàn)虛擬分頁(yè)或虛擬分段存儲(chǔ)管理。
其次,操作系統(tǒng)必須提供相應(yīng)的軟件支持,管理頁(yè)或段在內(nèi)存和外存之間的移動(dòng)。

3.3虛擬存儲(chǔ)的基本數(shù)據(jù)結(jié)構(gòu)?

由于虛擬存儲(chǔ)系統(tǒng)中,進(jìn)程的程序代碼和數(shù)據(jù)只有一部分在內(nèi)存,另一部分保存在外存。 在頁(yè)/段表項(xiàng)中增加一個(gè)“存在”字段,其值為0或1。增加一個(gè)“修改”字段,表明對(duì)應(yīng)頁(yè)/段自進(jìn)入內(nèi)存以來(lái)是否被修改過(guò)。只有被修改過(guò)的頁(yè)/段才需要保存到外存,若需要將未修改過(guò)的頁(yè)/段換出內(nèi)存,只需要將新裝入的頁(yè)/段直接覆蓋其存儲(chǔ)區(qū)域,而不必將其內(nèi)容保存到外存。

3.4虛擬存儲(chǔ)的好處

第一,可以運(yùn)行大程序,包括超過(guò)內(nèi)存實(shí)際容量的大程序。
第二,可以在有限的物理內(nèi)存中運(yùn)行更多的程序。多道程序系統(tǒng)的度不再受到物理內(nèi)存空間的限制。

3.5虛擬存儲(chǔ)的典型問(wèn)題 -抖動(dòng)(thrashing)

當(dāng)進(jìn)程要求裝入新的頁(yè)面或程序段時(shí),如果當(dāng)前沒(méi)有足夠的空閑空間,需要交換一些頁(yè)面或段到外存。如果被交換出去的頁(yè)面或段很快將被進(jìn)程使用,則又需要將其換入內(nèi)存。如果系統(tǒng)花費(fèi)大量的時(shí)間把程序和數(shù)據(jù)頻繁地裝入和移出內(nèi)存而不是執(zhí)行用戶指令,那么,稱系統(tǒng)出現(xiàn)了抖動(dòng)。出現(xiàn)抖動(dòng)現(xiàn)象時(shí),系統(tǒng)顯得非常繁忙,但是吞吐量很低,甚至產(chǎn)出為零。根本原因:選擇的頁(yè)面或段不恰當(dāng)。

4.虛擬存儲(chǔ)分頁(yè)技術(shù)

建立在簡(jiǎn)單分頁(yè)存儲(chǔ)管理系統(tǒng)之上,是目前常用的一種虛擬存儲(chǔ)管理技術(shù)。

4.1地址變換

基于簡(jiǎn)單存儲(chǔ)分頁(yè)系統(tǒng)增加了某些功能,如產(chǎn)生和處理缺頁(yè)中斷,以及從內(nèi)存中換出頁(yè)面等。進(jìn)程執(zhí)行時(shí),首先通過(guò)根據(jù)邏輯地址中的頁(yè)號(hào),查找快表中是否存在對(duì)應(yīng)的頁(yè)表項(xiàng)。若快表中不存在該頁(yè)表項(xiàng),則再查找頁(yè)表。檢查對(duì)應(yīng)的頁(yè)面是否在內(nèi)存中存在。若該頁(yè)面不在內(nèi)存,啟動(dòng)缺頁(yè)中斷處理例程,裝入需要的頁(yè)面,并更新頁(yè)表和快表。若該頁(yè)面已經(jīng)在內(nèi)存中,將對(duì)應(yīng)的頁(yè)表項(xiàng)插入快表中,更新快表。若快表中存在該表項(xiàng),則直接取出其中的頁(yè)框號(hào),加上頁(yè)內(nèi)偏移量,計(jì)算出物理地址。?

4.2缺頁(yè)中斷處理過(guò)程

(1)操作系統(tǒng)接收到進(jìn)程產(chǎn)生的缺頁(yè)中斷信號(hào),啟動(dòng)中斷處理例程,保留處理機(jī)現(xiàn)場(chǎng);
(2)操作系統(tǒng)通知處理機(jī)從外存讀取指定的頁(yè)面;
(3)處理機(jī)激活I(lǐng)/O設(shè)備;
(4) 檢查內(nèi)存有無(wú)足夠的空閑空間裝入該頁(yè)面?若有,轉(zhuǎn)(6),否則,執(zhí)行(5);
(5) 利用頁(yè)面置換算法,選擇內(nèi)存中的某個(gè)頁(yè)面,換出內(nèi)存;
(6) 將指定頁(yè)面從外存裝入內(nèi)存;
(7) 更新該進(jìn)程的頁(yè)表;
(8) 更新快表;
(9)計(jì)算物理地址。

5.虛擬存儲(chǔ)分段技術(shù)?

建立在簡(jiǎn)單存儲(chǔ)分段系統(tǒng)基礎(chǔ)上,利用動(dòng)態(tài)分區(qū)技術(shù)分配存儲(chǔ)空間,并以段作為交換的單位。進(jìn)程執(zhí)行之前,系統(tǒng)為之分配幾個(gè)必要的內(nèi)存分區(qū),每一個(gè)分區(qū)中裝入一段。當(dāng)進(jìn)程執(zhí)行過(guò)程中,出現(xiàn)缺段中斷時(shí),操作系統(tǒng)將為進(jìn)程裝入需要的程序段。

5.1數(shù)據(jù)結(jié)構(gòu)

需要修改段表,增加“存在”字段和“修改”字段,分別標(biāo)明對(duì)應(yīng)段是否存在于內(nèi)存,以及內(nèi)存中的段自裝入以來(lái)是否被修改過(guò)。

5.2地址變換與存儲(chǔ)保護(hù)

在簡(jiǎn)單分段系統(tǒng)的地址變換機(jī)構(gòu)基礎(chǔ)上形成的。?
越界檢查:可能產(chǎn)生一個(gè)地址越界中斷,進(jìn)入相應(yīng)的中斷處理例程執(zhí)行。一般地,當(dāng)?shù)刂吩浇缰袛嗵幚硗戤?#xff0c;該進(jìn)程將異常結(jié)束。
操作合法性檢查:如果屬于非法操作,產(chǎn)生非法訪問(wèn)中斷,這時(shí)也會(huì)讓進(jìn)程異常終止。
缺段處理:執(zhí)行進(jìn)程被阻塞。并產(chǎn)生一個(gè)中斷信號(hào),處理機(jī)執(zhí)行缺段中斷處理例程。



6.虛擬存儲(chǔ)段頁(yè)式技術(shù)?

虛擬存儲(chǔ)段頁(yè)式系統(tǒng)中,程序和數(shù)據(jù)通常以頁(yè)面為單位被系統(tǒng)裝入和移出內(nèi)存。因此,一般不需要在段表項(xiàng)中增加“存在”字段和“修改”字段,而將它們放在頁(yè)表中。段表中需要保留基于段的保護(hù)與存儲(chǔ)共享等目的的存取控制信息,頁(yè)表中設(shè)置基于頁(yè)的控制信息。?

6.1地址變換

首先,通過(guò)根據(jù)段號(hào)和頁(yè)號(hào),查找快表中是否存在對(duì)應(yīng)的頁(yè)表項(xiàng)。若快表中不存在該頁(yè)表項(xiàng),則再查找段表。然后,檢索段號(hào)對(duì)應(yīng)的段表項(xiàng),找到對(duì)應(yīng)段的頁(yè)表起始地址。再根據(jù)頁(yè)號(hào)檢索該頁(yè)表,檢查對(duì)應(yīng)頁(yè)面是否在內(nèi)存。若該頁(yè)面不在內(nèi)存,啟動(dòng)缺頁(yè)中斷處理例程,裝入需要的頁(yè)面,并更新頁(yè)表和快表。若該頁(yè)面已經(jīng)在內(nèi)存中,將對(duì)應(yīng)的頁(yè)表項(xiàng)插入快表中,更新快表。若快表中存在該表項(xiàng),則直接取出其中的頁(yè)框號(hào),加上頁(yè)內(nèi)偏移量,計(jì)算出物理地址。?


總結(jié)

以上是生活随笔為你收集整理的[OS复习]虚拟存储管理技术 1的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。