微型計算機(jī)基本原理與應(yīng)用(第二版)第15章 80x86保護(hù)模式原理與結(jié)構(gòu)_第1頁
微型計算機(jī)基本原理與應(yīng)用(第二版)第15章 80x86保護(hù)模式原理與結(jié)構(gòu)_第2頁
微型計算機(jī)基本原理與應(yīng)用(第二版)第15章 80x86保護(hù)模式原理與結(jié)構(gòu)_第3頁
微型計算機(jī)基本原理與應(yīng)用(第二版)第15章 80x86保護(hù)模式原理與結(jié)構(gòu)_第4頁
微型計算機(jī)基本原理與應(yīng)用(第二版)第15章 80x86保護(hù)模式原理與結(jié)構(gòu)_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第16章80x86/Pentium保護(hù)模式原理與結(jié)構(gòu)本章主要內(nèi)容80x86/Pentium處理器保護(hù)模式的基本概念。保護(hù)模式的主要數(shù)據(jù)結(jié)構(gòu)。保護(hù)模式的存儲管理和地址轉(zhuǎn)換、多任務(wù)和保護(hù)。保護(hù)模式的中斷和異常操作。15.1保護(hù)模式概述

保護(hù)模式是80x86/Pentium最常用的工作模式,通常在開機(jī)或復(fù)位后,先進(jìn)入實模式完成初始化,然后便立即轉(zhuǎn)到保護(hù)模式。保護(hù)模式提供了多任務(wù)環(huán)境中各種復(fù)雜功能以及對復(fù)雜存儲器組織的管理機(jī)制。只有在保護(hù)模式下,處理器才能充分發(fā)揮其強(qiáng)大的功能和本性,因此,也稱保護(hù)模式為本性模式。所謂保護(hù),主要是指對存儲器的保護(hù),即防止對存儲器資源進(jìn)行未經(jīng)授權(quán)或不正確的訪問。概括而言,保護(hù)模式具有如下特點:1.在保護(hù)模式下,其尋址機(jī)制不同于實模式,需要通過一種稱為“描述符表”的數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)對內(nèi)存單元的訪問。描述符表中的描述符含有存儲器段的位置、長度、類型及訪問權(quán)限等信息。2.與實模式下段寄存器的內(nèi)容即為段的實際基地址不同,保護(hù)模式下的段寄存器作為索引“描述符表”的變址寄存器來使用,即由它指向“描述符表”的某一項,而實際的段基址則放在段描述符中,此時段寄存器的內(nèi)容稱為“段選擇符”(也稱段選擇子)??梢姡诒Wo(hù)模式下,微處理器訪問存儲器段時對段寄存器的解釋與實模式并不相同。3.在保護(hù)模式下,借助于存儲器管理部件(MMU)的功能將磁盤等存儲設(shè)備有效地映射到主存,使邏輯地址空間大大超過實際的物理地址空間。4.可以使用4級保護(hù)功能,以此實現(xiàn)程序與程序、用戶程序與操作系統(tǒng)之間的隔離和保護(hù),為多任務(wù)操作系統(tǒng)提供優(yōu)化支持。15.2保護(hù)模式的主要數(shù)據(jù)結(jié)構(gòu)15.2.1段描述符在保護(hù)模式下,把有關(guān)一個段的信息即段基址、限長(段的字節(jié)數(shù))、類型、訪問權(quán)限和其他屬性信息存放在8字節(jié)長的數(shù)據(jù)結(jié)構(gòu)中,這種數(shù)據(jù)結(jié)構(gòu)稱為“段描述符”,簡稱描述符(Descriptor)。有兩種類型的描述符:非系統(tǒng)段描述符和系統(tǒng)段描述符。非系統(tǒng)段即應(yīng)用程序段,也就是通常的代碼段、數(shù)據(jù)段和堆棧段;而系統(tǒng)段包括任務(wù)狀態(tài)段TSS(TaskStateSegment)和各種門,另外,局部描述符表也作為一種系統(tǒng)段。任務(wù)狀態(tài)段是多任務(wù)系統(tǒng)中的一種特殊數(shù)據(jù)結(jié)構(gòu),它對應(yīng)一個任務(wù)的各種信息。15.2.2描述符表為了查找和識別,把系統(tǒng)中的描述符按線性表的形式來組織,即構(gòu)成描述符表。描述符表的每一項就是一個描述符。描述符表由操作系統(tǒng)建立,并由操作系統(tǒng)維護(hù)和管理。有三種類型的描述符表:全局描述符表GDT、局部描述符表LDT和中斷描述符表IDT。全局描述符表GDT含有可供系統(tǒng)中所有任務(wù)使用的段描述符。局部描述符表LDT只含有與系統(tǒng)中某一個給定任務(wù)相關(guān)聯(lián)的描述符。中斷描述符表IDT含有指出各中斷服務(wù)程序位置及相關(guān)屬性信息的描述符。采用描述符表帶來的優(yōu)點如下:

1.

可以極大地擴(kuò)展存儲空間。

2.

可以實現(xiàn)虛擬存儲。

3.

可以實現(xiàn)多任務(wù)隔離。由于描述符表是位于存儲器中的,因此系統(tǒng)中分別用一個寄存器來指出其位置,并稱該寄存器為描述符表寄存器。共有三個描述符表寄存器,分別是全局描述符表寄存器GDTR、局部描述符表寄存器LDTR和中斷描述符表寄存器IDTR。15.2.3段選擇符每個段描述符都有一個與之對應(yīng)的段選擇符。在保護(hù)模式下,16位段寄存器的內(nèi)容即為段選擇符。段選擇符對GDT或LDT提供索引、全局/局部標(biāo)志以及請求特權(quán)級信息。即用段選擇符的高13位來選擇描述符表中8192個描述符中的一個描述符(213=8192),用段選擇符的右數(shù)第3位決定是從GDT中還是從LDT中選擇描述符,用段選擇符的最低兩位指出請求特權(quán)級。注意,段選擇符并不直接指向段,而是指向定義段的段描述符。段選擇符的格式及功能如圖15.1所示。153201全局描述符表局部描述符表段選擇符(16位)圖15.1段選擇符的格式及功能現(xiàn)對段選擇符各字段的含義解釋如下:索引:位15~3。在全局描述符表GDT或局部描述符表LDT的8192個描述符中選擇一個描述符。處理器將索引值乘8,再加上GDT或LDT的基址,結(jié)果用來選擇一個段描述符。TI:位2。表指示器,指定要用的描述符表,該位復(fù)位時,選擇GDT;該位置位時,選擇LDT。RPL:位1~0。請求特權(quán)級,指定選擇符的特權(quán)級。特權(quán)級為0~3,為0時特權(quán)級最高。例15.1

假定LDT的基址為00120000H,GDT的基址為00100000H。如果裝入CS寄存器的選擇符的值為1007H,那么請求特權(quán)級是多少?是GDT還是LDT的段描述符?段描述符的地址是什么?解將選擇符用二進(jìn)制表示,得到CS=0001000000000111B,由于最低兩位為11,所以請求特權(quán)級RPL=3。

右數(shù)第3位(表指示器TI位)為1,說明段描述符位于LDT中。將最左13位的值乘以8,即可得到描述符相對于表基址的偏移量:偏移量OFFSET=0001000000000B×8=1000H;

段描述符地址為:00120000H+1000H=00121000H。15.3

保護(hù)模式的存儲器管理和地址轉(zhuǎn)換微處理器保護(hù)模式的軟件體系結(jié)構(gòu)還與存儲器的組織和管理密切相關(guān)。傳統(tǒng)上,是由單獨的存儲管理部MMU(專門的集成電路芯片)來實現(xiàn)存儲管理功能。在這種情況下,如果程序訪問的地址不在當(dāng)前MMU管理范圍內(nèi),就會出現(xiàn)故障,產(chǎn)生一個出錯信號,并將控制交給操作系統(tǒng),由操作系統(tǒng)運行一些專門的程序進(jìn)行故障處理。這樣,不但會減慢系統(tǒng)速度,而且又給操作系統(tǒng)設(shè)計帶來麻煩。15.3.1物理地址、線性地址與邏輯地址處理器在其地址總線上實際送出的地址為物理地址。在保護(hù)模式下,常規(guī)的物理地址空間為4GB(232字節(jié))。該地址空間是平面的,連續(xù)地址范圍是0~FFFFFFFFH。該物理地址空間可以映射成隨機(jī)存儲器RAM、只讀存儲器ROM以及存儲器映像的I/O地址。PentiumⅡ、PentiumⅢ系列處理器可以將物理地址空間擴(kuò)展到236字節(jié)(64GB),其最大物理地址為FFFFFFFFFH。該擴(kuò)展是由處理器內(nèi)部的控制寄存器CR4的第5位即物理地址擴(kuò)展(PAE)標(biāo)志來激活。編寫程序時,程序中所指定的地址不是物理地址,而是二維的邏輯地址,亦稱虛擬地址。分段機(jī)制將邏輯地址轉(zhuǎn)換為一維的中間地址,這種中間地址稱為線性地址。15.3.2虛擬地址和虛擬地址空間保護(hù)模式的存儲器管理部件使用48位的存儲器指針,它又分為兩部分:選擇符和偏移量。該48位的存儲器指針即為虛擬地址或邏輯地址。如圖15.2所示,選擇符16位長,偏移量32位長。前面曾談到選擇符可放在80386DX的段選擇符寄存器中。

圖15.2保護(hù)模式存儲器指針圖15.3說明了16位的選擇符又分為13位索引、1位表指示器(TI)和2位請求特權(quán)級(RPL)。其中2位的RPL并不用于存儲器段選擇,因此,16位中只有14位用于尋址,這樣,虛擬地址空間可容納214(16384=16K)個存儲器段,每個段最大可達(dá)4G字節(jié)。

圖15.3段選擇符格式另外一種查看虛擬地址空間大小的辦法是將14位段選擇符和32位偏移量結(jié)合起來,得到46位虛擬地址,從而80386DX虛擬地址空間可包含246(64T)個字節(jié)。15.3.3虛擬地址空間的分段80386DX的存儲器管理部件實現(xiàn)了虛存的分段和分頁模型。在分段模型中,64T字節(jié)虛擬地址空間分成了32T字節(jié)的全局存儲器地址空間和32T字節(jié)的局部存儲器地址空間。該劃分大致可見圖15.4。圖15.3中所示的選擇符的TI位用來選擇是全局還是局部描述符表。每個地址空間最多為8192個存儲器段。圖15.4虛擬地址空間的劃分局部地址空間32T字節(jié)全局地址空間32T字節(jié)虛擬地址空間64T字節(jié)在80386DX的多任務(wù)軟件環(huán)境中,一個應(yīng)用通常表示為一些任務(wù)的集合。這里所說的任務(wù)指共同完成某項功能的多個程序的集合。當(dāng)80386DX啟動一個任務(wù)時,它可以激活全局存儲器段或局部存儲器段。該想法如圖15.5所示。注意任務(wù)1、2、3各自都有一個局部地址空間。這部分存儲器中的數(shù)據(jù)和代碼只能被相應(yīng)的任務(wù)訪問,即任務(wù)2不能訪問任務(wù)1的局部地址空間中任何信息。另外,所有任務(wù)都共享全局地址空間。這部分通常包含被所有任務(wù)共享的操作系統(tǒng)資源和數(shù)據(jù)。任務(wù)1的局部地址空間全局地址空間任務(wù)3的局部地址空間任務(wù)2的局部地址空間圖15.5一個任務(wù)的全局和局部存儲區(qū)任務(wù)3的虛擬地址空間任務(wù)1的虛擬地址空間任務(wù)2的虛擬地址空間15.3.4物理地址空間和虛實地址轉(zhuǎn)換80386DX的分段和分頁存儲管理機(jī)制允許將48位虛擬地址映射到硬件所需的32位物理地址。該地址轉(zhuǎn)換過程大致可見圖15.6。首先是對虛擬(邏輯)地址進(jìn)行段轉(zhuǎn)換。然后,如果禁用分頁機(jī)制,則產(chǎn)生的線性地址就是物理地址。如果允許分頁機(jī)制,線性地址再經(jīng)過頁轉(zhuǎn)換產(chǎn)生物理地址。選擇符偏移量段轉(zhuǎn)換頁轉(zhuǎn)換邏輯地址015031PG=0?禁止分頁線性地址物理地址允許分頁031圖15.6邏輯地址到物理地址的轉(zhuǎn)換03115.3.5

段式地址轉(zhuǎn)換假定關(guān)閉了分頁機(jī)制,在這種情況下發(fā)生的地址轉(zhuǎn)換過程如圖15.7

中的深顏色部分所示。圖15.8

表示段轉(zhuǎn)換過程中進(jìn)行的操作。前面曾指出過80386DX的段選擇符寄存器CS、DS、ES、FS、GS和SS提供的段選擇符可用來選擇是進(jìn)入全局描述符表還是局部描述符表。當(dāng)選擇符值裝入段寄存器時,由TI位選中的描述符表中的描述符自動從存儲器取出并裝入相應(yīng)段描述符緩存寄存器中。注意,定義段基址、大小和屬性的是描述符而非選擇符。選擇符偏移量段轉(zhuǎn)換頁轉(zhuǎn)換邏輯地址015031PG=0?禁止分頁線性地址物理地址允許分頁031圖15.7禁止分頁時邏輯地址到物理地址的轉(zhuǎn)換031圖15.8邏輯地址轉(zhuǎn)換為物理地址的操作從圖15.8中可看到,80386DX對每個段選擇符寄存器都有一個64位的內(nèi)部段描述符高速緩存寄存器。這些高速緩存寄存器不能被編程者訪問。指令執(zhí)行時它們被透明地裝入段描述符。從圖15.9可以看到,高速緩存寄存器中的段描述符分為三部分:12位的訪問權(quán)限信息、32位的段基址和20位的段限長。32位的段基址確定了要訪問段的起始位置。對于數(shù)據(jù)段而言,給數(shù)據(jù)段描述符高速緩存寄存器裝入相應(yīng)值就實現(xiàn)了從16位選擇符到對應(yīng)的32位數(shù)據(jù)段基址的映像。

圖15.9段選擇符寄存器及描述符高速緩存寄存器數(shù)據(jù)段中操作數(shù)的位置由邏輯地址中偏移量來確定。例如,假定下一條執(zhí)行的指令要求訪問數(shù)據(jù)段中的操作數(shù),并且該指令使用基址尋址方式規(guī)定操作數(shù),那么EBX寄存器中裝的就是操作數(shù)相對于數(shù)據(jù)段基址的偏移量。圖15.10給出了根據(jù)段選擇符從描述符表中得到段基址然后加上偏移量從而形成32位線性(物理)地址的具體操作過程示意圖。由該圖可見,先根據(jù)段選擇符中的TI位選中GDT(TI=0)或LDT(TI=1),再由選擇符的高13位提供的索引值在某個描述符表中選中一個段描述符。段描述符提供一個32位的段基址,將此段基址加上偏移量就得到了線性地址。在禁止分頁的情況下,線性地址就是物理地址。選擇符偏移量邏輯地址01503101215063TI=0TI=1段基址063031線形地址031圖15.10線性地址形成過程示意圖例15.2

假定在圖15.10中的邏輯地址由段選擇符0100H和偏移量00002000H組成,從描述符中讀出的段基址為00030000H,若禁止分頁,則操作數(shù)的物理地址是多少?解

邏輯地址=0100:00002000H物理地址=段基址+偏移量=00030000H+00002000H=00032000H15.3.6頁式地址轉(zhuǎn)換80386DX的保護(hù)模式體系結(jié)構(gòu)也支持存儲器地址空間的分頁組織。分頁存儲管理機(jī)制在分段存儲管理機(jī)制下工作,如果允許分頁,則80386DX的地址空間組織又有所不同。如果不用分頁,則每個段最多可以分配4G字節(jié)的物理地址空間,最少1字節(jié)。如果用了分頁,則物理地址空間被劃分成1048496(1M)頁,每頁4096(4K)字節(jié)長。圖15.11表示物理地址空間按這種方式的組織形式。4K4K4K4K4K圖15.11物理地址空間的分頁管理分頁存儲器的這種固定大小的塊有一個缺點,就是存儲管理程序每次分配都最少是4K字節(jié),即使它們并不全用。這些未用的存儲器區(qū)域稱為碎片。碎片導(dǎo)致存儲器使用效率降低,但是分頁大大簡化了存儲管理程序的實現(xiàn)。從圖15.12可以看到,在允許分頁的情況下,段轉(zhuǎn)換過程所產(chǎn)生的線性地址不再用作物理地址,它還要經(jīng)過稱為“頁轉(zhuǎn)換”的第二個轉(zhuǎn)換過程。圖15.12線形地址到物理地址的分頁轉(zhuǎn)換選擇符偏移量段轉(zhuǎn)換頁轉(zhuǎn)換邏輯地址015031PG=0?禁止分頁線性地址物理地址允許分頁031031圖15.13給出了在進(jìn)行頁轉(zhuǎn)換時線性地址的具體格式,它由三部分組成:10位的頁目錄域,10位的頁表域及12位的偏移量域。通過后邊的介紹我們將會看到,這三部分分別為頁目錄項、頁表項及頁面中的存儲單元提供各自的偏移量。圖15.13

線性地址格式圖15.14顯示了一個線性地址怎樣轉(zhuǎn)換成對應(yīng)的物理地址。存儲器中頁目錄表的起始地址由控制寄存器CR3中的頁目錄基址寄存器(PDBR)確定。PDBR實際上是CR3的高20位,CR3的低12位始終為0,即頁目錄表的選取總是從4K字節(jié)的邊界處開始。頁目錄表為4K字節(jié)長,包含1K個32位的頁目錄項。每個頁目錄項中的物理基址指向一個物理存儲器中的頁表。圖15.14頁式地址轉(zhuǎn)換過程示意圖1211031222180386DX轉(zhuǎn)換檢測緩沖器(TLB)操作數(shù)頁表項

物理存儲器頁目錄表(4K,1024項)●●●●●頁目錄項031PDBR(CR3)●●●頁表(4K,1024項)頁(4K,字節(jié))頁目錄項和頁表項的格式相同,圖15.15給出了它們的具體情形。從圖15.14已經(jīng)看到,它們均可被緩存于轉(zhuǎn)換旁視緩沖器TLB中。圖15.15頁目錄項和頁表項格式對頁目錄項和頁表項中所含信息解釋:1.物理基址:如為頁目錄項,則為頁表的物理起始地址,即頁表基地址;如為頁表項,則為頁的物理起始地址,即頁基地址。注意,頁目錄項或頁表項只提供基地址的高20位(第12位至31位),低12位設(shè)定0,這樣,頁表或頁總是定位于4K字節(jié)地址的邊界處。2.

存在標(biāo)志位P:若P=1,則對應(yīng)的頁表或頁存在于主存儲器中;若P=0,則對應(yīng)的頁表或頁不在主存儲器中,使用時會出現(xiàn)頁故障,控制寄存器CR2就是用來保存頁故障線性地址的寄存器。產(chǎn)生頁故障時,操作系統(tǒng)會將此頁表或頁從外存(一般為磁盤存儲器)調(diào)入內(nèi)存中來,并重新啟動剛才引起頁故障的指令。當(dāng)然,這些操作對應(yīng)用程序而言是完全透明的。3.訪問標(biāo)志位A:當(dāng)對某一個頁表或頁進(jìn)行訪問時,處理器將該標(biāo)志位置1,并保持為1。A位為系統(tǒng)提供本頁表或頁的使用情況信息,從而幫助操作系統(tǒng)在進(jìn)行頁面調(diào)度時選擇哪一頁應(yīng)當(dāng)從內(nèi)存中調(diào)出,一般是選長期未用過的頁或近期最少使用的頁調(diào)出。在實際運行中,當(dāng)頁表或頁在一開始裝入到內(nèi)存時,所有頁目錄項及頁表項的A位均被清0。

操作系統(tǒng)定期掃描這些表項,如發(fā)現(xiàn)A位為1,就知道對應(yīng)頁表或頁被訪問過,操作系統(tǒng)據(jù)此增加該頁對應(yīng)的“訪問次數(shù)記錄”,當(dāng)需要調(diào)出一頁時,長期未用的頁和近期使用最少的頁被選中。4.頁面寫標(biāo)志位D:D位只用于頁表項,如果所指頁中任一個地址執(zhí)行了寫操作,則該標(biāo)志位置1。D標(biāo)志位有時形象地稱之為臟位(Dirty)。當(dāng)一頁從磁盤調(diào)入內(nèi)存時,由操作系統(tǒng)的存儲器管理軟件將D位清0,以后,當(dāng)對此頁進(jìn)行寫操作時,處理器將該位置1,并保持為1。

當(dāng)選中某頁調(diào)往磁盤時,若檢測到對應(yīng)的D位仍為0,則說明此頁一直沒被寫過,所以不需要往磁盤重寫,從而使調(diào)出過程變得十分簡單。D位對頁目錄項無意義。在頁式虛存系統(tǒng)中,操作系統(tǒng)可通過A和D位來跟蹤頁的使用情況。5.用戶/系統(tǒng)位U/S:若U/S=0,則用戶程序不能訪問該頁;U/S=1,才允許用戶程序讀/寫該頁。這是為了保護(hù)操作系統(tǒng)所使用的頁面不受用戶程序的破壞而設(shè)置的。6.讀/寫標(biāo)志位R/W:為頁表或頁指定讀、寫權(quán)限。若R/W=0,為只讀;R/W=1,為可讀/寫。7.

保留位AVL(3位):可被編程者使用。注意頁目錄項中指定的保護(hù)屬性對頁表所指向的所有頁都適用,但是頁表項指定的屬性只適用于它定義的頁。只有在頁目錄項和頁表項中的U/S位都為1時,一個用戶程序才能讀對應(yīng)的頁;同樣,只有兩個表項的U/S和R/W都為1時,用戶程序才能讀/寫對應(yīng)頁。如果違反了操作規(guī)則,則將引起頁故障。例15.3

如果某一活動頁的頁目錄項是F1000007H,頁表項是01000005H,則該頁被指定的是用戶級還是系統(tǒng)級?用戶級或系統(tǒng)級所允許的訪問權(quán)限是什么?解

首先將頁目錄項用二進(jìn)制形式表示,得到:F1000007H=11110001000000000000000000000111B

可見,頁保護(hù)位為U/SR/W=11,即給頁指定的是用戶級和可讀/寫權(quán)限。再將頁表項用二進(jìn)制形式表示:

01000005H=00000001000000000000000000000101B

發(fā)現(xiàn):U/SR/W=10,它定義頁為用戶級,只讀。由于頁表項定義的頁屬性更具有約束性(更嚴(yán)格),所以它是有效的。即用戶軟件(應(yīng)用程序)只能讀取該頁中的數(shù)據(jù)。15.3.7轉(zhuǎn)換旁視緩沖器TLB(快表)轉(zhuǎn)換旁視緩沖器TLB實際上是置于處理器內(nèi)部的小型高速緩沖存儲器,在采用分頁機(jī)制進(jìn)行線性地址到物理地址轉(zhuǎn)換時,用以緩存從存儲器中讀出的頁目錄項和頁表項。與通常的高速緩存(Cache)技術(shù)相同,TLB也是基于程序訪問的局部性原理進(jìn)行工作的。TLB中共可緩存8至1024個最近使用過的頁表項,通過操作系統(tǒng)的跟蹤來實現(xiàn)這些表項的保持和更新。在操作系統(tǒng)的技術(shù)術(shù)語中,常將TLB稱為“快表”,而把主存中的頁目錄表或頁表稱為“慢表”。15.4

多任務(wù)和保護(hù)80x86/Pentium微處理器實現(xiàn)了多任務(wù)的軟件體系結(jié)構(gòu)。這里的多任務(wù)是指其硬件允許軟件系統(tǒng)中存在多個任務(wù)并能夠以分時的方式執(zhí)行。也就是說,程序控制在經(jīng)過一固定的時間間隔后從一個任務(wù)切換到另一個任務(wù)。比如,任務(wù)可以循環(huán)方式(round-robin)執(zhí)行,即最近執(zhí)行的任務(wù)回到要執(zhí)行任務(wù)清單的末尾。盡管該過程是以分時的形式進(jìn)行,但處理器執(zhí)行起來還是會讓用戶覺得所有任務(wù)都是同時運行。當(dāng)一個任務(wù)調(diào)入運行時,它既有全局存儲器資源又有局部存儲器資源。局部存儲器地址空間按任務(wù)進(jìn)行劃分,即每個任務(wù)一般都有它自己的局部存儲器段。全局存儲器中的段可被所有任務(wù)共享。從而,一個任務(wù)可以訪問全局存儲器中的任意一段。如圖15.5所示,任務(wù)1、2、3既有專用地址空間又有全局地址空間。15.4.1保護(hù)和特權(quán)級可以在保護(hù)模式的軟件系統(tǒng)中加入防護(hù)措施以防止任務(wù)的存儲器資源未經(jīng)授權(quán)或不正確訪問,這種存儲器防護(hù)措施稱為保護(hù)。80x86/Pentium處理器的硬件實現(xiàn)了一種保護(hù)機(jī)制,在多任務(wù)環(huán)境下,該機(jī)制對任務(wù)的局部和系統(tǒng)資源的訪問作了限制,使得各個任務(wù)之間隔離開來。段、頁和描述符是80x86/Pentium處理器保護(hù)機(jī)制的關(guān)鍵元素。當(dāng)采用分段存儲器管理模型時,段是具有特定保護(hù)屬性的虛擬存儲器地址空間中的最小單位。其保護(hù)屬性由段描述符中的訪問權(quán)限信息和段限長字段定義。另外,在存儲器訪問過程中硬件保護(hù)機(jī)制要執(zhí)行一系列檢查,例如類型檢查、限長檢查、地址域限制、過程入口點限制以及指令集限制等。為了實施特權(quán)級檢查,處理器識別下述三類特權(quán)級:①描述符特權(quán)級DPL。每一個描述符包含一個描述符特權(quán)級DPL。它存放在段或門描述符的DPL字段中。它表明了什磨樣的特權(quán)級程序可以使用這個段。②當(dāng)前特權(quán)級CPL。CPL是當(dāng)前正在執(zhí)行的程序或任務(wù)的特權(quán)級,它保存在CS寄存器的第0和1位。任何時候,處理器總是在某一個特權(quán)級上運行,當(dāng)前特權(quán)級CPL確定了正在執(zhí)行的程序或任務(wù)的特權(quán)級。當(dāng)程序控制被轉(zhuǎn)移到不同特權(quán)級的代碼段時,處理器就改變CPL。

如果CPL比所訪問段的特權(quán)級DPL低,就會產(chǎn)生異常。用公式表示,即要求:

CPL≤DPL③請求特權(quán)級RPL(requestorprivilegelevel)。RPL是分配給段選擇符的特權(quán)級,保存在段寄存器的第0和第1位。請求特權(quán)級表明了程序要求以什磨樣的特權(quán)級來訪問這個段。它和DPL的關(guān)系類似于CPL和DPL的關(guān)系,即要求:

RPL≤DPL處理器將RPL與CPL一道檢查,確定是否允許訪問某個段??捎媒y(tǒng)一的公式表示,即應(yīng)滿足:

MAX(CPL,RPL)≤DPL圖15.16不同特權(quán)級訪問數(shù)據(jù)段舉例內(nèi)核圖15.17保護(hù)環(huán)0級1級2級3級操作系統(tǒng)數(shù)據(jù)庫管理等應(yīng)用程序任務(wù)A的局部地址空間任務(wù)B的局部地址空間任務(wù)C的局部地址空間全局地址空間15.4.2保護(hù)模式的中斷和異常操作為了支持任務(wù)和虛擬存儲器等功能,在工作于保

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論