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

下載本文檔

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

文檔簡介

第5章卷儲器管理

第5章花儲器管理

5.1實方式存儲器管理

5.2保護方式存儲器管理

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

5.4虛擬8086方式

第5章卷儲器管理

5.1實方式存儲器管理

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

微處理器運行在實方式時,程序?qū)Υ鎯ζ鞯脑L問采用分段地

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

其表示方式為:

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

偏移量確定在

段中一個字節(jié)

偏移量從段字

^0^^則量

安置在10H(16)

段值地址處

圖5.1在分段尋址中名

M第5章卷儲器管理

5.1.2物理地址的形成

段:1BA4:204E

1930

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

1530

16位偏移值4—+204EH

190

1DA8EH

20彳立物理地址

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

犬第5章卷儲器管理

5.2保護方式存儲器管理

5.2.1存儲器的分段管理

1.段選擇器

153210

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

士匚1TIRPL

索引

請求者特權(quán)級

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

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

表中的索引

J表指示器

。二全局描述符表(GDT)

1二局部描述符表(LDT)

圖5.3保護方式段選擇器格式

第5章卷儲器管理

2.段描述符表

153210

局部描述全局描述

符表符表

圖5.4段選擇器和描述符表

第5章卷儲器管理

3.段描述符

r段描述符

I門

圖5.5描述符的分類

第5章卷儲器管理

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)級

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

第5章卷儲器管理

①段基地址。該域用來確定段在存儲器的起始地址。對

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

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

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

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

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

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

第5章卷儲器管理

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

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

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

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

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

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

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

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

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

犬第5章卷儲器管理

③類型。

ST位的設(shè)置決定

ST了如何^壟釋其他域

數(shù)據(jù)段

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

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

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

0寸于正^?段£=0)

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

第5章卷儲器管理

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

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

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

⑤DPL。該域為描述符特權(quán)級域,用來實現(xiàn)保護而不用

于地址生成。

第5章卷儲器管理

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

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

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

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

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

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

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

X第5章卷儲器管理它

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

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

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

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

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

第5章卷儲器管理E

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

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

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

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

位設(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章卷儲器管理

4.描述符表寄存器

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

基地址限量

_______________________________________A_________

80286-24位16位

80386/80486-32位

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

選擇器基地址限量

16位80286-24位知位

80386/80486-32位

圖5.8描述符表寄存器

第5章卷儲器管理

第5章卷儲器管理

X第5章卷儲器管理

而看露—?一一

可見部分不可見部分

III

6350494847403916150

可寫

向下擴展

:幾關(guān)口

第5章卷儲器管理

分不5]^部分

10390898887646332310

圖5.1280386和80486段寄存器格式

■^15.2.2存儲器的分頁管理

1,頁目錄和頁表

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

頁時,由于每個頁面的整個4KB是作為一個單位進行映射的,且

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

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

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

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

頁表查詢來完成的。對頁表的查詢分兩步進行,即查詢一個兩級

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

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

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

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

第5章卷儲器管理

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

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

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

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

024個頁表項,每項同樣4B,32位長,且作為物理存儲器中頁

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

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

第5章卷儲器管理

3112119876543210

UR

頁基地址

AVL00DA00//P

32---12

SW

圖5.13頁目錄表/頁表的表項格式

第5章卷儲器管理

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

理存儲器中的一個頁。P=0,表示該項里的頁地址沒有映射到物

理存儲器中,或說該項所指頁不在物理存儲器中。這時,若欲

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

的頁出錯處理程序?qū)言擁椫匦卵b入存儲器。如果頁目錄中,

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

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

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

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

第5章卷儲器管理

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

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

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

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

若頁表項中A=l,則表示該頁表項所指出存儲器中的頁已被訪

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

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

X第5章卷儲器管理?

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

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

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

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

修改過。

(6)AVL域。該域為可用域,共3位,供系統(tǒng)軟件設(shè)計人員

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

把哪些頁移出存儲器。

第5章卷儲器管理

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

313029282726252423222120191817161514131211109876543210

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

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

圖5.14線性地址格式

第5章卷儲器管理

31222112110

第5章卷儲器管理

31222112110

00100101011001110100100010010000

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

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

圖5.16線性地址25674890H的分解

L第5章卷儲器管理Hr

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

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

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

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

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

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

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

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

頁表中所尋址項的物理地址二頁表基地址+頁表索引地址

X4=00200000H+9D0H=002009D0Ho

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

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

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

=34567000H+890H=34567890Ho

第5章卷儲器管理

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

31151412110

386DX=20位WEO

386sx=12位

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

第5章卷儲器管理

3.小結(jié)

段機制分頁機制

(分頁被禁用)

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

第5章卷儲器管理

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

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

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

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

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

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

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

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

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

第5章卷儲器管理

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

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

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

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

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

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

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

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

M第5章卷儲器管理

5.3.2段級別保護

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)級別

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

犬第5章卷儲器管理

1.類型檢查

ST位的設(shè)置決定

STII?如^可解釋其他域

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

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

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

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

第5章存儲器管理

表5.2存儲段描述符類型

類型說明類型說明

0只讀8只執(zhí)行

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

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

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

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

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

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

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

第5章存儲器管理

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

段類型

;段寄存器’

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

DS、ES、FS、GS是是否是

'是E否

SS否?否

CS否否是是

第5章卷儲器管理

2.限度檢查

實方式下,段的限度固定為64KB。保護方式下,段的限度

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

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

80386/80486來說,限度域為20位,當(dāng)描述符中G=0時,限度以字

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

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

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

第5章卷儲器管理

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

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

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

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

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

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

對向下擴充的段來說,限度表示一個段的最小偏移量。向下擴

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

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

尺寸。

第5章卷儲器管理

向上擴展的段向下擴展的段

EIX立二0量EIX立二1量

FFFFHFFFFH

吃卜段內(nèi)

段的有

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

WFFFFHCFFFFH

據(jù)+1IW+1

IW

段內(nèi)彭卜

段的有

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

WB阪W限度

0000H0000H

*向下擴展的段通常用作堆棧

跖卦痂捉田的坐刑

第5章卷儲器管理

3.襁板標(biāo)

(用戶級別)

擴展

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

硼J3核

(最(氐級另狙級另打級別。

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

'第5章商儲器管理Br1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

第5章卷儲器管理

5.3.4控制轉(zhuǎn)移

在同一任務(wù)中實現(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í)

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

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

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

X第5章卷儲器管理

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

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

一個48位的遠指針:16位選擇子和32位偏移量。該16位選擇子

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

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

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

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

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

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

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

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

第5章卷儲器管理石]

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

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

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

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

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

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

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

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

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

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

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

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

第5章花儲器管理

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章卷儲器管理

調(diào)用門

偏移量(高)*

PDPL0類型000計數(shù)

代碼段選擇器

偏移量(低)

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

域描述

P存在

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

類型指定門類型

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

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

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

第5章卷儲器管理

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章卷儲器管理

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

第5章卷儲器管理

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

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

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

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

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

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

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

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

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

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

第5章卷儲器管理

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

向外返回

返回后的

內(nèi)層棧

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

第5章卷儲器管理

5.向外層返回

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

序)后,當(dāng)內(nèi)層的子程序執(zhí)行完時,需執(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í)行時從外層棧拷貝入內(nèi)層棧的4個雙字參數(shù),指向外層棧

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

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

第5章卷儲器管理

5.3.5頁級別保護

圖5.27頁表及頁目錄項目格式

第5章存儲器管理

表5.5頁級保護屬性

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

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

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

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

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

第5章卷儲器管理

表5.6頁目錄和頁表的保護組合

頁目錄項目頁表項目有效保護

特權(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章卷儲器管理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)段注:累添髏普落"變在初始化后不改變。其它區(qū)

第5章卷儲器管理

1)鏈接字段

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

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

第5章卷儲器管理

》兩層布措釬

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

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

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

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

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

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

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

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

中。

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

切換時總是將內(nèi)層棧初始化為同樣的棧指針。這是因為不可能發(fā)

第5章卷儲器管理

不方親前畫弱的筋薦露

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

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

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

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

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

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

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

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

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

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

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

第5章卷儲器管理

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

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

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

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

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

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

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

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

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

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

第5章卷儲器管理

5)其它字段

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

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

的附加字段。

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

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

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

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

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

第5章卷儲器管理

溫馨提示

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

最新文檔

評論

0/150

提交評論