




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國特種變壓器行業(yè)發(fā)展?fàn)顩r及投資規(guī)劃研究報告
- 2025-2030年中國熱塑性聚酯PBT行業(yè)運行動態(tài)與營銷策略研究報告
- 2025-2030年中國灶具行業(yè)競爭格局及前景趨勢預(yù)測報告
- 2025-2030年中國注射穿刺器械行業(yè)市場運行現(xiàn)狀投資戰(zhàn)略研究報告
- 2025-2030年中國汽車驅(qū)動橋行業(yè)市場運營狀況及發(fā)展趨勢分析報告
- 2025-2030年中國無線路由器市場運行動態(tài)及投資戰(zhàn)略研究報告
- 2025-2030年中國天然氣發(fā)動機行業(yè)發(fā)展現(xiàn)狀及前景趨勢分析報告
- 2025-2030年中國地被植物行業(yè)運營狀況及發(fā)展前景分析報告
- 2025-2030年中國四氟丙醇市場競爭格局及發(fā)展態(tài)勢分析報告
- 2025-2030年中國凝血酶行業(yè)市場發(fā)展?fàn)顩r規(guī)劃分析報告
- 機械設(shè)計制造及其自動化專業(yè)知識
- 鋼結(jié)構(gòu)地下停車場方案
- 新人教版小學(xué)五年級數(shù)學(xué)下冊《第一單元 觀察物體(三)》2022課標(biāo)大單元整體教學(xué)設(shè)計-全析
- 期末測試卷(二)(試題 )2024-2025學(xué)年二年級上冊數(shù)學(xué)人教版
- 天津市2023-2024學(xué)年高二上學(xué)期期末考試物理試題(含答案)
- 第九單元 課題1 溶液及其應(yīng)用-2024-2025學(xué)年九年級化學(xué)下人教版教學(xué)課件
- 《大學(xué)生創(chuàng)新創(chuàng)業(yè)基礎(chǔ)教程》教學(xué)教案
- 2024專利代理人考試真題及答案
- JJF 2163-2024漆膜劃格器校準(zhǔn)規(guī)范
- 電子技術(shù)基礎(chǔ)課件第6章數(shù)字電路基礎(chǔ)
- 國有企業(yè)職業(yè)經(jīng)理人績效考核制度
評論
0/150
提交評論