微型計(jì)算機(jī)原理第5章存儲(chǔ)器管理_第1頁
微型計(jì)算機(jī)原理第5章存儲(chǔ)器管理_第2頁
微型計(jì)算機(jī)原理第5章存儲(chǔ)器管理_第3頁
微型計(jì)算機(jī)原理第5章存儲(chǔ)器管理_第4頁
微型計(jì)算機(jī)原理第5章存儲(chǔ)器管理_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第5章卷儲(chǔ)器管理

第5章花儲(chǔ)器管理

5.1實(shí)方式存儲(chǔ)器管理

5.2保護(hù)方式存儲(chǔ)器管理

5.3保護(hù)及任務(wù)切換

5.4虛擬8086方式

第5章卷儲(chǔ)器管理

5.1實(shí)方式存儲(chǔ)器管理

5.1.1存儲(chǔ)器的分段結(jié)構(gòu)

微處理器運(yùn)行在實(shí)方式時(shí),程序?qū)Υ鎯?chǔ)器的訪問采用分段地

址。分段地址由一個(gè)段值和一個(gè)有效的地址偏移值組合而成,

其表示方式為:

段值:偏移量(均以省略后綴H的十六進(jìn)制形式表示)

偏移量確定在

段中一個(gè)字節(jié)

偏移量從段字

^0^^則量

安置在10H(16)

段值地址處

圖5.1在分段尋址中名

M第5章卷儲(chǔ)器管理

5.1.2物理地址的形成

段:1BA4:204E

1930

-------?16^^段值00001BA40H

1530

16位偏移值4—+204EH

190

1DA8EH

20彳立物理地址

圖5.2實(shí)方式下物理地址的產(chǎn)成

犬第5章卷儲(chǔ)器管理

5.2保護(hù)方式存儲(chǔ)器管理

5.2.1存儲(chǔ)器的分段管理

1.段選擇器

153210

I-I~~I~~I~~I~~I~~I~~I~~I~~I~~I~~~~~~~~F

士匚1TIRPL

索引

請(qǐng)求者特權(quán)級(jí)

00b二最高特權(quán)

11b二最低特權(quán)

表中的索引

J表指示器

。二全局描述符表(GDT)

1二局部描述符表(LDT)

圖5.3保護(hù)方式段選擇器格式

第5章卷儲(chǔ)器管理

2.段描述符表

153210

局部描述全局描述

符表符表

圖5.4段選擇器和描述符表

第5章卷儲(chǔ)器管理

3.段描述符

r段描述符

I門

圖5.5描述符的分類

第5章卷儲(chǔ)器管理

1514131211109876543210

在80286上,這一字

段限量

基地址(24?31)GD0_必須置為0,以便向上

(16?19)兼容

6

PDPL類型Base基地址(16?23)

4

基地址(0-15)

2

段限量(0?15)

0

域描述

G粒度

D缺省

AVL可用

P出現(xiàn)

DPL描述符特權(quán)級(jí)

DT描述符類型圖5.6段描述符格式

第5章卷儲(chǔ)器管理

①段基地址。該域用來確定段在存儲(chǔ)器的起始地址。對(duì)

80286來說,段基地址24位寬,段可在4MB線性地址空間的任何

字節(jié)處起始;對(duì)80386和80486來說,段基地址32位寬,分成兩

部分,由處理器將它們結(jié)合在一起,32位段基地址決定了段可

在4GB線性地址空間中的任何字節(jié)處起始??梢钥闯?,保護(hù)方

式下段基地址的設(shè)置與實(shí)方式下段基地址僅限于被10H整除的

地址處是大不相同的,使用起來靈活得多。

第5章卷儲(chǔ)器管理

②段限量。該域用來確定段的尺寸。對(duì)80286,段限量為16

位無符號(hào)數(shù),表示段的最大尺寸為64KBo對(duì)80386和80486,段

限量由兩部分組成20位的無符號(hào)數(shù)。但僅就20位的段限量還不能

確定出段的尺寸,還需要根據(jù)段描述符中粒度D的設(shè)置來共同確

定。若粒度位設(shè)置成字節(jié)粒狀,則限量以字節(jié)為單位,得段的

尺寸為1B?1MBo若粒度位設(shè)置成頁粒狀,則限量以頁為單位,

一頁為4KB,故段的尺寸為4KB?4GB。當(dāng)采用頁粒狀時(shí),有效

地址偏移量的最低12位不必檢查。若粒度設(shè)置為頁,段限量設(shè)置

為00000H,則該段的有效地址偏移量為0?FFFH(4095)。

犬第5章卷儲(chǔ)器管理

③類型。

ST位的設(shè)置決定

ST了如何^壟釋其他域

數(shù)據(jù)段

訪問(1=yes)訪問(l=yes)

可讀(1=yes)可寫(l=yes)

一致性(1=yes)向下擴(kuò)展(1二yes)

0寸于正^?段£=0)

圖5.7段描述符類型域的定義

第5章卷儲(chǔ)器管理

④DT位。這是描述符類型位,用來區(qū)分兩種類型的段描

述符。DT=1,表示為段描述符;DT=O,表示為一個(gè)特殊的

描述符(或稱系統(tǒng)段描述符)或門描述符。

⑤DPL。該域?yàn)槊枋龇貦?quán)級(jí)域,用來實(shí)現(xiàn)保護(hù)而不用

于地址生成。

第5章卷儲(chǔ)器管理

⑥PoP位為存在位,用來表示描述符存在于存儲(chǔ)器中(P=l)

或不存在于存儲(chǔ)器中(P=0),它用于地址生成。如果一個(gè)描述符

所描述的段已移至硬盤上,表明不在內(nèi)存中,這時(shí)P=0。若這種

情況下試圖將該描述符的段選擇器裝入段寄存器,處理器便會(huì)

產(chǎn)生一個(gè)段不存在異常(以P=o為標(biāo)志),并且操作系統(tǒng)中的異常

處理程序會(huì)把該段重新裝入存儲(chǔ)器。因而該位的設(shè)置使操作系

統(tǒng)能夠?qū)?yīng)用程序?qū)崿F(xiàn)虛擬存儲(chǔ)器的功能。

X第5章卷儲(chǔ)器管理它

⑦AVLoAVL為可用位,只在80386、80486中使用。該位

用來確定是否允許系統(tǒng)程序員擴(kuò)充處理器的保護(hù)機(jī)制,即是否

允許對(duì)存儲(chǔ)器映象的I/O口實(shí)現(xiàn)保護(hù)。當(dāng)AVL=1時(shí),表示該描述

符(用來描述存儲(chǔ)器映象的I/O段)可被系統(tǒng)軟件使用。當(dāng)AVL=0

時(shí),表示該描述符對(duì)應(yīng)的段選擇器不能重新裝入和使用。

第5章卷儲(chǔ)器管理E

⑧DoD位為缺省操作尺寸位,不用于地址生成,只在

80386及80486的代碼段描述符中被識(shí)別。當(dāng)D=0時(shí),表示操作數(shù)

和有效地址的缺省值是16位;當(dāng)D=1時(shí),表示操作數(shù)和有效地址

的缺省值為32位。當(dāng)一條單指令具有超越前綴時(shí),可以超越該

位設(shè)置。

⑨GoG位為粒度位,在80386、80486中,它用來指定段限

量的單位。G=0,表明段限量以字節(jié)為單位;G=l,表明段限

量以頁為單位,每頁4KBo

X(2)特殊的段描述符及門描述符。

表5.1系統(tǒng)段類型域定義

類型域值位設(shè)置描述符

00000保留

10001可用的16位TSS

20010LDT

3001116位TSS忙

4010016位調(diào)用門

5010116位任務(wù)門

6011016位中斷門

7011116位陷阱門

81000保留

91001可用的32位TSS

AH1010保留

BH101132位TSS忙

CH110032位調(diào)用門

DH1101保留

EH111032位中斷門

FH111132位任務(wù)門

第5章卷儲(chǔ)器管理

4.描述符表寄存器

全局描述符表寄存器(GDTR)

基地址限量

_______________________________________A_________

80286-24位16位

80386/80486-32位

局部描述符表寄存器(LDTR)

選擇器基地址限量

16位80286-24位知位

80386/80486-32位

圖5.8描述符表寄存器

第5章卷儲(chǔ)器管理

第5章卷儲(chǔ)器管理

X第5章卷儲(chǔ)器管理

而看露—?一一

可見部分不可見部分

III

6350494847403916150

可寫

向下擴(kuò)展

:幾關(guān)口

第5章卷儲(chǔ)器管理

分不5]^部分

10390898887646332310

圖5.1280386和80486段寄存器格式

■^15.2.2存儲(chǔ)器的分頁管理

1,頁目錄和頁表

分頁管理機(jī)制在將線性化地址空間的頁轉(zhuǎn)換到物理地址空間的

頁時(shí),由于每個(gè)頁面的整個(gè)4KB是作為一個(gè)單位進(jìn)行映射的,且

每個(gè)頁面都對(duì)齊在4KB的邊界,因而線性地址的低12位在分頁轉(zhuǎn)

換過程中將直接作為物理地址的低12位使用。分頁管理機(jī)制中的

重定位函數(shù)(或稱轉(zhuǎn)換函數(shù))實(shí)際上是把線性地址的高20位轉(zhuǎn)換成對(duì)

應(yīng)物理地址的高20位,并且,這個(gè)轉(zhuǎn)換函數(shù)是通過對(duì)常駐內(nèi)存的

頁表查詢來完成的。對(duì)頁表的查詢分兩步進(jìn)行,即查詢一個(gè)兩級(jí)

表來完成。第一級(jí)表稱為頁目錄表,它的長度也總是恰好為一頁(4

KB),且起始于能被1000H整除的物理存儲(chǔ)器地址上。因而頁目錄

表的起始地址為20位(80386sx中為12位),頁目錄表可在微處理器

4GB(80386sx為16MB)地址空間內(nèi)任意安置,只要它對(duì)齊在4KB

第5章卷儲(chǔ)器管理

頁目錄的4KB數(shù)據(jù)結(jié)構(gòu)共存放了1024個(gè)項(xiàng)(稱為頁目錄項(xiàng))。

每項(xiàng)4B,32位,是一個(gè)指針,它指向另一個(gè)相似的數(shù)據(jù)結(jié)構(gòu)。

這個(gè)相似的數(shù)據(jù)結(jié)構(gòu)即是稱為頁表的第二級(jí)表。它也總是4KB

長,并對(duì)齊在4KB的邊界處。頁表的4KB數(shù)據(jù)結(jié)構(gòu)又存放了1

024個(gè)頁表項(xiàng),每項(xiàng)同樣4B,32位長,且作為物理存儲(chǔ)器中頁

的指針。頁目錄項(xiàng)和頁表項(xiàng)的格式都一樣,表示在圖5.13中。

其中高20位稱為頁幀地址,低12位定義如下:

第5章卷儲(chǔ)器管理

3112119876543210

UR

頁基地址

AVL00DA00//P

32---12

SW

圖5.13頁目錄表/頁表的表項(xiàng)格式

第5章卷儲(chǔ)器管理

(1)P位。該位為存在位。P=1表示該項(xiàng)里的頁地址映射到物

理存儲(chǔ)器中的一個(gè)頁。P=0,表示該項(xiàng)里的頁地址沒有映射到物

理存儲(chǔ)器中,或說該項(xiàng)所指頁不在物理存儲(chǔ)器中。這時(shí),若欲

用該項(xiàng)進(jìn)行地址轉(zhuǎn)換將產(chǎn)生一個(gè)頁出錯(cuò)異常,并且操作系統(tǒng)中

的頁出錯(cuò)處理程序?qū)言擁?xiàng)重新裝入存儲(chǔ)器。如果頁目錄中,

某項(xiàng)的P位清零,則表示對(duì)應(yīng)的頁表已被移出存儲(chǔ)器??梢哉f操

作系統(tǒng)利用P位提供的信息實(shí)現(xiàn)了請(qǐng)求分頁的虛擬存儲(chǔ)器的能力。

(2)R/W位。R/W位為讀/寫位,用于實(shí)現(xiàn)頁級(jí)保護(hù),它不

涉及到地址轉(zhuǎn)換。

第5章卷儲(chǔ)器管理

(3)U/S位。U/S位為用戶/監(jiān)控程序位,用于實(shí)現(xiàn)頁級(jí)保護(hù),

不涉及地址轉(zhuǎn)換。

(4)A位。A位為訪問位,用來表明該項(xiàng)指出的頁是否已被讀

或?qū)?。若目錄?xiàng)中A=l,則表示該項(xiàng)所指出的頁表已被訪問過。

若頁表項(xiàng)中A=l,則表示該頁表項(xiàng)所指出存儲(chǔ)器中的頁已被訪

問過??傊?,A位的置位由處理器完成,A位的狀態(tài)可供操作系

統(tǒng)軟件測試,以便計(jì)算不同頁的使用頻度。

X第5章卷儲(chǔ)器管理?

(5)D位。該位為頁面重寫標(biāo)志位,只在頁表項(xiàng)中設(shè)置,而

不在頁目錄項(xiàng)中設(shè)置。當(dāng)頁表項(xiàng)中D=1時(shí),表明該項(xiàng)所指出的存

儲(chǔ)器中的頁已被寫。D位的狀態(tài)可被操作系統(tǒng)軟件測試,以便操

作系統(tǒng)判斷存儲(chǔ)器的某頁在它最后一次被復(fù)制到磁盤后是否被

修改過。

(6)AVL域。該域?yàn)榭捎糜?,?位,供系統(tǒng)軟件設(shè)計(jì)人員

使用??蓪⑴c頁使用有關(guān)的信息放在該域中,幫助分析判斷應(yīng)

把哪些頁移出存儲(chǔ)器。

第5章卷儲(chǔ)器管理

2.線性地址到物理地址的轉(zhuǎn)換

313029282726252423222120191817161514131211109876543210

目錄索引域表索引域偏移量

(10位)(10位)(12位)

圖5.14線性地址格式

第5章卷儲(chǔ)器管理

31222112110

第5章卷儲(chǔ)器管理

31222112110

00100101011001110100100010010000

<—目錄索弓]——弓I——偏移量

(1(M立)(10位)(12位)

圖5.16線性地址25674890H的分解

L第5章卷儲(chǔ)器管理Hr

J^CR3=28345XXXH,而左后錄基地址=28345000H。%

性地址中目錄索引地址為0010010101B,故得頁目錄表中所尋址

項(xiàng)的物理地址=目錄表基地址+偏移地址(目錄索引地址乘

4)=28345000H+254H=28345254H。

設(shè)目錄表中尋址項(xiàng)(從28345254H開始的4個(gè)字節(jié))的內(nèi)容為

00200021H,這表明尋址項(xiàng)對(duì)應(yīng)頁表的基地址為00200000H,P位

(位0)及A位(位5)為1,該被尋址頁表在存儲(chǔ)器中,且對(duì)應(yīng)目錄項(xiàng)

已被訪問過。線性地址中的頁表索引地址為loonioiooB,故得

頁表中所尋址項(xiàng)的物理地址二頁表基地址+頁表索引地址

X4=00200000H+9D0H=002009D0Ho

又設(shè)頁表中所尋址項(xiàng)(從002009D0H開始的4個(gè)字節(jié))的內(nèi)容為

34567021H,則頁幀基地址=34567000H,要尋址的存儲(chǔ)單元最終

物理地址二頁幀基地址+線性地址中的12位偏移量

=34567000H+890H=34567890Ho

第5章卷儲(chǔ)器管理

4,頁轉(zhuǎn)換高速緩沖存儲(chǔ)器

31151412110

386DX=20位WEO

386sx=12位

圖5.17386DX/386sx轉(zhuǎn)換監(jiān)視緩沖器(TLB)結(jié)構(gòu)

第5章卷儲(chǔ)器管理

3.小結(jié)

段機(jī)制分頁機(jī)制

(分頁被禁用)

圖5.18虛擬一物理地址轉(zhuǎn)換

第5章卷儲(chǔ)器管理

5.3保護(hù)及任務(wù)切換

5.3.1不同任務(wù)間的保護(hù)

不同任務(wù)間的保護(hù)首先開始于把每個(gè)任務(wù)放置在不同的虛擬

地址空間,然后,再在每個(gè)任務(wù)中定義一組獨(dú)立的映射表,完成

相互間各不相同的虛擬-物理地址轉(zhuǎn)換。這樣,一個(gè)任務(wù)中的虛

擬地址空間映射到物理存儲(chǔ)器的一部分;另一個(gè)任務(wù)的虛擬地址

空間映射到物理存儲(chǔ)器的另外區(qū)域。在各任務(wù)中定義各自獨(dú)立的

一組映射表時(shí),一般不應(yīng)使它們所映射的物理存儲(chǔ)空間重疊,因

而,各任務(wù)之間是彼此隔離的。

第5章卷儲(chǔ)器管理

為了將操作系統(tǒng)與各應(yīng)用程序隔離,且為各應(yīng)用程序所共享,

常把操作系統(tǒng)存儲(chǔ)在一個(gè)單獨(dú)的任務(wù)中,并把操作系統(tǒng)存儲(chǔ)在虛

擬存儲(chǔ)空間的一個(gè)公共區(qū)域中。然后,再對(duì)每個(gè)任務(wù)按此公共區(qū)

域分配一個(gè)同樣的虛擬地址空間及定義同樣的虛擬-物理地址轉(zhuǎn)

換函數(shù)。這樣,既可使每個(gè)任務(wù)能對(duì)操作系統(tǒng)進(jìn)行訪問,又可

保證操作系統(tǒng)不被各應(yīng)用程序破壞。通常,稱各任務(wù)公用的這

部分虛擬地址空間為全局地址空間,而稱僅被一個(gè)任務(wù)獨(dú)占不被

其它任務(wù)共享的虛擬地址空間為局部地址空間。

M第5章卷儲(chǔ)器管理

5.3.2段級(jí)別保護(hù)

1514131211109876543210

GD0i(皆9)■0286上,

基地址(24?31)_為向上

6此字必?幡為0

PDPLDT基地址:(16?23)

4

基地址(0-15)

2

段限量(0~15)

0

域描述

G顆位性

D

AVL可用

P^4

DPL描述符特權(quán)級(jí)別

DT描述符類型圖5.19段描述符格式

犬第5章卷儲(chǔ)器管理

1.類型檢查

ST位的設(shè)置決定

STII?如^可解釋其他域

代碼段數(shù)據(jù)段

可訪問的(1=yes)可訪問的(l=yes)

可讀的(1二yes)可寫的(byes)

一致的(1二yes)向下擴(kuò)展(1二yes)

第5章存儲(chǔ)器管理

表5.2存儲(chǔ)段描述符類型

類型說明類型說明

0只讀8只執(zhí)行

只讀、已訪問9只執(zhí)行、已訪問

讀/寫10執(zhí)行/讀

1,讀/寫、已訪問y執(zhí)行/讀、已訪問

重只讀、向下擴(kuò)展12;只執(zhí)行、一致碼段

1只讀、向下擴(kuò)展、已訪問只執(zhí)行、一致碼段、已訪問

6,讀/寫、向下擴(kuò)展11執(zhí)行/讀、一致碼段

7讀/寫、向下擴(kuò)展、已訪問15執(zhí)行/讀、一契碼段、已訪問

第5章存儲(chǔ)器管理

表5.3相容的段寄存器和段類型

段類型

;段寄存器’

只讀讀寫只執(zhí)行執(zhí)行/讀

DS、ES、FS、GS是是否是

'是E否

SS否?否

CS否否是是

第5章卷儲(chǔ)器管理

2.限度檢查

實(shí)方式下,段的限度固定為64KB。保護(hù)方式下,段的限度

由段描述符的限度域指出,是不固定的。對(duì)80286來說,限度以

字節(jié)為單位,16位限度域表明一個(gè)段最大尺寸為64KBo對(duì)

80386/80486來說,限度域?yàn)?0位,當(dāng)描述符中G=0時(shí),限度以字

節(jié)為單位,一個(gè)段最大尺寸為1MB;當(dāng)G=1時(shí),限度以頁為單位,

一頁為4KB,限度=限度域值*4096+4095。因此,若限度域值為

0,則該段的最大尺寸為4KB,程序可訪問段內(nèi)從0到4095的字節(jié)。

第5章卷儲(chǔ)器管理

除了向下擴(kuò)充的段以外,所有段的段描述符的限度(化為字

節(jié)數(shù))都表示從段起始處開始的最大偏移量。當(dāng)訪問存儲(chǔ)器操作

數(shù)時(shí),只要被訪問操作數(shù)的一部分超出限度,處理器就會(huì)發(fā)出

一般保護(hù)異常信號(hào)。例如,訪問一個(gè)雙字操作數(shù),其地址在限

度減2處,便會(huì)發(fā)生異常。

當(dāng)段描述符中E=1時(shí),為向下擴(kuò)充段,它常用于堆棧段。

對(duì)向下擴(kuò)充的段來說,限度表示一個(gè)段的最小偏移量。向下擴(kuò)

充堆棧段的合法偏移量范圍是從限度的字節(jié)數(shù)+1直到22。-1(對(duì)16

位段)或232-1(對(duì)32位段)。當(dāng)限度=o時(shí),向下擴(kuò)充段具有最大的

尺寸。

第5章卷儲(chǔ)器管理

向上擴(kuò)展的段向下擴(kuò)展的段

EIX立二0量EIX立二1量

FFFFHFFFFH

吃卜段內(nèi)

段的有

PSS+1W偏移量^?£圍<P助夏+1w偏移量

WFFFFHCFFFFH

據(jù)+1IW+1

IW

段內(nèi)彭卜

段的有

效范圍OOOOHW偏移量0000HW偏移量

WB阪W限度

0000H0000H

*向下擴(kuò)展的段通常用作堆棧

跖卦痂捉田的坐刑

第5章卷儲(chǔ)器管理

3.襁板標(biāo)

(用戶級(jí)別)

擴(kuò)展

系統(tǒng)服務(wù)

硼J3核

(最(氐級(jí)另狙級(jí)另打級(jí)別。

級(jí)W(最高特權(quán)

'第5章商儲(chǔ)器管理Br1

5.3.3數(shù)據(jù)訪問

每當(dāng)一個(gè)程序試圖訪問一個(gè)數(shù)據(jù)段時(shí),便將程序的當(dāng)前特權(quán)

級(jí)CPL與要訪問段的特權(quán)級(jí)DPL進(jìn)行比較,只要DPL的特權(quán)級(jí)別等

于或低于CPL(或RPL)的特權(quán)級(jí),對(duì)該數(shù)據(jù)段的訪問便是允許的。

否則便不允許,并產(chǎn)生一個(gè)一般保護(hù)異常,向操作系統(tǒng)報(bào)告該訪

問操作違反了特權(quán)規(guī)則。因而,在數(shù)據(jù)訪問時(shí),被訪問的數(shù)據(jù)段

的特權(quán)級(jí)DPL規(guī)定了允許訪問該段的最外層特權(quán)級(jí)。由于數(shù)據(jù)訪

問的這一特權(quán)級(jí)規(guī)則使得上節(jié)所述特權(quán)級(jí)的典型用法中,0級(jí)的操

作系統(tǒng)核心,有權(quán)訪問任務(wù)中的所有數(shù)據(jù)存儲(chǔ)段;1級(jí)的操作系統(tǒng)

其余部分有權(quán)訪問2級(jí)和3級(jí)的所有數(shù)據(jù)存儲(chǔ)段;3級(jí)的應(yīng)用程序只

能訪問本身的處于3級(jí)的數(shù)據(jù)存儲(chǔ)段。反過來,0級(jí)操作系統(tǒng)核心

的數(shù)據(jù)存儲(chǔ)段卻得以保護(hù),不能被操作系統(tǒng)除核心外的其余部分

及應(yīng)用程序訪問。同時(shí),整個(gè)操作系統(tǒng)也得到了保護(hù),它的數(shù)據(jù)

存儲(chǔ)段不允許任何2級(jí)和3級(jí)的應(yīng)用程序訪問。

第5章卷儲(chǔ)器管理

5.3.4控制轉(zhuǎn)移

在同一任務(wù)中實(shí)現(xiàn)控制轉(zhuǎn)移有3種方式:段內(nèi)轉(zhuǎn)移,直接轉(zhuǎn)

移到另一代碼段的段間轉(zhuǎn)移和通過調(diào)用門的段間轉(zhuǎn)移。

1.段內(nèi)轉(zhuǎn)移

段內(nèi)轉(zhuǎn)移通過近程跳轉(zhuǎn)指令JMP或近程調(diào)用指令CALL及返

回指令RET(包括直接給出段內(nèi)偏移量和間接給出段內(nèi)偏移量)執(zhí)

行。它不會(huì)引起特權(quán)級(jí)的變化,也不需再加載CS段寄存器,只

需作限度檢查,即檢查是否會(huì)轉(zhuǎn)移到段外。同時(shí)為加速保護(hù)檢查,

限度值已預(yù)先裝入到段描述符高速緩存器中。

X第5章卷儲(chǔ)器管理

直接的段間轉(zhuǎn)移是最簡單的段間轉(zhuǎn)移,它使用具有遠(yuǎn)程標(biāo)號(hào)

的跳轉(zhuǎn)指令或調(diào)用及返回指令執(zhí)行。這時(shí),遠(yuǎn)程標(biāo)號(hào)直接給出

一個(gè)48位的遠(yuǎn)指針:16位選擇子和32位偏移量。該16位選擇子

作為新的選擇器值裝入CS寄存器時(shí),便將所指向的段描述符裝

入CS段寄存器對(duì)應(yīng)的段描述符高速緩存器中。接下來應(yīng)進(jìn)行保

護(hù)檢查,只有當(dāng)遠(yuǎn)指針?biāo)改繕?biāo)段的描述符特權(quán)級(jí)DPL與當(dāng)前特

權(quán)級(jí)CPL(當(dāng)前正執(zhí)行程序段的特權(quán)級(jí))相等,且目標(biāo)段是一個(gè)存

在的可執(zhí)行的代碼段,或目標(biāo)段描述符特權(quán)級(jí)DPL高于等于當(dāng)前

特權(quán)級(jí)CPL,且目標(biāo)段是一個(gè)存在的,一致的可執(zhí)行代碼段時(shí),

這種控制轉(zhuǎn)移方能實(shí)現(xiàn)。即目標(biāo)段轉(zhuǎn)移地址的基地址由遠(yuǎn)指針

所指段描述符提供,轉(zhuǎn)移地址的偏移量由跳轉(zhuǎn)或調(diào)用指令提供。

第5章卷儲(chǔ)器管理石]

這里所謂一藪的可而亍代碼段是一種特別的存儲(chǔ)段,以段描

述符類型域中ST=1及C=1來標(biāo)志。一致的可執(zhí)行代碼段用來存放

多個(gè)特權(quán)級(jí)程序共享的例程。例如,存放數(shù)值庫例程。這樣,

不同特權(quán)級(jí)執(zhí)行的程序可以使用段間調(diào)用指令調(diào)用庫中被共享的

例程,并可在調(diào)用程序(主程序)具有的特權(quán)級(jí)(等于或低于一致可

執(zhí)行代碼段的特權(quán)級(jí))執(zhí)行該例程,而不要求改變特權(quán)級(jí)。因此,

可以說直接的段間轉(zhuǎn)移實(shí)現(xiàn)的是同一特權(quán)級(jí)同一任務(wù)的轉(zhuǎn)移。

控制轉(zhuǎn)移到一致的代碼段,將在調(diào)用程序(主程序)具有的特

權(quán)級(jí)執(zhí)行一致代碼段中的共享例程,而不在一致的代碼段由其

DPL表示的特權(quán)級(jí)上執(zhí)行共享例程。因而,這種情況下,一致代

碼段中的DPL用來規(guī)定可以轉(zhuǎn)移到該一致代碼段的最內(nèi)層特權(quán)級(jí)。

DPL的這種解釋正好與數(shù)據(jù)訪問時(shí)相反。

第5章花儲(chǔ)器管理

3.通過調(diào)用門的段間轉(zhuǎn)移

表5.4系統(tǒng)段和門的類型字段的編碼

類型編碼定義類型編碼定義

0未定義8-未定義

1可用286Tss,9可用386Tss

2LDT10未定義

3忙的286TSS11忙的386Tss.

4286調(diào)用門12386調(diào)用門?

5任務(wù)門113未定義

6286中斷門14386中斷門

7286陷阱門15386陷阱門

第5章卷儲(chǔ)器管理

調(diào)用門

偏移量(高)*

PDPL0類型000計(jì)數(shù)

代碼段選擇器

偏移量(低)

*對(duì)80286,大多數(shù)二0

域描述

P存在

DPL描述符特權(quán)級(jí)別

類型指定門類型

計(jì)數(shù)要拷貝至目標(biāo)棧的字?jǐn)?shù)(16位門)n

雙字?jǐn)?shù)(32位門)

圖5.23調(diào)用門描述符格式

第5章卷儲(chǔ)器管理

1決定誰可以訪問門

2決定誰可以訪問過程

允話弼綏至不一致代碼段,如果:

較d特權(quán)(CPL、RPL)W門

DPL、

允許調(diào)用期碼段,如果:

較寺權(quán)(CPL、RPL)W門

DPL、

B^DPL<CPL

圖5.24通過調(diào)用門的轉(zhuǎn)移

第5章卷儲(chǔ)器管理

圖5.25特權(quán)級(jí)和門及其間的調(diào)用

第5章卷儲(chǔ)器管理

CALL指令通過調(diào)用門向內(nèi)層程序轉(zhuǎn)移時(shí),不僅切換特權(quán)級(jí),

而且也需要切換棧。為使微機(jī)系統(tǒng)安全運(yùn)行,操作系統(tǒng)應(yīng)使每個(gè)

任務(wù)為每個(gè)特權(quán)級(jí)別保持一個(gè)獨(dú)立的棧。因而,當(dāng)通過調(diào)用門向

內(nèi)層轉(zhuǎn)移時(shí),必須從主調(diào)用程序的外層棧切換到目標(biāo)的內(nèi)層棧。

內(nèi)層棧的特權(quán)級(jí)別由目標(biāo)代碼段描述符的DPL決定。內(nèi)層棧的棧

段寄存器SS及棧指針ESP由任務(wù)狀態(tài)段TSS中適當(dāng)(與目標(biāo)代碼段

相同特權(quán)級(jí))的指針進(jìn)行初始化。TSS由操作系統(tǒng)為每個(gè)任務(wù)所建,

它包含有由操作系統(tǒng)初始化,且為只讀的指向0級(jí)、1級(jí)和2級(jí)的

48位棧指針:棧段選擇器(SS)和偏移量(ESP)o通常TSS中的ESP

指針設(shè)置成新棧段的高端限定值,因而在新的特權(quán)區(qū)總是建立起

第5章卷儲(chǔ)器管理

向內(nèi)調(diào)用

向外返回

返回后的

內(nèi)層棧

圖5.26切換到內(nèi)層棧

第5章卷儲(chǔ)器管理

5.向外層返回

CALL指令通過調(diào)用門把外層的程序轉(zhuǎn)移到內(nèi)層的過程(子程

序)后,當(dāng)內(nèi)層的子程序執(zhí)行完時(shí),需執(zhí)行一條段間返回指令RET,

把程序再從內(nèi)層轉(zhuǎn)向外層,并將堆棧從內(nèi)層切向外層。仍以圖5

26為例說明返回過程。首先,從內(nèi)層棧中彈出返回地址指針到

CS寄存器和EIP寄存器中,并且可以調(diào)整內(nèi)層棧的ESP值(如圖

5.26中ESP+16,該調(diào)整數(shù)16為RET16的操作數(shù)),使其跳過CALL

指令執(zhí)行時(shí)從外層??截惾雰?nèi)層棧的4個(gè)雙字參數(shù),指向外層棧

指針ESP的壓入處。返回地址指針的選擇子部分指向要返回的外

層棧。選擇子的RPL字段確定返回后的特權(quán)級(jí)。

第5章卷儲(chǔ)器管理

5.3.5頁級(jí)別保護(hù)

圖5.27頁表及頁目錄項(xiàng)目格式

第5章存儲(chǔ)器管理

表5.5頁級(jí)保護(hù)屬性

U/SiR/W用戶訪問權(quán)限系統(tǒng)訪問權(quán)限

00/讀/寫/執(zhí)行

醺[1,產(chǎn),讀/寫/執(zhí)行

1tft;:讀/執(zhí)行1讀/寫/執(zhí)行:

11讀/寫/執(zhí)行讀/寫/執(zhí)行

第5章卷儲(chǔ)器管理

表5.6頁目錄和頁表的保護(hù)組合

頁目錄項(xiàng)目頁表項(xiàng)目有效保護(hù)

特權(quán)訪問特權(quán)訪問特權(quán)訪問

監(jiān)督者R或R/W監(jiān)督者或用戶R或R/W監(jiān)督者R/W

用戶:

R或R/W監(jiān)督者R或R/W監(jiān)督者R/W

用戶R用戶R或R/W用戶R

用戶R/W用戶R用戶R

用戶R/W用戶R/W用戶R/W

第5章卷儲(chǔ)器管理31161510

I/O映射基址000000000000000T64H

任務(wù)切換0000000000000000任務(wù)的LOT選群60H

5.3.60000000000000000GS5CH

0000000000000000FS58H

0000000000000000DS54H

1.任務(wù)狀態(tài)段0000000000000000SS50H

0000000000000000cs4CH

0000000000000000ES48H

EDI44H

ESI40H

EBP3CH

ESP38H

EBX34H

EDX30H

ECX2CH

EAX28H

EFLAGS24H

EIP20H

保留1CH

0000000000000000CPL2演S18H

CPIN的ESP14H

0000000000000000CPL1的SS10H

CPL1的ESPCH

0000000000000000CPLO的SS8

CPLO的ESP4

圖52832位任務(wù)狀態(tài)段注:累添髏普落"變?cè)诔跏蓟蟛桓淖?。其它區(qū)

第5章卷儲(chǔ)器管理

1)鏈接字段

任務(wù)A任務(wù)B任務(wù)CEFLAGS

圖5.29任務(wù)狀態(tài)段的鏈接鏈

第5章卷儲(chǔ)器管理

》兩層布措釬

任務(wù)狀態(tài)段中有3個(gè)內(nèi)層棧指針,均為48位全指針,依次存

放在TSS中偏移量為4、12及20開始的區(qū)域中,分別指向0級(jí)、1級(jí)

及2級(jí)堆棧的棧頂。當(dāng)發(fā)生向內(nèi)層轉(zhuǎn)移時(shí),便把相應(yīng)的內(nèi)層棧指

針裝入到SS及ESP寄存器,以便切換到內(nèi)層堆棧,且把外層棧指

針壓入內(nèi)層棧中,以便當(dāng)內(nèi)層向外層返回時(shí)恢復(fù)外層棧用。TSS

段的內(nèi)層棧指針沒有指向3級(jí)的棧指針(因?yàn)?級(jí)是最外層的特權(quán)

級(jí))。如果任務(wù)在3級(jí)被掛起,由于沒有發(fā)生特權(quán)級(jí)轉(zhuǎn)移,堆棧不

用切換,且被掛起任務(wù)的指針保存在TSS的SS及ESP寄存器映象

中。

TSS段中的內(nèi)層棧指針只能讀出不能寫入,因而,向內(nèi)層棧

切換時(shí)總是將內(nèi)層棧初始化為同樣的棧指針。這是因?yàn)椴豢赡馨l(fā)

第5章卷儲(chǔ)器管理

不方親前畫弱的筋薦露

這里所謂有關(guān)地址映射的基寄存器是指局部描述符表寄存器

LDTR和控制寄存器CR3。LDTR包含當(dāng)前任務(wù)的LDT描述符的選

擇子。CR3包含頁轉(zhuǎn)換機(jī)制中頁目錄表的基地址(起始地址)。

任務(wù)切換時(shí),處理器用新任務(wù)TSS段中偏移量為60H中的內(nèi)容(任

務(wù)的LDT描述符選擇子)裝入LDTR寄存器。這樣,便將局部描述

符表LDT變成新任務(wù)的LDT,從而也就改變了虛擬地址到線性地

址的轉(zhuǎn)換函數(shù)。同樣,在任務(wù)切換時(shí),處理器用新任務(wù)TSS段中

偏移量為1CH處的內(nèi)容裝入CR3寄存器。這樣,就將頁目錄表變

成新任務(wù)的頁目錄表,從而改變了線性地址到物理地址的轉(zhuǎn)換函

數(shù)。這種在任務(wù)之間改變轉(zhuǎn)換函數(shù)的能力,也是保護(hù)機(jī)制的一部

分,使任務(wù)之間得到相互隔離。

第5章卷儲(chǔ)器管理

4)寄存器保存區(qū)域

TSS的寄存器保存區(qū)位于偏移量為20H?5FH的區(qū)域,用來保

存通用寄存器、處理器控制寄存器及段寄存器的內(nèi)容。其中各

段寄存器內(nèi)容都保存在一個(gè)32位的雙字中,雙字的低16位存放

16位選擇子,雙字的高16位為全零。當(dāng)TSS對(duì)應(yīng)的任務(wù)正在執(zhí)行

時(shí),保存區(qū)域是未定義的。當(dāng)前任務(wù)被切換時(shí),通用寄存器、

處理器控制寄存器及段寄存器的當(dāng)前值便存入當(dāng)前任務(wù)的保存

區(qū)域中。這樣,當(dāng)再次發(fā)生任務(wù)切換,并切換回原任務(wù)時(shí),各

寄存器的值可由保存區(qū)域讀出,恢復(fù)成該任務(wù)切換前的狀態(tài),

以使原任務(wù)能恢復(fù)執(zhí)行。

第5章卷儲(chǔ)器管理

5)其它字段

TSS中偏移量從66H開始的區(qū)域存放I/O許可位圖,它定義了

可由TSS對(duì)應(yīng)任務(wù)尋址的I/O端口地址。I/O許可位圖屬于TSS中

的附加字段。

TSS中偏移量為64H處的字是為任務(wù)提供的特別的屬性。

80386中只定義了一個(gè)調(diào)試陷阱屬性位T(位于64H處字的最低位),

字的其它位為全零。當(dāng)發(fā)生任務(wù)切換時(shí),進(jìn)入任務(wù)的T位為1,

則在任務(wù)切換后,新任務(wù)的第一條指令執(zhí)行之前產(chǎn)生調(diào)試陷阱。

調(diào)試陷阱可使軟件在任務(wù)之間根據(jù)需要有效地共享調(diào)試寄存器。

第5章卷儲(chǔ)器管理

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論