《微處理器》PPT課件

上傳人:san****019 文檔編號:16066316 上傳時間:2020-09-17 格式:PPT 頁數(shù):189 大?。?.40MB
收藏 版權(quán)申訴 舉報 下載
《微處理器》PPT課件_第1頁
第1頁 / 共189頁
《微處理器》PPT課件_第2頁
第2頁 / 共189頁
《微處理器》PPT課件_第3頁
第3頁 / 共189頁

下載文檔到電腦,查找使用更方便

14.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《微處理器》PPT課件》由會員分享,可在線閱讀,更多相關(guān)《《微處理器》PPT課件(189頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、第二章 微處理器,,,2.1 內(nèi)部結(jié)構(gòu) 2.2 寄存器組 2.4 工作模式 2.5 中斷與異常 2.6 存儲管理 2.7 多任務(wù)與多處理 2.8 高速緩存 2.9 引腳和功能 2.10 總線周期,本章學習目標,80486各部件的功能和相互關(guān)系,Pentium在體系結(jié)構(gòu)上的新特點。 32位CPU的寄存器以及和16位CPU的區(qū)別。 在保護模式下中斷和異常。 在實模式、保護模式和虛擬8086模式下存儲管理。 任務(wù)設(shè)置,任務(wù)轉(zhuǎn)換過程及檢查的內(nèi)容。 80486和Pentium高速緩存的結(jié)構(gòu)和功能。 80486和Pentium引腳的功能及差別。 80486和Pentium主要總線周期時序、總線狀態(tài)變化及區(qū)

2、別。,2.1 內(nèi)部結(jié)構(gòu),2.1.1 80486的內(nèi)部結(jié)構(gòu) 2.1.1 Pentium的內(nèi)部結(jié)構(gòu),2.1.1 80486的內(nèi)部結(jié)構(gòu),2.1.1 80486的內(nèi)部結(jié)構(gòu),BIU:與芯片總線、指令預取部件、Cache部 件相連,執(zhí)行總線訪問請求。 讀:預取指令、讀內(nèi)存、Cache行填充 寫:寫M和I/O、Cache通寫寫內(nèi)存;寫緩沖(432b)。 指令預?。嚎偩€空閑時產(chǎn)生存儲器地址向Cache或通過BIU向內(nèi)存取16B代碼命中Cache放入32B的指令隊列中產(chǎn)生預取周期 跳轉(zhuǎn)、中斷、調(diào)子程時清空預取隊列。,2.1.1 80486的內(nèi)部結(jié)構(gòu),指令譯碼:從指令預取隊列取機器碼轉(zhuǎn)換成控制信號。 兩步譯碼:

3、指令執(zhí)行時要訪存,產(chǎn)生 總線 周期取存儲器操作數(shù)。 指令譯碼由機器碼產(chǎn)生對其 它處理部件的控制信號。 控制部件:對整數(shù)、浮點運算和分段部件控制 整數(shù)部件:9個32位REG、1個64位桶形移位 器、ALU 。 1T內(nèi)完成整數(shù)傳送、加減運算和邏輯操作,分段和分頁部件:進行存儲器保護和虛存管理,FPU:增強80387,Cache:L1Cache:8KB 數(shù)據(jù)和指令Cache。 L2Cache:128KB256KB,邏輯地址,,分段,段Cache,2.1.1 80486的內(nèi)部結(jié)構(gòu),線性地址,,分頁,TLB,物理地址,CPU,,64位,FPU,,64位,Cache,MEM,BIU,

4、,32位,,32位,成組傳送,L1Cache,,128b,命中,預取部件,,不命中,內(nèi)存,,,,未命中行填充,2.1.2 Pentium的內(nèi)部結(jié)構(gòu),2.1.2 Pentium的內(nèi)部結(jié)構(gòu),8KB的指令Cache和8KB數(shù)據(jù)Cache 各自的TLB Cache和BIU的DB是64位 支持突發(fā)式總線周期和流水線總線周期,1. 哈佛結(jié)構(gòu)的Cache,預取順序請求 預取B1 線性預取 無分支 BTB預測 有分支 動態(tài)分支預測算法 預取B2 預取分支后指令,2.1.2 Pentium的內(nèi)部結(jié)構(gòu),,,,,,,,,,,,,,記錄分支地址,,,,,,一 個 工 作,從Cache或 內(nèi)

5、存預取指令,2. BTB和預取B,2.1.2 Pentium的內(nèi)部結(jié)構(gòu),2. BTB和預取B,預取順序請求,,預取B1,,BTB預測,,動態(tài)分支預測算法,無分支,,有分支,,,,,線性預取,,,,預取分支后指令,預取B2,,,,,,紀錄分支地址,分支指令,2.1.2 Pentium的內(nèi)部結(jié)構(gòu),指令 控制信號 預取B 指令譯碼器 CU IU、FPU 微碼 控制ROM IU(U、V流水線) 操作序列,,,,,,,,,3. 指令譯碼、控制ROM和CU,2.1.2 Pentium的內(nèi)部結(jié)構(gòu),4. 超標量體系結(jié)構(gòu)IU 超標量處

6、理機:1T內(nèi)同時發(fā)射多條指令,資源重復,空間并行,提高指令執(zhí)行的平均速度。 超流水線處理器:1T內(nèi)分時發(fā)射多條指令,時間重迭,時間并行,提高指令執(zhí)行的平均執(zhí)行速度桶形移位器。 U流水線:地址生成、REG、ALU、數(shù)據(jù)Cache接口;整數(shù)或浮點指令/1T共享。 V流水線:地址生成、REG、ALU、數(shù)據(jù)Cache接口;簡單整數(shù),F(xiàn)XCH/1T 5. 流水線式FPU 組成:控制器、 REGS 、加法器、乘法器、除法器、80位寬通道 速度:8級流水線,每T完成12個浮點運算,快80486十倍以上,2.2 寄存器組,通用寄存器從16位 32位。 段寄存器仍為16位,增加2個:FS、GS; 每

7、個段寄存器都有一個描述符寄存器。 32位EIP和EFLAGS。 增加了CR、DR、TR、系統(tǒng)地址寄存器和 Pentium的專用模型寄存器。,,2.2.1 通用寄存器,2.2.2 段寄存器和描述符寄存器,2.2.3 指令指針,IP:16位操作方式:實地址模式、虛擬8086模式。 EIP:32位操作方式:保護模式。 (E)IP保存下一條將要執(zhí)行的指令相對于段基址的偏移量。,2.2.4 標志寄存器EFLAGS,32位中位1為1,位31位22,位15,位5,位3為0。 其它16位分為狀態(tài)標志,控制標志(DF)和系統(tǒng)標志。 21 20 19 18 17 16 14 1312 11 10 9 8 7 6

8、4 2 0,2.2.5 控制寄存器,2.2.5 控制寄存器,MOV CRX,r32; MOV r32,CRX 1. CR0 控制或指示用于整個系統(tǒng)條件的標志,低16位為MSW。 0 PE:保護模式允許 PE1 系統(tǒng)在保護模式下工作 PE0 系統(tǒng)在實地址模式工作,2.2.5 控制寄存器,1 MP:監(jiān)視協(xié)處理器 MP1并且TS1,WAIT指令發(fā)生異常7:協(xié)處理器不可用Fault。 2 EM:仿真協(xié)處理器(80386用80486以上FPU在片內(nèi))。 系統(tǒng)有FPU:EM0,MP1 系統(tǒng)無FPU:EM1,MP0 遇到ESC前綴的FDU指令,發(fā)生異常7。異常7程序:模擬ESC指令在無FPU時

9、執(zhí)行協(xié)處理器。 3 TS:任務(wù)轉(zhuǎn)換。任務(wù)切換完成,CPU自動把TS置1。 若MP1,在遇到FPU opcode或Wait指令可正常工作。 任務(wù)轉(zhuǎn)換時未切換FPU的運行狀態(tài),只是在新任務(wù)需要FPU時才進行切換。,2.2.5 控制寄存器,4 ET:協(xié)處理器類型(僅對80386) ET1,F(xiàn)PU為與80387兼容的32位FPU。 ET0,F(xiàn)PU為與80386兼容的32位FPU。 上電時檢測80387的 引腳,設(shè)置ET。 軟件設(shè)置ET。 31 PG:頁管理使能 PG1 分頁存儲管理 線性地址 頁變換 物理地址。 PG0 無分頁管理 線性地址 物理地址。,,,,,2.2.5 控

10、制寄存器,以下各位對80486/Pentium有效 5 NE:數(shù)據(jù)錯誤異??刂莆?NE1 數(shù)字錯誤引起異常16,實現(xiàn)與80386兼容的數(shù)字異。 NE0 0,忽略數(shù)字異常。 1,CPU停止工作,等待由 。 產(chǎn)生的中斷模擬8087/80387的 。 16 WP:寫保護 WP1 核心代碼不能對用戶級頁面進行改寫。 WP0 核心代碼能夠?qū)τ脩艏壷蛔x頁進行改寫。,,2.2.5 控制寄存器,18 AM:對齊標志控制位 AM1 允許對齊檢查 CPU對齊檢查,非對齊 EFLAGS的AC1 時,要產(chǎn)生異常17, CPL3的MEM操作 對齊檢查異常。 29 不通寫

11、位 NW(Not Writethrough) NW0:允許通寫,既寫Cache,又寫內(nèi)存。 NW1,不許通寫(此時CD1,Cache不使 能)。,,2.2.5 控制寄存器,30 CD:Cache不使能。 CD0,Cache使能。 CD1,Cache作廢 訪問Cache未命中,則不填充Cache。 訪問Cache命中,Cache仍可工作。 完全使Cache停止工作,要刷新Cache。 CD0,NW0,Cache才能正常工作,產(chǎn)生Cache的有效周期。 2. CR2:頁故障的線性地址。 CR0中PG1時CR2才有效 某頁不在內(nèi)存中,頁轉(zhuǎn)換時發(fā)生分頁錯誤,這是CPU將缺頁的

12、線性地址保存在CR2中。,,2.2.5 控制寄存器,3. CR3:頁目錄表基址及頁級外Cache使能和寫屬性。CR0中PG1時CR3才有效。 位4:頁外Cache不使能PCD位,控制使外部頁Cache是否工作的引腳PCD。 PCD1,對頁目錄不進行外部高速緩存。 PCD0,對頁目錄進行外部高速緩存。 PCD位驅(qū)動CPUPCD引腳控制外部Cache工作。 位3:頁通寫位PWT。 PWT1,外部Cache對頁目錄通寫,PWT0,回寫。 PWT位驅(qū)動CPUPWT引腳控制外部Cache工作 位31位12:當前任務(wù)的頁目錄表基址。,2.2.5 控制寄存器,4. CR4:Pentium擴充,位31位

13、7保留。 0 VME:虛擬8086模式擴充。 VME=1,允許虛擬8086模式擴充,即允許虛擬8086中斷,在VM8086下,VME=1,支持VIF。 1 PVI:保護模式虛擬中斷。 PVI=1,允許保護模式虛擬中斷。在保護模式下,VME=1,支持VIF。 2 TSD:禁止RDTSC指令,時間日期標記禁止。 TSD=0,讀時間標志計數(shù)器指令RDTSC可在任何特權(quán)級上執(zhí)行。 TSD =1,RDTSC僅在CPL=0的程序執(zhí)行,否則發(fā)生異常13,即RDTSC為特權(quán)指令。,2.2.5 控制寄存器,3 DE:允許調(diào)試擴充(Debug Extensions)。 DE=1,允許支持I/O斷點,I/

14、O斷點有效。 4 PSE:允許頁面大小擴充。 PSE=1,允許采用4MB、2MB頁。 5 PAE:允許物理地址擴充。 PAE=1,允許采用32位以上物理地址,否則 只用232物理地址。 6 MCE:允許機器檢查異常。 MCE=1,允許機器檢查異常功能有效。,2.2.6 系統(tǒng)地址寄存器,2.2.7 調(diào)試寄存器DR,CPL=0的代碼段MOV DRx,r32 MOV r32,DRx 1. 斷點寄存器:DR0DR3 每個寄存器存放一個斷點的線性地址。 斷點的發(fā)生條件由DR7分別設(shè)定。 2. 調(diào)試控制:DR7 (1)4個斷點發(fā)生的條件和訪問類型。 (2)I/O斷點。 (3)精確斷點。

15、 (4)GD位使能由DR6.BD標志的調(diào)試寄存器保護狀態(tài)。 GD位進入調(diào)試異常處理程序時由CPU清0,這允許 處理程序任意訪問調(diào)試寄存器。,2.2.7 調(diào)試寄存器DR,3. 調(diào)試狀態(tài):DR6 (1)B3B0:在DR、LEN、R/W中的條件為真,Bi置1,即使斷 點未被G或者L允許,說明斷點已經(jīng)發(fā)生,不一定能夠進入 調(diào)試異常程序。 (2)BD:下條指令將讀/寫調(diào)試寄存器,而它們又被Intel在線仿 真器使用時置1,并發(fā)生異常1(一般檢測故障)。 (3)BS:為1表示異常1是由EFLAGS中TF1時單步陷阱引起的。 單步方式是最高優(yōu)先級的調(diào)試異常。當BS1時,

16、任何其他 調(diào)試狀態(tài)位也能被置。 (4)BT:為1表示因轉(zhuǎn)換到一個TSS中T1的任務(wù)而發(fā)生的異 常1。DR7中沒有允許/不允許這種異常的位。僅受TSS中T位 使能。,2.2.7 調(diào)試寄存器DR,4. DR4和DR5 當CR4.DE0時,Pentium用DR4和DR作為 DR6和DR7的別名寄存器。 當CR4.DE1時,引用DR4和DR5將產(chǎn)生未定義的操作的異常。,2.2.8 測試寄存器,TR0:未定義。 TR1:奇偶校驗逆寄存器。 TR2:指令Cache結(jié)束位。 TR3、TR4、TR5:Cache數(shù)據(jù)、狀態(tài)、控制測試寄存器。 TR6、TR7:TLB命令,數(shù)據(jù)測試寄存器。

17、,2.2.9 Pentium模型專用寄存器,控制:可測試性、執(zhí)行跟蹤、性能檢測、機器檢查錯誤。 R/W:用MOV指令直接訪問其中TR會發(fā)生異常6,使用指令 RDMSR和WRMSR。,2.4 工作模式,Intel的32位微處理器有三種工作模式: 實地址模式 保護模式 虛擬8086模式。,2.4.1 實地址模式,1. 實模式的復位進入 RESET=15T 當 復位:350T400T,控制ROM和大部分隨機邏輯 當 RESET=78T 自測試:220T,然后復位 且 Pentium INIT 或 80486 AHOLD 或 80386,,,,,,,,,,,,,,,,

18、2.4.1 實地址模式,寄存器的狀態(tài) EDX 80486: 00000400分級ID Pentium:00000500分級ID CR0,0 1 1 0 0 0 1 0 0 0 0,2.4.1 實地址模式,2. Pentium復位和自測試啟動 (1)Pentium的復位方式,2.4.1 實地址模式,(2)REGS的狀態(tài) 見表2.4 (3)引腳的狀態(tài) 高電平: 低電平:HLPA、BREQ、BP3、BP2、PRDY、IBT、IU、IV、BT3BT0 高阻抗:D3D0、DP7DP0 未定義:A31A3、AP、 、PM0/BP0、PM1

19、/BP1、W/ 、M/ 、PCD、PWT、 、TDO、SCYC,PCHK,,2.4.1 實地址模式,(4)內(nèi)部自測試 時間:220 組成:硬件自測試和微代碼自測試 方法:對Cache、TLB和BTB進行兩項陣列測試:原碼和補碼。 常數(shù)ROM測試:使用微代碼增加不同常數(shù),檢查結(jié)果值與存儲值是否相等。 復位結(jié)束時,程序從FFFFFFF0H開始執(zhí)行, 段間調(diào)用/轉(zhuǎn)移指令時,轉(zhuǎn)到000FFFFFH以內(nèi)的地址。,2.4.2 保護模式,選擇符,,描述符,描述符的分類:,,段描述符 系統(tǒng)控制描述符,,數(shù)據(jù)段描述符 代碼段描述符,,堆棧段描述符 一般數(shù)據(jù)段描述符,,系統(tǒng)描述符

20、門描述符,,任務(wù)狀態(tài)段描述符 特殊系統(tǒng)段描述符,,任務(wù)門描述符 調(diào)用門描述符 中斷門描述符 陷阱門描述符,,,,,,,,,2.4.2 保護模式,1. 選擇符 2. 段描述符:數(shù)組、把邏輯地址變換成物理地址,定義MEM用法,控制轉(zhuǎn)移,切換任務(wù),2.4.2 保護模式,(1)段基址:段起始的32位線性地址 (2)段限長:20位限長與G位共同計算 (3)G:G0 限長單位為1B 限長1MB 最大地址000FFFFFH。 G1 限長單位為1P(4KB)限長4GB 最大地址 FFFFFFFFH 表中20位段限長值左移12位(即乘以212或1000H)加FFFH。 (4)D/B D 代碼

21、段:1 32位操作和尋址;0 16位操作和尋址。 B 數(shù)據(jù)段:1 32位數(shù)據(jù) ;0 16位數(shù)據(jù)。 堆棧段:1 32位堆棧操作,ESP ;0 16位堆棧操作,SP。 (5)訪問權(quán)限:,2.4.2 保護模式,P 存在位:P1,段在內(nèi)存中;P0,段不在內(nèi)存中,訪問該段引起異常。 DPL:描述符特權(quán)級,該段被訪問的特權(quán)級,從0到3特權(quán)級降低。 S 描述符類型: S1,代碼段,數(shù)據(jù)段,堆棧段。 S0,系統(tǒng)控制,TSS、LDT、 門描述符。 E 段可行性: E1,代碼段,可執(zhí)行;E0,數(shù)據(jù)段,不可執(zhí)行。,2.4.2 保護模式,ED/C和W/R 數(shù)據(jù)段:ED W ED:擴展方向

22、 ED0 向上 偏移量段限長。 W:可寫性 W0 不可寫;W1可寫 代碼段:C R C(Confirming):C1 要證實代碼段,訪問和被訪問特 權(quán)級不總是相同; C0 非證實代碼段,訪問和被訪問特 權(quán)級總是相同 A(Accessed):訪問過 A1 段被訪問過;A0 段未被訪問過,2.4.2 保護模式,3. 系統(tǒng)描述符(與門描述符一起包含在系統(tǒng)控制和描述符中) 段基址、段限長、G位和段描述符相同 訪問權(quán)限字節(jié)不都相同,2.4.2 保護模式,2.4.2 保護模式,4. 中斷描述符(又稱門描述符),2.4.2 保護模式,P 門描述符符的

23、有效性:P1,有效;P0,無效 DPL:描述符特權(quán)級 TYPE:4,6,7 286調(diào)用門、中斷門、異常門 C,E,F(xiàn) 32位調(diào)用門、中斷門、異常門 5 任務(wù)門 字計數(shù):調(diào)子時,須從調(diào)用程序級堆??截惖阶映碳壎褩Hサ膮?shù)個數(shù)(16/32棧分別指字/雙字個數(shù)),2.4.2 保護模式,選擇符和偏移量 對中斷、異常、調(diào)用門表示服務(wù)程序或子程的首址。 對于任務(wù)門,偏移量無效,選擇符指向任務(wù)的TSS描述符。 TSSD時系統(tǒng)描述符:段線性基址、限長和屬性 段線性基址和限長確定TSS的位置和大小 中斷,異常,調(diào)用門中的選擇符選中某一個代碼段描述符代碼段D中的32位線性基 址門D中的32位偏移

24、量形成例程或子程的首地址。,2.4.2 保護模式,5. 描述符表,2.4.2 保護模式,2.4.2 保護模式,6. 保護:特權(quán)級保護、存儲器保護、OS保護 (1)特權(quán)級保護:數(shù)據(jù)存儲、控制轉(zhuǎn)移、指令集的限制,軟件之 間實現(xiàn)隔離。 (最高) PL0 PL1 PL2 PL3 (最低) OS內(nèi)核 系統(tǒng)服務(wù) OS擴展 App 特權(quán)級低的程序 允許向外提取數(shù)據(jù) 調(diào)用特權(quán)級高的過程,,,2.4.2 保護模式,特權(quán)級 32位微處理器采用4級特權(quán)級,操作系統(tǒng)為0級,系統(tǒng)服務(wù)為1級,操作系統(tǒng)擴展為2級,用戶程序為3級。 CPL

25、:當前代碼段具有的訪問特權(quán)級,CS中最低2位。通過描述符轉(zhuǎn)移控制到新代碼段時,CPL改變。CPL0的任務(wù)能夠訪問GDT及任務(wù)LDT中描述符對應(yīng)的數(shù)據(jù)段。 DPL:段被訪問特權(quán)級 非證實代碼段 CPLDPL。 DPL0或LDT中描述符,CPL0的程序可訪問。 DPL3,所有程序都可以訪問。,2.4.2 保護模式,RPL:選擇符的特權(quán)級,指向同一描述符的選擇 符可有不 同RPL對描述符指向段的訪問須RPLIOPL時,執(zhí)行I/O敏感執(zhí)令產(chǎn)生保 護異常13。 IN、OUT、INS、OUTS、STI、CLI和 LOCK前綴 EPL:有效特權(quán)級 EPLMAX(CPL

26、、RPL),特權(quán)級檢查的原則 數(shù)據(jù)段:只允許同級和高級的代碼段訪問。 代碼段:只允許向同級和更高級別的代碼段轉(zhuǎn)移控制。 堆棧段:其特權(quán)級和執(zhí)行代碼段相同,控制轉(zhuǎn)移時隨之變化 。 特權(quán)級檢查的規(guī)則 a. 讀/寫數(shù)據(jù)類段規(guī)則 現(xiàn)行代碼段堆棧操作: CPLDPL 現(xiàn)行代碼段R/W數(shù)據(jù)段:CPL<=DPL,否則發(fā)生異常13。,2.4.2 保護模式,2.4.2 保護模式,b. 數(shù)據(jù)類段寄存器裝入規(guī)則 裝入堆棧段選擇符:CPLRPLDPL,否則發(fā)生異常12。 裝入數(shù)據(jù)類段選擇符:EPL=中斷/異常處理程序DPL 異常:異常門的DPL=CPL 通過門的段間調(diào)用:EPL=代碼段的DPL 任務(wù)

27、轉(zhuǎn)換時,轉(zhuǎn)入任務(wù)的CPL<=任務(wù)門的DPL JMP:只能轉(zhuǎn)移到與CPL具有相同級的段 CALL:使用調(diào)用門把控制轉(zhuǎn)移到更高級代碼段 RET:把控制轉(zhuǎn)移到更低級代碼段,2.4.2 保護模式,d. IOPL規(guī)則 IO敏感指令:IN、OUT、INS、OUTS、STI、CLI和LOCK前綴 CPL<=IOPL TSS的I/O位圖允許,否則將發(fā)生異常13。 e. 特權(quán)級指令使用規(guī)則 僅CPL0的代碼段才能執(zhí)行如下特權(quán)指令,否則發(fā)生異常13。 CLTS、HLT、LGDT、LIDT、LLDT、LMSW、LTR; 涉及CR、DR、TR的MOV指令,RDMSR、WRMSR f. 頁訪問規(guī)則 違反頁表項、頁

28、目錄項規(guī)定權(quán)限或訪問不存在頁將發(fā)生異常14。,2.4.2 保護模式,(2)存儲器保護 MOV、POP、LDS、LES、LFS、LGS、LSS指令將選擇符裝入DS、ES、FS、GS、SS; JMP、CALL、RET、IRET指令進行段間轉(zhuǎn)移、更新CS時 保護檢查:段類型、R/W權(quán)限、段限長、存在性。 段類型檢查 代碼段選擇符 CS 可寫數(shù)據(jù)段選擇符 SS 可讀代碼段/數(shù)據(jù)段選擇符 DS、ES、GS、FS 讀寫權(quán)限檢查 代碼段/只讀數(shù)據(jù)段不能寫 不可讀代碼段不能讀 違反讀寫權(quán)限將發(fā)生異常13,,,,2.4.2 保護模式,段限長檢查 對數(shù)據(jù)段和代碼段,ED0,向上擴

29、展,偏移量段限長; 堆棧段越限發(fā)生異常12,其它數(shù)據(jù)段越限發(fā)生異常13。 存在性檢查 將P0的段選擇符 SS,發(fā)生異常12; 將P0的段選擇符 其它段REG/中斷門/異常門, 發(fā)生異常11; 訪問的段無效(段選擇符為全0)時,發(fā)生異常13; 訪問的頁不在內(nèi)存時,發(fā)生異常14。,,,2.4.2 保護模式,(3)對OS的保護 子程在要證實代碼段,用戶程序調(diào)用它時,CPL不變化。 有效保護OS的數(shù)據(jù)結(jié)構(gòu)。 子程在非證實代碼段,用戶通過調(diào)用門進入子程時,CPL將提高到非證實代碼段的0級。用戶程序可以破壞未加保護的OS的數(shù)據(jù)結(jié)構(gòu),子程可以防止用戶程序?qū)S的破壞。 PROC FAR

30、MOV EBP,ESP EBP0處是EIP的值 MOV AX,WORD PTREBP4 ;0級堆棧中斷點處CS值取調(diào)用者的CPL ARPL SELECTOR-PARM,AX ;CPL與用戶傳給OS的指針選擇符RPL比較,使指針選擇符的RPL為兩者特權(quán)級低者 用戶傳給OS的指針中選擇符RPL與調(diào)用者段選擇符中的CPL比較取特權(quán)級低者。,2.4.2 保護模式,(4)保護模式下的轉(zhuǎn)子與返回 無任務(wù)轉(zhuǎn)換時段間調(diào)用的轉(zhuǎn)子與返回 CALL 段值:偏移量 子程的段選擇符值 段描述符中C 代碼段證實性 子程在證實代碼段,調(diào)子不改變CPL,段選擇符 子程段描述符

31、 子程在非證實代碼段,若CPLDPL,段選擇符 子程段描述符 若CPLDPL,段選擇符 調(diào)用門描述符 此時要進行系列保護屬性檢查:調(diào)用非證實代碼段中更高級子程 序。,,,,,,,2.4.2 保護模式,現(xiàn)行程序CS,16位可見選擇符,不可見描述符 CPL,,,CALL選擇符,目標段選擇符 RPL,,選擇符裝入CS并指向調(diào)用門(在GDT或LDT中),調(diào)用門描述符,可執(zhí)行段描述符,Selector Offset Offset DPL Count,,,,調(diào)用門是實現(xiàn)任務(wù)從CPL級到更高級的 間接控制轉(zhuǎn)換,它的目標選擇符又裝入 CS,指向調(diào)用的代碼,Base Limit

32、Base Limit DPL Base,段描述符,它又被緩存。它的基址和 調(diào)用門中偏移量定位被調(diào)用的子程 入口地址,,,,,2.4.2 保護模式,調(diào)用門檢查 調(diào)用程序 CPL<=調(diào)用門DPL。 調(diào)用程序選擇符中RPL<=調(diào)用門DPL,否則發(fā)生異常13。 調(diào)用門中P1,否則發(fā)生異常11。 調(diào)用門不越限,否則發(fā)生異常13。 子程代碼段檢查,不合法時發(fā)生異常13。 選擇符非全0 描述符不越限 可執(zhí)行代碼段 選擇符中RPL<=DPL 子程的首址中新EIP不越限,2.4.2 保護模式,子程序堆棧段檢查 下列條件都要符合,否則發(fā)生異常10。 選擇符非全0;選擇符中RPL子程代碼段D

33、PL; 堆棧段DPL子程代碼段DPL;堆棧段為可寫數(shù)據(jù)段。 下列條件都要符合,否則會發(fā)生異常12。 描述不越限;堆棧段須存在; 堆棧段地址空間=參數(shù)個數(shù)416B(32位模式) =參數(shù)個數(shù)48B(16位模式) CALL指令的堆棧操作 從TSS中取具有子程特權(quán)級的堆指針 SS:ESP,,2.4.2 保護模式,壓調(diào)用程序的: 全0 舊棧SS選擇符 舊棧ESP值 壓調(diào)用門中的: 參數(shù)1 “字計數(shù)” 。。。 參數(shù)M 壓調(diào)用程序的: 全0 斷點CS選擇符 斷點EIP 從調(diào)用門中取子程所在段選擇符 CS 子程

34、代碼段中DPL CS中CPL 子程代碼段偏移量 EIP RET m中m使參數(shù)個數(shù)的4倍,,,,,,,2.4.2 保護模式,2.4.3 虛擬8086模式,1. 虛擬8086模式與實模式的區(qū)別 虛擬8086模式是保護模式,可運行多個OS 實模式是整個CPU的工作模式,CPU相當快速8086 虛擬8086模式下各段特權(quán)級為3,執(zhí)行特權(quán)指令發(fā)生異常13; LIDT,LGDT,LMSW,CLTS,HLT,INVD,WBINVD,INVLPG及傳給CR、TR、 DR的MOV,RDMSR,WRMSR 都不能使用下列指令,否則發(fā)生異常6(非法操作碼) APRL,LAR,LSL,VERR,

35、VERW,STR,LTR,SLDT,LLST 在虛擬8086模式下,當IOPL<3時,執(zhí)行I/O敏感指令發(fā)生異常13 CLI,STI,PUSHF,POPF,INT n,IRET,帶LOCK的指令 在虛擬8086模式下,IOPL3,當I/O位圖不允許時,執(zhí)行I/O指令也發(fā)生異常13 IN,OUT,INS,OUTS 虛擬8086模式下,CR4.TSD0不允許執(zhí)行RDTSC,否則發(fā)生異常13,2.4.3 虛擬8086模式,2. 虛擬8086模式與保護模式的區(qū)別 (1)VM8086在形成20位線性地址與實模式一樣,不需要像保護模式那樣使用段描述符的基址和限長及屬性 (2)各種描述表中不會有VM80

36、86的段描述符 3. 虛擬8086模式的進入與退出 (1)32位CPU進入虛擬8086模式 0級代碼段:EFLAGS.VM=1的堆棧映像,IRET把棧映像壓入EFLAGS和CS:IP。 任務(wù)轉(zhuǎn)換:32位新任務(wù):EFLAGS.VM=1(在高位字b17中) TSS保存的值裝入段寄存器:段基址,限長,屬性 (2)32位CPU退出虛擬8086模式 虛擬8086模式下的中斷/異常使CPU退出該模式:中斷/異常處理程序為0級保護模式代碼段,EFLAGS.VM = 0,,2.4.3 虛擬8086模式,任務(wù)轉(zhuǎn)換 32位新任務(wù):TSS中相應(yīng)項裝入EFLAGS VM0,表明新任務(wù)已退出虛擬

37、8086模式,2.4.4 工作模式的轉(zhuǎn)換,1. 實模式 保護模式 建立數(shù)據(jù)結(jié)構(gòu)和初始化GDTR,IDTR和TR CR0.PE1: MOV CR0,REG 進入保護模式后:用CPL0的程序重裝段寄存器,,2.4.4 工作模式的轉(zhuǎn)換,2. 保護模式 實模式 CR0.PE0:MOV CR0,REG 保護模式下的分頁轉(zhuǎn)移過程 使線性地址、GDT,IDT映射到實模式;CR0.PG0;CR30, 清洗TLB 設(shè)CS段限長為64KB,使GDT,IDT在1MB內(nèi) 選擇符裝入SS、DS、ES、FS、GS時,段基址任意,描述符 中限長64KB G0,E0,W1,P1 CLI屏蔽INTR,外部屏蔽NM

38、I CR0.PE0 遠程JMP跳轉(zhuǎn)到實模式 LIDT指令裝實模式下中斷向量表的基址和限長 STI開中斷 實模式下的代碼裝段寄存器,,2.5 中斷與異常,在程序正常執(zhí)行過程中,為了處理外部事件和報告錯誤或異常狀態(tài)而中止現(xiàn)行程序的運行,將CPU的控制權(quán)轉(zhuǎn)向處理程序,待處理完以后再繼續(xù)執(zhí)行被中斷程序的過程稱為中斷。 32位微處理器的中斷分為兩大類:中斷(Interrupt)和 異常(Exception).,2.5.1 中斷與異常的類型,中斷:由外部設(shè)備引起的異步事件(外中斷、硬 中斷) INTR:受TF影響(STI/CLI),由PIC接入 NMI:不受TF影響,處理器設(shè)有防止NMI的機制,

39、 系統(tǒng)可屏蔽,NMI服務(wù)程序由2號中斷描述 符確定,,,,2.5.1 中斷與異常的類型,異常:指令執(zhí)行期間,處理機響應(yīng)檢測的某種狀態(tài)的同步事件 微處理器檢測的異常(內(nèi)中斷、軟中斷) Trap:出現(xiàn)異常的指令后邊界檢測,出現(xiàn)異常立即報 告,返回執(zhí)行下條指令。像INT n、INTO,單步. Fault:出現(xiàn)異常的指令前邊界檢測,異常處理后的返 回地址是引起異常指令,可以重啟動。 Abort:出現(xiàn)異常的指令無須精確定位,無法重啟 動,例如:將控制轉(zhuǎn)移到0號、10號、12號或13號異常時又發(fā)生一個異常, 為雙異常;硬件錯。

40、 可編程的異常:INT 3、INTO、INT n、BOUND 指令引起異常、稱為軟中斷,處理器當作異常處理,,,,,,,,0 Divide Error 除法錯異常 DIV or IDIV指令的除法為0,F(xiàn)ault 商太大使目標寄存器容納不下。 入 棧是指令的段值和指針,0號中斷是除法指令的一部分。 1 Debug Exceptions 調(diào)試異常 排錯異常 Fault:DR中的斷點與代碼段中指令地址一致時發(fā)生的調(diào)試異常。 Trap:單步執(zhí)行 數(shù)據(jù)斷點,I/O斷點,任務(wù)轉(zhuǎn)換斷點引起調(diào)試Trap。,2.5.2 32位CPU的中斷與異常,2 NMI 非屏蔽中斷,響應(yīng)時直接轉(zhuǎn)入INT 2

41、處理程序,不受IF影響。 3 INT3 Breakpoint Instruction Trap 單字節(jié)斷點指令 斷點指令的操作碼是單字節(jié)。 調(diào)試程序裝斷點:一條指令的第一個操作碼字節(jié)置換成斷點指令的操作碼(CCH)。 程序執(zhí)行到斷點處,INT3的執(zhí)行調(diào)用異常處理程序,返回地址應(yīng)是指向INT3指令后的指令的第一個字節(jié),但處理程序應(yīng)該在返回時,把原被CCH置換出去的斷點 處指令的第一個操作碼字節(jié)再置換回來,以便斷點處的指令能夠執(zhí)行。 INT3的作用: 16位處理器中用于設(shè)置指令斷點; 32位CPU用調(diào)試寄存器設(shè)置指令斷點。 調(diào)用其它異常處理程序。

42、 設(shè)置比調(diào)試寄存器允許的更多的斷點。 置于開發(fā)程序的源代碼中。,2.5.2 32位CPU的中斷與異常,4 INTO Overflow Trap 溢出中斷 溢出陷阱 OF1 INT 4 溢出中斷處理程序 INTO CPU要了解符號數(shù)的運算是否發(fā)生了溢出 5 Bounds Check Fault 邊界檢查故障 執(zhí)行Bound指令的處理器發(fā)現(xiàn)操作數(shù)超越指令的界限 Bound r16,m16取指,訪存;Fault 頁故障。 有特殊格式的錯誤碼 (1)CR0.PG=1,在線性地址轉(zhuǎn)換成物理地址時CPU檢測下列狀態(tài) 地址轉(zhuǎn)換所需的頁目錄項或頁表項中P

43、0,指示頁表或包含 操作數(shù)的頁不在物理存儲器 程序沒有足夠的特權(quán)訪問指向的頁 用不適當?shù)脑L問類型訪問一內(nèi)存頁 (2)頁級保護違反引起異常,這時 頁目錄項中訪問位A1 頁表項中訪問位A1時是沒有頁級保護違反,2.5.2 32位CPU的中斷與異常, 頁故障錯誤碼在堆棧上 P0,頁Fault由頁不在內(nèi)存引起,P1,頁故障是由頁級保護違反引起 W/R0,F(xiàn)ault由R操作,W/R1,F(xiàn)ault由W操作 U/S0,CPU在SuperVisor(0,1,2級),U/S1,CPU在用戶級 (3)用32位線性地址裝入CR2引起異常 異常處理程序能用此地址定位相應(yīng)的頁目錄項和

44、頁表項,在頁故障處理程 序執(zhí)行時發(fā)生了另一個頁故障,處理程序?qū)袰R2的內(nèi)容推向堆棧。 (4)頁故障是可以重新啟動的異常,一旦引起頁故障的原因在處理程序中被排 除,即可由IRET返回,重新執(zhí)行產(chǎn)生過故障的指令。,2.5.2 32位CPU的中斷與異常,16 FloatingPoint Error CR0.NE=1,非屏蔽數(shù)的浮點異常將產(chǎn)生異常16。在執(zhí)行下一條非控制的的浮點 指令或WAIT指令。 CR0.NE=0 1 CPU在執(zhí)行下一條非控制浮點指令或WAIT指令前凍結(jié)系統(tǒng)外 部中斷(由響應(yīng) 引起的)帶出不管NE值,非屏蔽的數(shù)值

45、 異常而引起 0這時外部中斷能夠調(diào)用異常處理程序。 0,CPU將忽略數(shù)字異常。 數(shù)字異常處理的基本步驟 a.存FPU環(huán)境:控制、狀態(tài)和標記字,操作數(shù)和指令指針。 b.清狀態(tài)字中的異常位。 c.如果是由于INTR、NMI、SMI異常屏蔽了中斷時使能它。 d.由存在環(huán)境中的狀態(tài)和控制字檢查標識異常。 e.為糾正(rectify)異常進行一些依賴系統(tǒng)的活動。 f.返回被中斷的程序繼續(xù)正常執(zhí)行。,,,,2.5.2 32位CPU的中斷與異常,17 Alignment Check Fault (1)訪問非對齊的操作數(shù)產(chǎn)生對齊檢查故障 地址能被2整除的

46、數(shù)據(jù)類型:字、選擇符、32位段指針。 地址能被4整除的數(shù)據(jù)類型:雙字、短實數(shù)、48位段指針、32位Flat指針、 48位偽描述符(描述符表基寄存器內(nèi)容的MEM映像)。 地址能被8整除的數(shù)據(jù)類型:長實數(shù)、TEMPREAL。 地址能被4或2(取決于操作數(shù)的尺度)的數(shù)據(jù)類型。 FSTENV/FLDENV save area FSAVE/FRSTOR save area (2)對齊檢查的條件:CR0.AM=1;EFLAGS.AC=1;CPL3 存儲器引用(references)約定在CPL0,為段描述符裝入不會產(chǎn)生對齊檢查Fault,即使是在用戶模式下引起的存儲器引用。,

47、2.5.2 32位CPU的中斷與異常,18 Machine Check Fault Pentium處理器的模型專用寄存器產(chǎn)生的異常。 CPUID:當EAX1時,執(zhí)行后,EDX(7) 機器檢查異常處理。 當CR4.MCE=1,系統(tǒng)可執(zhí)行機器檢查異常處理。 Pentium中 輸入,當 <0,通知CPU發(fā)生了讀數(shù)據(jù)檢驗錯; 或 輸入,當 <0,通知CPU發(fā)生了總線周期錯。 當前總線周期地址 MSR00H:MCA 機器檢查地址R 當前總線周期類型 MSR01H:MCT 機器檢查類型R 63 4 3 2 1 0 數(shù)據(jù)

48、鎖存到MCT:CHK1,讀MCT:CHK0 用RDMSR讀MCA和MCT EDX:EAX MSRECX MOV ECX,Imm; Imm代表寄存器編號,如00H,01H RDMSR,,,,Lock M/IO D/C W/R CHK,,2.5.2 32位CPU的中斷與異常,,,,,2.5.3中斷和異常的處理過程,,1、中斷檢測和響應(yīng) (1)外部中斷請求在指令后邊界檢測。 (2)Trap異常也在指令后邊界檢測。 (3)Fault異常在指令前邊界檢測。 2、中斷處理和服務(wù) 實地址模式下的中斷如圖:,2.5.3 中斷和異常的處理過程,2.5.4 實模式下的中斷和異常,32位微處理器運行在

49、實地址下,可以響應(yīng)和處理異常0、1、3、4、5、6、7、8、9、12、13、16。,2.中斷向量表,位于內(nèi)存地址0000 : 0000開始的1KB范圍內(nèi)。,按中斷類型號順序存放中斷向量。,3.中斷向量指針,指向存放中斷向量地址第一字節(jié)的指針。,中斷向量指針=中斷類型號4。,軟件中斷中自由中斷的中斷向量需用戶自己裝入。,1.中斷向量,對應(yīng)中斷類型號的中斷服務(wù)程序入口地址。,每個中斷向量占4字節(jié)。,實模式下中斷向量表,2.5.5 保護模式下的中斷和異常,1、中斷的處理 (1)通過中斷門和異常門的中斷處理,中斷/異常:向量號8,。。。,中斷/異常 門描述符,。。。,。。。,代碼段描述符,CS段選擇符

50、,描述符高速緩存器,。。。,代碼段,,,,,,,,,,,,,,,,,,,門選擇符,段選擇符,段偏移量,段選擇符,段基址、段限長、 訪問權(quán)限,段基址,程序入口,段限長,,IDT,,GDT/ LDT,15,0,63,0,,,中斷/異常 門描述符,IDT,GDT/ LDT,代碼段描述符,,,CS段選擇符,,,描述符高速緩存器,,,,,,代碼段,代碼段,(2)中斷/異常后的堆棧結(jié)構(gòu),2.5.5 保護模式下的中斷和異常,(3)通過任務(wù)門的中斷處理,2.5.5 保護模式下的中斷和異常,中斷:向量號8,。。。,任務(wù) 門描述符,。。。,。。。,描述符,CS段選擇符,描述符高速緩存器,。。。,中斷任務(wù)的 ,,,

51、,,,,,,,,,,,,,,,門選擇符,TSS選擇符,TSS選擇符,TSS段基址、段限長,TSS段基址,TSS段限長,,IDT,,GDT,15,0,63,0,,,IDT,任務(wù) 門描述符,,,,GDT,描述符,,,CS段選擇符,,,描述符高速緩存器,,,中斷任務(wù)的 ,,,中斷任務(wù)的 ,2、特權(quán)級保護 通過中斷門或異常門的轉(zhuǎn)移控制,目標代碼段DPL=現(xiàn)行代碼段CPL。 通過任務(wù)門的中斷不對目標代碼段的特權(quán)級進行檢查。 對INT N和INTO指令產(chǎn)生的中斷:門的DPL=現(xiàn)行代碼段CPL。 對于外部中斷和異常,不進行門的特權(quán)級的檢查。,2.5.5 保護模式下的中斷和異常,優(yōu)點:中斷任務(wù)和被中斷任務(wù)完全

52、隔離。 缺點:中斷響應(yīng)過程耗時長。,2.5.6 虛擬8086模式下的中斷和異常,(1)要求中斷和異常處理程序必須具有0級特權(quán)級。 (2)保存現(xiàn)場時壓入堆棧的內(nèi)容增多,按32位操作來保存現(xiàn)場。 (3)將EFLAGS寄存器內(nèi)容壓棧后將17位清0。 (4)執(zhí)行IRET時,檢測CPL的特權(quán)級。,2.6 存儲管理,三種工作模式下如何完成存儲管理?,2.6.1 實模式存儲管理,1. 物理地址的形成,2.6.1 實模式存儲管理,2. 段式存儲管理 CR0.PG=0:頁部件不工作,線性地址即物理地址。 段值16 相應(yīng)描述符的段基址(Base190) 段限長:64KB,P1,G0,ED0 代碼段:C

53、PL0,R1,C0 其他段:DPL0,W1,數(shù)據(jù)段:ED0, FFFF 0000H偏移量 限長 段基址 0000 堆棧段 ED1 段基址 FFFF 0000 限長+1 偏移量 FFFFH,,,,,,。。,。。,2.6.2 保護模式存儲管理,CR0.PE=1,CPU處于保護模式。 存儲器的保護機制。 分段機制不同,引入虛存概念。 1. 段式存儲管理 (1)地址空間變換 虛擬(邏輯)存儲空間:21423224664TB 實模式:21624216220216,2.6.2 保護模式存儲管理,(2)虛擬地址到線性地址的變換,GDTR(TI=0)

54、/LDTR(TI=1),,索引,TI,RPL,偏移量,,,,虛擬地址,,,,,,段描述符,,,,,,,,段基址,段限長,屬 址,段Cache (8B),,,,索引8,,,,,,,線形地址,GDT/LDT基址,,,,,,,,,,,索引,TI,GDTR(TI=0)/LDTR(TI=1),GDT/ LDT,段描述符,偏移量,2.6.2 保護模式存儲管理,2. 頁式存儲管理 CR0.PG1,頁部件自動將線性地址轉(zhuǎn)換成物理地址 段長可變:04GB 頁長固定:CR4.PSE=1,頁4MB; CR4.PSE0,頁4KB 物理地址:CR4.PAE=1,超過32位 (1)頁變換原理,2.6.2 保護模式存儲管

55、理,,,,,,,,,,,,,,,,,,物理地址,Y 不分頁,頁目錄表基址,,CR3,段管理部件,選擇符,偏移量,,,,,PG=0?,,,,,,,頁目錄號(10位),頁號(10位),偏移量(12位),,0,,,虛擬地址,線性地址,,,,,,,,,,,,,,頁表項,4KB,,,31,0,31,0,7,0,1023,1023,,,線形頁號,,,分頁 N,0,0,,,31,21,22,12,11,0,段管理部件,物理地址,Y 不分頁,分頁 N,頁目錄表基址,,頁目錄號(10位),,頁號(10位),偏移量(12位),,2.6.2 保護模式存儲管理, CR3(頁目錄基址)線性地址高10位(頁目錄號)4

56、 頁目錄項低位地址;得到頁表基址 頁表基址線性地址中10位(頁號)4 頁表項低位地址;得到頁基址 頁基址線性地址低12位(偏移量) 頁內(nèi)單元的偏移地址 頁變換:線性地址高20位的線性頁號變換為物理頁號 頁內(nèi)的偏移量不變換。,,,,,,2.6.2 保護模式存儲管理, P 存在: P1,頁目錄項/頁表項在內(nèi)存中; P0則表示其不在內(nèi)存中 。 R/W 讀/寫: R/W1,頁目錄項/頁表項可讀、寫、執(zhí)行; R/W0,頁目錄項/頁表項可讀、執(zhí)行。 U/S 用戶/監(jiān)控: U/S1,頁的用戶級段的PL3。

57、 U/S0,頁的監(jiān)控級段的PL0,PL1, PL2 。,(2)頁目錄項和頁表項,2.6.2 保護模式存儲管理, PWT 頁通寫(外部Cache):PWT1,當前頁通寫; PWT0,當前頁回寫。 PCD為頁Cache禁止位。PCDl表示禁止片上Cache;PCD0表示允許片上Cache工作。 A 訪問性:A1,頁表項/頁中內(nèi)容被訪問。 A0,頁表項/頁中內(nèi)容未被訪問。 D 頁修改位:D1,頁被修改過。 (二級頁表) D0,頁未被修改過。 AVAIL 保留附加信息 (對應(yīng)頁表或頁)。,2.6.2 保護模式存儲管理,(3)轉(zhuǎn)換后

58、援緩沖器TLB TLB是頁部件中的相聯(lián)存儲器。 CPU近期訪問過的32個頁的有關(guān)信息: 線性頁號、物理頁號、D、A、U/S、R/W、P。 線性頁號在TLB中,找出物理頁號,快速完成轉(zhuǎn)換,有效 線性頁號不在TLB中,查頁目錄表、頁表、頁方式訪問內(nèi)存,注意P、A、R/W屬性將其線性頁號、物理頁號、屬性 調(diào)入TLB。 當TLB滿時,按LRU算法調(diào)出最近最少使用的頁信息及調(diào)入剛訪問的頁。 程序局部性和數(shù)據(jù)的簇聚性可使CPU訪問TLB的命中率在 98以上。,2.6.2 保護模式存儲管理, 線性地址高17位當作TAG,在同一組號的4項中按內(nèi)容相聯(lián)查找; 若命中,找出其20位物理頁號拼接線性地

59、址低12位形成物理地 址,表TLB中有符合的項,但權(quán)限及頁目錄項/頁表項中P0, 產(chǎn)生異常14。 產(chǎn)生異常的線性地址 CR2 錯誤代碼 異常14處理程序的堆棧中 關(guān)鍵程序和數(shù)據(jù)常駐內(nèi)存,使頁請求虛擬存儲系統(tǒng)能正常工作 頁目錄表。如: IDT、GDT、TSS及0級堆棧及其頁表。 頁Fault處理程序代碼和數(shù)據(jù)及其頁表。,,,2.6.2 保護模式存儲管理,,2.6.2 保護模式存儲管理,段寄存器,選擇符,RPL,分段部件,分頁部件,物理存儲器,,,,有效地址,邏輯地址,,線性地址,,,,,分頁,不分頁,物理地址,選擇符,,,14,,分段部件,,分頁部件,物理地址,,,物理存儲器,

60、物理存儲器,2.6.3 虛擬8086模式存儲管理,1. 段式管理 與實模式下存儲管理相同:段基址=段R值16,Limit=FFFFH,DPL=3,P=1,代碼段C=0,E=1,R 數(shù)據(jù)段:ED=1,R=1,W 2. 頁式管理 (1)多個VM8086任務(wù)的1MB線性地址空間映射到物理空間的不同區(qū)域 (2)VM8086地址偏移量超過1MB時,可仿真實現(xiàn)8086地址回繞 (3)頁請求虛擬存儲系統(tǒng)和調(diào)頁Fault(異常14)在虛擬空間的內(nèi)存和外存 之間實現(xiàn)頁的調(diào)度 (4)多個VM8086任務(wù)共享8086 OS或ROM代碼 (5)由存儲器映射I/O編址的設(shè)備,其端口地址可對應(yīng)不同線性地址,2.7

61、 多任務(wù)與多處理,,2.7.1 任務(wù)狀態(tài)段TSS 2.7.2 TSS D、Task G、TR 2.7.3 任務(wù)轉(zhuǎn)換 2.7.4 32位CPU的多處理,2.7.1 任務(wù)狀態(tài)段TSS,需要重存一個任務(wù)的處理器狀態(tài)信息被存于一種叫做TSS的段類型 1. 動態(tài)域:每個任務(wù)轉(zhuǎn)換時處理器更新 通用寄存器(EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI) 段寄存器(ES、CS、SS、DS、FS、GS) 標志寄存器(EFLAGS) 指令指針(EIP) 老任務(wù)TSS選擇符(僅當返回執(zhí)行時更新) 在TSS0102H:Link與NT1配合返回調(diào)用/被中斷程序,2.7.1 任務(wù)狀態(tài)段TSS,2. 靜

62、態(tài)域:處理器可以讀,但不改變;這些域在任務(wù)建立時設(shè)置 任務(wù)的LDT的選擇符 CR3寄存器(DDBR:頁目錄基址寄存器) 特權(quán)級0、1、2堆棧的邏輯地址 SS0:ESP0 SS1:ESP1 SS2:ESP2 調(diào)試陷阱位T 當T1(偏移量64H的0位),在任務(wù)轉(zhuǎn)換發(fā)生時,在新任務(wù)第一條指令執(zhí)行前,處理器將發(fā)生一個調(diào)試異常,使軟件在任務(wù)之間根據(jù)需要有效地共享調(diào)試寄存器,2.7.1 任務(wù)狀態(tài)段TSS,I/O允許位圖和中斷重定向位圖基址 基址指向I/O位圖開始處及中斷重定向的結(jié)束處。 CPLIOPL I/O位圖對應(yīng)位為0的端口,否則產(chǎn)生異常13。 位圖偏移量:位圖首地址,TSSD的Limi

63、t限制長度,最后全1字節(jié),在限長內(nèi)。 關(guān)于分頁 避免頁邊界放在TSS內(nèi),如果頁邊界放在TSS內(nèi),那么邊界的每一個邊都要同時在TSS內(nèi)。 當分頁使用時,老任務(wù)的TSS、新任務(wù)的TSS和描述符表項都應(yīng)該被標記為存在和可讀/寫,處理器開始讀TSS后再收到一個頁故障或一般保護異常將是一個不可恢復的錯誤。,2.7.2 TSS D、Task G、TR,1. TSSD 忙的任務(wù)是現(xiàn)行運行或等待運行的任務(wù) 駐留在GDT中,,2.7.2 TSS D、Task G、TR,2. Task G,2.7.2 TSS D、Task G、TR,(1)DPL控制對任務(wù)轉(zhuǎn)換的門描述符的訪問 當一個過程的CPL和選擇符R

64、PL數(shù)值小于等于TSS D的DPL時,這個過程不需要選擇門描述符來實現(xiàn)任務(wù)轉(zhuǎn)換。這防止低優(yōu)先級的過程引起一個任務(wù)轉(zhuǎn)換。 當任務(wù)門被用時,目標TSS D的DPL不用。CPL,RPL只和門DPL比較。,2.7.2 TSS D、Task G、TR,(2)Task G和TSS D滿足多項要求,一個任務(wù)僅有一個忙位,忙位存在TSS D中,每個任務(wù)都只有一個TSS D。 任務(wù)門能夠在LDT中:門的DPL與TSS D中 DPL不同,沒有足夠的特權(quán)使用GDT中TSS D(DPL0)的過程能夠訪問LDT中的任務(wù)門,用任務(wù)門,OS能夠限制任務(wù)轉(zhuǎn)換到特殊的任務(wù)。 任務(wù)門在IDT中:當中斷或異常的向量指向IDT中

65、的任務(wù)門時,中斷或異常能夠引起任務(wù)轉(zhuǎn)換。 多個任務(wù)門可以指向同一個任務(wù)。 任務(wù)門中指向TSS D的選擇符其RPL不用,門中偏移量也不用。 任務(wù)門可以在GDT、LDT和IDT中,但TSS D只能在GDT中,TSS可以定 位在內(nèi)存中任何位置 。,2.7.2 TSS D、Task G、TR,3. TR,,,,,,,,,,,,,,,2.7.2 TSS D、Task G、TR,(1)LTR 16位段選擇符裝入TR的可見部分,指向GDT中的TSS D。 48位的段基址和段限長從TSS D中裝入TR不可見部分段Cache。 特權(quán)指令,僅在CPL0程序中執(zhí)行。 用于系統(tǒng)初始化時給TR賦初值,以后由引起

66、任務(wù)轉(zhuǎn)換的時 間改變其中的內(nèi)容。 (2)STR TR中的可見部分存入存儲器或通用寄存器。 非特權(quán)指令,可以在任務(wù)特權(quán)級程序中運行。,2.7.3 任務(wù)轉(zhuǎn)換,1. 任務(wù)轉(zhuǎn)換的啟動 段間JMP或CALL指令操作數(shù)選擇符直接選擇GDT中TSS D 段間JMP或CALL指令操作數(shù)選擇符通過Task G選擇符指向 GDT中TSS D。 中斷或異常指向IDT中的任務(wù)門,Task G選擇GDT中TSSD。 注意:索引IDT中的中斷門或陷阱門不會發(fā)生任務(wù)轉(zhuǎn)換。 當EFLAGS.NT1時現(xiàn)行任務(wù)執(zhí)行IRET/IRETD指令。返回任務(wù)的選擇符在現(xiàn)行任務(wù)的TSS的Link字段中(Old TSS Selector)。,2.7.3 任務(wù)轉(zhuǎn)換,2. 任務(wù)轉(zhuǎn)換的過程,檢查現(xiàn)行任務(wù)允許轉(zhuǎn)換到新任務(wù)。數(shù)據(jù)訪問特權(quán)規(guī)則應(yīng)用到JMP、CALL。 CALL、JMP:現(xiàn)行CPL,選擇符RPL67H,B0(即Type9)。 存現(xiàn)行任務(wù)的狀態(tài)TSS中:EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI、ES、CS、SS、DS、FS、GS、EFLAGS、EIP(引起任務(wù)轉(zhuǎn)換指令的下一條指 令)。

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

相關(guān)資源

更多
正為您匹配相似的精品文檔

相關(guān)搜索

關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!