請(qǐng)求分頁(yè)管理方式
1 概述
請(qǐng)求分頁(yè)系統(tǒng)建立在基本分頁(yè)系統(tǒng)基礎(chǔ)之上缤苫,為了支持虛擬存儲(chǔ)器功能而增加了請(qǐng)求調(diào)頁(yè)功能和頁(yè)面置換功能挑胸。請(qǐng)求分頁(yè)是目前最常用的一種實(shí)現(xiàn)虛擬存儲(chǔ)器的方法田度。
在請(qǐng)求分頁(yè)系統(tǒng)中惶翻,只要求將當(dāng)前需要的一部分頁(yè)面裝入內(nèi)存内狗,便可以啟動(dòng)作業(yè)運(yùn)行蔬芥。在作業(yè)執(zhí)行過程中甲抖,當(dāng)所要訪問的頁(yè)面不在內(nèi)存時(shí)教沾,再通過調(diào)頁(yè)功能將其調(diào)入述召,同時(shí)還可以通過置換功能將暫時(shí)不用的頁(yè)面換出到外存上朱转,以便騰出內(nèi)存空間蟹地。
為了實(shí)現(xiàn)請(qǐng)求分頁(yè),系統(tǒng)必須提供一定的硬件支持藤为。除了需要一臺(tái)具有一定容量的內(nèi)存及外存的計(jì)算機(jī)系統(tǒng)怪与,還需要有頁(yè)表機(jī)制、缺頁(yè)中斷機(jī)構(gòu)和地址變換機(jī)構(gòu)缅疟。
2 頁(yè)表機(jī)制
請(qǐng)求分頁(yè)系統(tǒng)在一個(gè)作業(yè)運(yùn)行之前不要求全部一次性調(diào)入內(nèi)存分别,因此在作業(yè)的運(yùn)行過程中,必然會(huì)出現(xiàn)要訪問的頁(yè)面不在內(nèi)存的情況窿吩。為解決此類問題茎杂,在請(qǐng)求頁(yè)表項(xiàng)中增加了四個(gè)字段:
說(shuō)明如下:
- 狀態(tài)位P:用于指示該頁(yè)是否已調(diào)入內(nèi)存,供程序訪問時(shí)參考纫雁。
- 訪問字段A:用于記錄本頁(yè)在一段時(shí)間內(nèi)被訪問的次數(shù)煌往,或記錄本頁(yè)最近己有多長(zhǎng)時(shí)間未被訪問,供置換算法換出頁(yè)面時(shí)參考轧邪。
- 修改位M:標(biāo)識(shí)該頁(yè)在調(diào)入內(nèi)存后是否被修改過刽脖。
- 外存地址:用于指出該頁(yè)在外存上的地址,通常是物理塊號(hào)忌愚,供調(diào)入該頁(yè)時(shí)參考曲管。
3 缺頁(yè)中斷機(jī)構(gòu)
在請(qǐng)求分頁(yè)系統(tǒng)中,每當(dāng)所要訪問的頁(yè)面不在內(nèi)存時(shí)硕糊,便產(chǎn)生一個(gè)缺頁(yè)中斷院水,請(qǐng)求操作系統(tǒng)將所缺的頁(yè)調(diào)入內(nèi)存。此時(shí)應(yīng)將缺頁(yè)的進(jìn)程阻塞(調(diào)頁(yè)完成喚醒)简十,如果內(nèi)存中有空閑塊檬某,則分配一個(gè)塊,將要調(diào)入的頁(yè)裝入該塊螟蝙,并修改頁(yè)表中相應(yīng)頁(yè)表項(xiàng)恢恼,若此時(shí)內(nèi)存中沒有空閑塊,則要淘汰某頁(yè)(若被淘汰頁(yè)在內(nèi)存期間被修改過胰默,則要將其寫回外存)场斑。
缺頁(yè)中斷作為中斷同樣要經(jīng)歷,諸如保護(hù)CPU環(huán)境牵署、分析中斷原因漏隐、轉(zhuǎn)入缺頁(yè)中斷處理程序、恢復(fù)CPU環(huán)境等幾個(gè)步驟奴迅。但與一般的中斷相比青责,它有以下兩個(gè)明顯的區(qū)別:
- 在指令執(zhí)行期間產(chǎn)生和處理中斷信號(hào),而非一條指令執(zhí)行完后,屬于內(nèi)部中斷(又稱異乘猓或陷入)。
- 一條指令在執(zhí)行期間者填,可能產(chǎn)生多次缺頁(yè)中斷浩村。
4 地址變換機(jī)構(gòu)
請(qǐng)求分頁(yè)系統(tǒng)中地址變換機(jī)構(gòu),是在分頁(yè)系統(tǒng)地址變換機(jī)構(gòu)的基礎(chǔ)上占哟,實(shí)現(xiàn)虛擬內(nèi)存心墅,又增加了某系而功能而形成的。
如圖所示榨乎,在進(jìn)行地址變換時(shí)怎燥,先檢索快表:
- 若找到要訪問的頁(yè),便修改頁(yè)表項(xiàng)中的訪問位(寫指令則還須重置修改位)蜜暑,然后利用頁(yè)表項(xiàng)中給出的物理塊號(hào)和頁(yè)內(nèi)地址形成物理地址铐姚。
- 若未找到該頁(yè)的頁(yè)表項(xiàng),應(yīng)到內(nèi)存中去查找頁(yè)表肛捍,再對(duì)比頁(yè)表項(xiàng)中的狀態(tài)位P隐绵,看該頁(yè)是否已調(diào)入內(nèi)存,未調(diào)入則產(chǎn)生缺頁(yè)中斷拙毫,請(qǐng)求從外存把該頁(yè)調(diào)入內(nèi)存依许。
請(qǐng)求分段管理方式
1 概述
在請(qǐng)求分段存儲(chǔ)管理系統(tǒng)中,作業(yè)運(yùn)行之前缀蹄,只要求將當(dāng)前需要的若干個(gè)分段裝入內(nèi)存峭跳,便可啟動(dòng)作業(yè)運(yùn)行。在作業(yè)運(yùn)行過程中缺前,如果要訪問的分段不在內(nèi)存中蛀醉,則通過調(diào)段功能將其調(diào)入,同時(shí)還可以通過置換功能將暫時(shí)不用的分段換出到外存诡延,以便騰出內(nèi)存空間滞欠。
為實(shí)現(xiàn)請(qǐng)求分段系統(tǒng),系統(tǒng)應(yīng)該配置段表機(jī)制肆良、缺段中斷機(jī)構(gòu)筛璧、機(jī)制變換機(jī)構(gòu)硬件支持。
2 段表機(jī)制
- 存取方式:存取屬性(執(zhí)行惹恃、只讀夭谤、允許讀/寫)
- 訪問字段A:記錄該段被訪問的頻繁程度
- 修改位M:表示該段在進(jìn)入內(nèi)存后,是否被修改過巫糙。
- 存在位P:表示該段是否在內(nèi)存中朗儒。
- 增補(bǔ)位:表示在運(yùn)行過程中,該段是否做過動(dòng)態(tài)增長(zhǎng)。
- 外存地址:表示該段在外存中的起始地址醉锄。
3 缺段中斷機(jī)制
缺段中斷機(jī)構(gòu)與缺頁(yè)中斷機(jī)構(gòu)類似乏悄,它同樣需要在一條指令執(zhí)行期間,產(chǎn)生和處理中斷恳不,以及一條指令執(zhí)行期間可能產(chǎn)生多此缺段中斷檩小。由于分段是信息的邏輯單元,因而不可能出現(xiàn)一條指令被分割在兩個(gè)分段中和一個(gè)信息被分割在兩個(gè)分段中的情況烟勋。
缺段中斷的處理過程如圖:
4 地址變換機(jī)構(gòu)
請(qǐng)求分段系統(tǒng)中地址變換機(jī)構(gòu)是在分段系統(tǒng)地址變換機(jī)構(gòu)的基礎(chǔ)上形成的规求。如下圖所示:
5 分段共享與保護(hù)
5.1 分段共享
為了實(shí)現(xiàn)分段共享,設(shè)置一個(gè)數(shù)據(jù)結(jié)構(gòu)——共享段表卵惦,以及對(duì)共享段進(jìn)行操作的過程阻肿。
所有的共享段都在共享段表中對(duì)應(yīng)一個(gè)表項(xiàng)。其中:
- 共享進(jìn)程計(jì)數(shù)器count:記錄有多少個(gè)進(jìn)程需要共享該分段沮尿,設(shè)置一個(gè)整型變量count丛塌。
- 存取控制字段:設(shè)定存取權(quán)限。
- 段號(hào):對(duì)于一個(gè)共享段蛹找,不同的進(jìn)程可以各用不同的段號(hào)去共享該段姨伤。
5.2 分段保護(hù)
在分段系統(tǒng)中,由于每個(gè)段在邏輯上是獨(dú)立庸疾,因而比較容易實(shí)現(xiàn)信息保護(hù)乍楚。目前分段管理的保護(hù)主要有三種:
地址越界保護(hù)
先利用段表寄存器中的段表長(zhǎng)度與邏輯地址中的段號(hào)比較,若段號(hào)超界則產(chǎn)生越界中斷届慈;再利用段表項(xiàng)中的段長(zhǎng)與邏輯地址中的段內(nèi)位移進(jìn)行比較徒溪,若段內(nèi)位移大于段長(zhǎng),也會(huì)產(chǎn)生越界中斷金顿。
注:在允許段動(dòng)態(tài)增長(zhǎng)的系統(tǒng)中臊泌,允許段內(nèi)位移大于段長(zhǎng)。訪問控制保護(hù)(存取控制保護(hù))
在段表中設(shè)置了一個(gè)存取控制字段揍拆,用于規(guī)定對(duì)該段的訪問方式渠概。環(huán)保護(hù)機(jī)構(gòu)
環(huán)的構(gòu)成:OS核心在內(nèi)環(huán);重要的實(shí)用程序和操作系統(tǒng)服務(wù)在中間環(huán)嫂拴;一般應(yīng)用程序在外環(huán)播揪。
在環(huán)系統(tǒng)中,程序的訪問和調(diào)用應(yīng)遵循一定的規(guī)則:
(1)一個(gè)程序可以訪問同環(huán)或較低特權(quán)環(huán)中的數(shù)據(jù)筒狠;
(2)一個(gè)程序可以調(diào)用同環(huán)或較高特權(quán)環(huán)中的服務(wù)猪狈;