




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第16章80x86/Pentium保護模式原理與結構本章主要內容80x86/Pentium處理器保護模式的基本概念。保護模式的主要數據結構。保護模式的存儲管理和地址轉換、多任務和保護。保護模式的中斷和異常操作。15.1保護模式概述
保護模式是80x86/Pentium最常用的工作模式,通常在開機或復位后,先進入實模式完成初始化,然后便立即轉到保護模式。保護模式提供了多任務環境中各種復雜功能以及對復雜存儲器組織的管理機制。只有在保護模式下,處理器才能充分發揮其強大的功能和本性,因此,也稱保護模式為本性模式。所謂保護,主要是指對存儲器的保護,即防止對存儲器資源進行未經授權或不正確的訪問。概括而言,保護模式具有如下特點:1.在保護模式下,其尋址機制不同于實模式,需要通過一種稱為“描述符表”的數據結構來實現對內存單元的訪問。描述符表中的描述符含有存儲器段的位置、長度、類型及訪問權限等信息。2.與實模式下段寄存器的內容即為段的實際基地址不同,保護模式下的段寄存器作為索引“描述符表”的變址寄存器來使用,即由它指向“描述符表”的某一項,而實際的段基址則放在段描述符中,此時段寄存器的內容稱為“段選擇符”(也稱段選擇子)。可見,在保護模式下,微處理器訪問存儲器段時對段寄存器的解釋與實模式并不相同。3.在保護模式下,借助于存儲器管理部件(MMU)的功能將磁盤等存儲設備有效地映射到主存,使邏輯地址空間大大超過實際的物理地址空間。4.可以使用4級保護功能,以此實現程序與程序、用戶程序與操作系統之間的隔離和保護,為多任務操作系統提供優化支持。15.2保護模式的主要數據結構15.2.1段描述符在保護模式下,把有關一個段的信息即段基址、限長(段的字節數)、類型、訪問權限和其他屬性信息存放在8字節長的數據結構中,這種數據結構稱為“段描述符”,簡稱描述符(Descriptor)。有兩種類型的描述符:非系統段描述符和系統段描述符。非系統段即應用程序段,也就是通常的代碼段、數據段和堆棧段;而系統段包括任務狀態段TSS(TaskStateSegment)和各種門,另外,局部描述符表也作為一種系統段。任務狀態段是多任務系統中的一種特殊數據結構,它對應一個任務的各種信息。15.2.2描述符表為了查找和識別,把系統中的描述符按線性表的形式來組織,即構成描述符表。描述符表的每一項就是一個描述符。描述符表由操作系統建立,并由操作系統維護和管理。有三種類型的描述符表:全局描述符表GDT、局部描述符表LDT和中斷描述符表IDT。全局描述符表GDT含有可供系統中所有任務使用的段描述符。局部描述符表LDT只含有與系統中某一個給定任務相關聯的描述符。中斷描述符表IDT含有指出各中斷服務程序位置及相關屬性信息的描述符。采用描述符表帶來的優點如下:
1.
可以極大地擴展存儲空間。
2.
可以實現虛擬存儲。
3.
可以實現多任務隔離。由于描述符表是位于存儲器中的,因此系統中分別用一個寄存器來指出其位置,并稱該寄存器為描述符表寄存器。共有三個描述符表寄存器,分別是全局描述符表寄存器GDTR、局部描述符表寄存器LDTR和中斷描述符表寄存器IDTR。15.2.3段選擇符每個段描述符都有一個與之對應的段選擇符。在保護模式下,16位段寄存器的內容即為段選擇符。段選擇符對GDT或LDT提供索引、全局/局部標志以及請求特權級信息。即用段選擇符的高13位來選擇描述符表中8192個描述符中的一個描述符(213=8192),用段選擇符的右數第3位決定是從GDT中還是從LDT中選擇描述符,用段選擇符的最低兩位指出請求特權級。注意,段選擇符并不直接指向段,而是指向定義段的段描述符。段選擇符的格式及功能如圖15.1所示。153201全局描述符表局部描述符表段選擇符(16位)圖15.1段選擇符的格式及功能現對段選擇符各字段的含義解釋如下:索引:位15~3。在全局描述符表GDT或局部描述符表LDT的8192個描述符中選擇一個描述符。處理器將索引值乘8,再加上GDT或LDT的基址,結果用來選擇一個段描述符。TI:位2。表指示器,指定要用的描述符表,該位復位時,選擇GDT;該位置位時,選擇LDT。RPL:位1~0。請求特權級,指定選擇符的特權級。特權級為0~3,為0時特權級最高。例15.1
假定LDT的基址為00120000H,GDT的基址為00100000H。如果裝入CS寄存器的選擇符的值為1007H,那么請求特權級是多少?是GDT還是LDT的段描述符?段描述符的地址是什么?解將選擇符用二進制表示,得到CS=0001000000000111B,由于最低兩位為11,所以請求特權級RPL=3。
右數第3位(表指示器TI位)為1,說明段描述符位于LDT中。將最左13位的值乘以8,即可得到描述符相對于表基址的偏移量:偏移量OFFSET=0001000000000B×8=1000H;
段描述符地址為:00120000H+1000H=00121000H。15.3
保護模式的存儲器管理和地址轉換微處理器保護模式的軟件體系結構還與存儲器的組織和管理密切相關。傳統上,是由單獨的存儲管理部MMU(專門的集成電路芯片)來實現存儲管理功能。在這種情況下,如果程序訪問的地址不在當前MMU管理范圍內,就會出現故障,產生一個出錯信號,并將控制交給操作系統,由操作系統運行一些專門的程序進行故障處理。這樣,不但會減慢系統速度,而且又給操作系統設計帶來麻煩。15.3.1物理地址、線性地址與邏輯地址處理器在其地址總線上實際送出的地址為物理地址。在保護模式下,常規的物理地址空間為4GB(232字節)。該地址空間是平面的,連續地址范圍是0~FFFFFFFFH。該物理地址空間可以映射成隨機存儲器RAM、只讀存儲器ROM以及存儲器映像的I/O地址。PentiumⅡ、PentiumⅢ系列處理器可以將物理地址空間擴展到236字節(64GB),其最大物理地址為FFFFFFFFFH。該擴展是由處理器內部的控制寄存器CR4的第5位即物理地址擴展(PAE)標志來激活。編寫程序時,程序中所指定的地址不是物理地址,而是二維的邏輯地址,亦稱虛擬地址。分段機制將邏輯地址轉換為一維的中間地址,這種中間地址稱為線性地址。15.3.2虛擬地址和虛擬地址空間保護模式的存儲器管理部件使用48位的存儲器指針,它又分為兩部分:選擇符和偏移量。該48位的存儲器指針即為虛擬地址或邏輯地址。如圖15.2所示,選擇符16位長,偏移量32位長。前面曾談到選擇符可放在80386DX的段選擇符寄存器中。
圖15.2保護模式存儲器指針圖15.3說明了16位的選擇符又分為13位索引、1位表指示器(TI)和2位請求特權級(RPL)。其中2位的RPL并不用于存儲器段選擇,因此,16位中只有14位用于尋址,這樣,虛擬地址空間可容納214(16384=16K)個存儲器段,每個段最大可達4G字節。
圖15.3段選擇符格式另外一種查看虛擬地址空間大小的辦法是將14位段選擇符和32位偏移量結合起來,得到46位虛擬地址,從而80386DX虛擬地址空間可包含246(64T)個字節。15.3.3虛擬地址空間的分段80386DX的存儲器管理部件實現了虛存的分段和分頁模型。在分段模型中,64T字節虛擬地址空間分成了32T字節的全局存儲器地址空間和32T字節的局部存儲器地址空間。該劃分大致可見圖15.4。圖15.3中所示的選擇符的TI位用來選擇是全局還是局部描述符表。每個地址空間最多為8192個存儲器段。圖15.4虛擬地址空間的劃分局部地址空間32T字節全局地址空間32T字節虛擬地址空間64T字節在80386DX的多任務軟件環境中,一個應用通常表示為一些任務的集合。這里所說的任務指共同完成某項功能的多個程序的集合。當80386DX啟動一個任務時,它可以激活全局存儲器段或局部存儲器段。該想法如圖15.5所示。注意任務1、2、3各自都有一個局部地址空間。這部分存儲器中的數據和代碼只能被相應的任務訪問,即任務2不能訪問任務1的局部地址空間中任何信息。另外,所有任務都共享全局地址空間。這部分通常包含被所有任務共享的操作系統資源和數據。任務1的局部地址空間全局地址空間任務3的局部地址空間任務2的局部地址空間圖15.5一個任務的全局和局部存儲區任務3的虛擬地址空間任務1的虛擬地址空間任務2的虛擬地址空間15.3.4物理地址空間和虛實地址轉換80386DX的分段和分頁存儲管理機制允許將48位虛擬地址映射到硬件所需的32位物理地址。該地址轉換過程大致可見圖15.6。首先是對虛擬(邏輯)地址進行段轉換。然后,如果禁用分頁機制,則產生的線性地址就是物理地址。如果允許分頁機制,線性地址再經過頁轉換產生物理地址。選擇符偏移量段轉換頁轉換邏輯地址015031PG=0?禁止分頁線性地址物理地址允許分頁031圖15.6邏輯地址到物理地址的轉換03115.3.5
段式地址轉換假定關閉了分頁機制,在這種情況下發生的地址轉換過程如圖15.7
中的深顏色部分所示。圖15.8
表示段轉換過程中進行的操作。前面曾指出過80386DX的段選擇符寄存器CS、DS、ES、FS、GS和SS提供的段選擇符可用來選擇是進入全局描述符表還是局部描述符表。當選擇符值裝入段寄存器時,由TI位選中的描述符表中的描述符自動從存儲器取出并裝入相應段描述符緩存寄存器中。注意,定義段基址、大小和屬性的是描述符而非選擇符。選擇符偏移量段轉換頁轉換邏輯地址015031PG=0?禁止分頁線性地址物理地址允許分頁031圖15.7禁止分頁時邏輯地址到物理地址的轉換031圖15.8邏輯地址轉換為物理地址的操作從圖15.8中可看到,80386DX對每個段選擇符寄存器都有一個64位的內部段描述符高速緩存寄存器。這些高速緩存寄存器不能被編程者訪問。指令執行時它們被透明地裝入段描述符。從圖15.9可以看到,高速緩存寄存器中的段描述符分為三部分:12位的訪問權限信息、32位的段基址和20位的段限長。32位的段基址確定了要訪問段的起始位置。對于數據段而言,給數據段描述符高速緩存寄存器裝入相應值就實現了從16位選擇符到對應的32位數據段基址的映像。
圖15.9段選擇符寄存器及描述符高速緩存寄存器數據段中操作數的位置由邏輯地址中偏移量來確定。例如,假定下一條執行的指令要求訪問數據段中的操作數,并且該指令使用基址尋址方式規定操作數,那么EBX寄存器中裝的就是操作數相對于數據段基址的偏移量。圖15.10給出了根據段選擇符從描述符表中得到段基址然后加上偏移量從而形成32位線性(物理)地址的具體操作過程示意圖。由該圖可見,先根據段選擇符中的TI位選中GDT(TI=0)或LDT(TI=1),再由選擇符的高13位提供的索引值在某個描述符表中選中一個段描述符。段描述符提供一個32位的段基址,將此段基址加上偏移量就得到了線性地址。在禁止分頁的情況下,線性地址就是物理地址。選擇符偏移量邏輯地址01503101215063TI=0TI=1段基址063031線形地址031圖15.10線性地址形成過程示意圖例15.2
假定在圖15.10中的邏輯地址由段選擇符0100H和偏移量00002000H組成,從描述符中讀出的段基址為00030000H,若禁止分頁,則操作數的物理地址是多少?解
邏輯地址=0100:00002000H物理地址=段基址+偏移量=00030000H+00002000H=00032000H15.3.6頁式地址轉換80386DX的保護模式體系結構也支持存儲器地址空間的分頁組織。分頁存儲管理機制在分段存儲管理機制下工作,如果允許分頁,則80386DX的地址空間組織又有所不同。如果不用分頁,則每個段最多可以分配4G字節的物理地址空間,最少1字節。如果用了分頁,則物理地址空間被劃分成1048496(1M)頁,每頁4096(4K)字節長。圖15.11表示物理地址空間按這種方式的組織形式。4K4K4K4K4K圖15.11物理地址空間的分頁管理分頁存儲器的這種固定大小的塊有一個缺點,就是存儲管理程序每次分配都最少是4K字節,即使它們并不全用。這些未用的存儲器區域稱為碎片。碎片導致存儲器使用效率降低,但是分頁大大簡化了存儲管理程序的實現。從圖15.12可以看到,在允許分頁的情況下,段轉換過程所產生的線性地址不再用作物理地址,它還要經過稱為“頁轉換”的第二個轉換過程。圖15.12線形地址到物理地址的分頁轉換選擇符偏移量段轉換頁轉換邏輯地址015031PG=0?禁止分頁線性地址物理地址允許分頁031031圖15.13給出了在進行頁轉換時線性地址的具體格式,它由三部分組成:10位的頁目錄域,10位的頁表域及12位的偏移量域。通過后邊的介紹我們將會看到,這三部分分別為頁目錄項、頁表項及頁面中的存儲單元提供各自的偏移量。圖15.13
線性地址格式圖15.14顯示了一個線性地址怎樣轉換成對應的物理地址。存儲器中頁目錄表的起始地址由控制寄存器CR3中的頁目錄基址寄存器(PDBR)確定。PDBR實際上是CR3的高20位,CR3的低12位始終為0,即頁目錄表的選取總是從4K字節的邊界處開始。頁目錄表為4K字節長,包含1K個32位的頁目錄項。每個頁目錄項中的物理基址指向一個物理存儲器中的頁表。圖15.14頁式地址轉換過程示意圖1211031222180386DX轉換檢測緩沖器(TLB)操作數頁表項
物理存儲器頁目錄表(4K,1024項)●●●●●頁目錄項031PDBR(CR3)●●●頁表(4K,1024項)頁(4K,字節)頁目錄項和頁表項的格式相同,圖15.15給出了它們的具體情形。從圖15.14已經看到,它們均可被緩存于轉換旁視緩沖器TLB中。圖15.15頁目錄項和頁表項格式對頁目錄項和頁表項中所含信息解釋:1.物理基址:如為頁目錄項,則為頁表的物理起始地址,即頁表基地址;如為頁表項,則為頁的物理起始地址,即頁基地址。注意,頁目錄項或頁表項只提供基地址的高20位(第12位至31位),低12位設定0,這樣,頁表或頁總是定位于4K字節地址的邊界處。2.
存在標志位P:若P=1,則對應的頁表或頁存在于主存儲器中;若P=0,則對應的頁表或頁不在主存儲器中,使用時會出現頁故障,控制寄存器CR2就是用來保存頁故障線性地址的寄存器。產生頁故障時,操作系統會將此頁表或頁從外存(一般為磁盤存儲器)調入內存中來,并重新啟動剛才引起頁故障的指令。當然,這些操作對應用程序而言是完全透明的。3.訪問標志位A:當對某一個頁表或頁進行訪問時,處理器將該標志位置1,并保持為1。A位為系統提供本頁表或頁的使用情況信息,從而幫助操作系統在進行頁面調度時選擇哪一頁應當從內存中調出,一般是選長期未用過的頁或近期最少使用的頁調出。在實際運行中,當頁表或頁在一開始裝入到內存時,所有頁目錄項及頁表項的A位均被清0。
操作系統定期掃描這些表項,如發現A位為1,就知道對應頁表或頁被訪問過,操作系統據此增加該頁對應的“訪問次數記錄”,當需要調出一頁時,長期未用的頁和近期使用最少的頁被選中。4.頁面寫標志位D:D位只用于頁表項,如果所指頁中任一個地址執行了寫操作,則該標志位置1。D標志位有時形象地稱之為臟位(Dirty)。當一頁從磁盤調入內存時,由操作系統的存儲器管理軟件將D位清0,以后,當對此頁進行寫操作時,處理器將該位置1,并保持為1。
當選中某頁調往磁盤時,若檢測到對應的D位仍為0,則說明此頁一直沒被寫過,所以不需要往磁盤重寫,從而使調出過程變得十分簡單。D位對頁目錄項無意義。在頁式虛存系統中,操作系統可通過A和D位來跟蹤頁的使用情況。5.用戶/系統位U/S:若U/S=0,則用戶程序不能訪問該頁;U/S=1,才允許用戶程序讀/寫該頁。這是為了保護操作系統所使用的頁面不受用戶程序的破壞而設置的。6.讀/寫標志位R/W:為頁表或頁指定讀、寫權限。若R/W=0,為只讀;R/W=1,為可讀/寫。7.
保留位AVL(3位):可被編程者使用。注意頁目錄項中指定的保護屬性對頁表所指向的所有頁都適用,但是頁表項指定的屬性只適用于它定義的頁。只有在頁目錄項和頁表項中的U/S位都為1時,一個用戶程序才能讀對應的頁;同樣,只有兩個表項的U/S和R/W都為1時,用戶程序才能讀/寫對應頁。如果違反了操作規則,則將引起頁故障。例15.3
如果某一活動頁的頁目錄項是F1000007H,頁表項是01000005H,則該頁被指定的是用戶級還是系統級?用戶級或系統級所允許的訪問權限是什么?解
首先將頁目錄項用二進制形式表示,得到:F1000007H=11110001000000000000000000000111B
可見,頁保護位為U/SR/W=11,即給頁指定的是用戶級和可讀/寫權限。再將頁表項用二進制形式表示:
01000005H=00000001000000000000000000000101B
發現:U/SR/W=10,它定義頁為用戶級,只讀。由于頁表項定義的頁屬性更具有約束性(更嚴格),所以它是有效的。即用戶軟件(應用程序)只能讀取該頁中的數據。15.3.7轉換旁視緩沖器TLB(快表)轉換旁視緩沖器TLB實際上是置于處理器內部的小型高速緩沖存儲器,在采用分頁機制進行線性地址到物理地址轉換時,用以緩存從存儲器中讀出的頁目錄項和頁表項。與通常的高速緩存(Cache)技術相同,TLB也是基于程序訪問的局部性原理進行工作的。TLB中共可緩存8至1024個最近使用過的頁表項,通過操作系統的跟蹤來實現這些表項的保持和更新。在操作系統的技術術語中,常將TLB稱為“快表”,而把主存中的頁目錄表或頁表稱為“慢表”。15.4
多任務和保護80x86/Pentium微處理器實現了多任務的軟件體系結構。這里的多任務是指其硬件允許軟件系統中存在多個任務并能夠以分時的方式執行。也就是說,程序控制在經過一固定的時間間隔后從一個任務切換到另一個任務。比如,任務可以循環方式(round-robin)執行,即最近執行的任務回到要執行任務清單的末尾。盡管該過程是以分時的形式進行,但處理器執行起來還是會讓用戶覺得所有任務都是同時運行。當一個任務調入運行時,它既有全局存儲器資源又有局部存儲器資源。局部存儲器地址空間按任務進行劃分,即每個任務一般都有它自己的局部存儲器段。全局存儲器中的段可被所有任務共享。從而,一個任務可以訪問全局存儲器中的任意一段。如圖15.5所示,任務1、2、3既有專用地址空間又有全局地址空間。15.4.1保護和特權級可以在保護模式的軟件系統中加入防護措施以防止任務的存儲器資源未經授權或不正確訪問,這種存儲器防護措施稱為保護。80x86/Pentium處理器的硬件實現了一種保護機制,在多任務環境下,該機制對任務的局部和系統資源的訪問作了限制,使得各個任務之間隔離開來。段、頁和描述符是80x86/Pentium處理器保護機制的關鍵元素。當采用分段存儲器管理模型時,段是具有特定保護屬性的虛擬存儲器地址空間中的最小單位。其保護屬性由段描述符中的訪問權限信息和段限長字段定義。另外,在存儲器訪問過程中硬件保護機制要執行一系列檢查,例如類型檢查、限長檢查、地址域限制、過程入口點限制以及指令集限制等。為了實施特權級檢查,處理器識別下述三類特權級:①描述符特權級DPL。每一個描述符包含一個描述符特權級DPL。它存放在段或門描述符的DPL字段中。它表明了什磨樣的特權級程序可以使用這個段。②當前特權級CPL。CPL是當前正在執行的程序或任務的特權級,它保存在CS寄存器的第0和1位。任何時候,處理器總是在某一個特權級上運行,當前特權級CPL確定了正在執行的程序或任務的特權級。當程序控制被轉移到不同特權級的代碼段時,處理器就改變CPL。
如果CPL比所訪問段的特權級DPL低,就會產生異常。用公式表示,即要求:
CPL≤DPL③請求特權級RPL(requestorprivilegelevel)。RPL是分配給段選擇符的特權級,保存在段寄存器的第0和第1位。請求特權級表明了程序要求以什磨樣的特權級來訪問這個段。它和DPL的關系類似于CPL和DPL的關系,即要求:
RPL≤DPL處理器將RPL與CPL一道檢查,確定是否允許訪問某個段。可用統一的公式表示,即應滿足:
MAX(CPL,RPL)≤DPL圖15.16不同特權級訪問數據段舉例內核圖15.17保護環0級1級2級3級操作系統數據庫管理等應用程序任務A的局部地址空間任務B的局部地址空間任務C的局部地址空間全局地址空間15.4.2保護模式的中斷和異常操作為了支持任務和虛擬存儲器等功能,在工作于保
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園園長聘任合同范文
- 股權質押擔保合同范文
- 鋼鐵行業自動化升級-全面剖析
- 藝術教育中批判性思維的評估方法-全面剖析
- 機器學習驅動的分區算法-全面剖析
- 競爭格局演變趨勢-第5篇-全面剖析
- 環境適應性電子產品設計-全面剖析
- 電機產業鏈協同發展-全面剖析
- 面向物聯網環境的移動設備指紋識別技術挑戰-全面剖析
- 教育科技行業商業模式創新與教育科技產業政策分析報告2025
- 兒童超聲心動圖操作指南與標準課件
- 2022年高考全國I卷數學高考真題(原卷版)
- 2017版《水利水電工程單元工程施工質量驗收評定表和填表說明》(下冊)
- 開封廢金屬回收有限責任公司新建報廢汽車拆解線項目環境影響報告
- GB/T 4459.9-2009機械制圖動密封圈第2部分:特征簡化表示法
- 冠脈介入新技術
- 繩據法鋼筋混凝土護欄切割破除方案計劃
- 企業臨時用工合同范本(5篇)
- 2023年武漢民政職業學院單招考試面試模擬試題及答案解析
- 中國軍事發展簡述課件
- 碧桂園物業案場私宴接待操作規程
評論
0/150
提交評論