版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第16章80x86/Pentium保護(hù)模式原理與結(jié)構(gòu)本章主要內(nèi)容80x86/Pentium處理器保護(hù)模式的基本概念。保護(hù)模式的主要數(shù)據(jù)結(jié)構(gòu)。保護(hù)模式的存儲(chǔ)管理和地址轉(zhuǎn)換、多任務(wù)和保護(hù)。保護(hù)模式的中斷和異常操作。15.1保護(hù)模式概述
保護(hù)模式是80x86/Pentium最常用的工作模式,通常在開(kāi)機(jī)或復(fù)位后,先進(jìn)入實(shí)模式完成初始化,然后便立即轉(zhuǎn)到保護(hù)模式。保護(hù)模式提供了多任務(wù)環(huán)境中各種復(fù)雜功能以及對(duì)復(fù)雜存儲(chǔ)器組織的管理機(jī)制。只有在保護(hù)模式下,處理器才能充分發(fā)揮其強(qiáng)大的功能和本性,因此,也稱保護(hù)模式為本性模式。所謂保護(hù),主要是指對(duì)存儲(chǔ)器的保護(hù),即防止對(duì)存儲(chǔ)器資源進(jìn)行未經(jīng)授權(quán)或不正確的訪問(wèn)。概括而言,保護(hù)模式具有如下特點(diǎn):1.在保護(hù)模式下,其尋址機(jī)制不同于實(shí)模式,需要通過(guò)一種稱為“描述符表”的數(shù)據(jù)結(jié)構(gòu)來(lái)實(shí)現(xiàn)對(duì)內(nèi)存單元的訪問(wèn)。描述符表中的描述符含有存儲(chǔ)器段的位置、長(zhǎng)度、類型及訪問(wèn)權(quán)限等信息。2.與實(shí)模式下段寄存器的內(nèi)容即為段的實(shí)際基地址不同,保護(hù)模式下的段寄存器作為索引“描述符表”的變址寄存器來(lái)使用,即由它指向“描述符表”的某一項(xiàng),而實(shí)際的段基址則放在段描述符中,此時(shí)段寄存器的內(nèi)容稱為“段選擇符”(也稱段選擇子)??梢?jiàn),在保護(hù)模式下,微處理器訪問(wèn)存儲(chǔ)器段時(shí)對(duì)段寄存器的解釋與實(shí)模式并不相同。3.在保護(hù)模式下,借助于存儲(chǔ)器管理部件(MMU)的功能將磁盤等存儲(chǔ)設(shè)備有效地映射到主存,使邏輯地址空間大大超過(guò)實(shí)際的物理地址空間。4.可以使用4級(jí)保護(hù)功能,以此實(shí)現(xiàn)程序與程序、用戶程序與操作系統(tǒng)之間的隔離和保護(hù),為多任務(wù)操作系統(tǒng)提供優(yōu)化支持。15.2保護(hù)模式的主要數(shù)據(jù)結(jié)構(gòu)15.2.1段描述符在保護(hù)模式下,把有關(guān)一個(gè)段的信息即段基址、限長(zhǎng)(段的字節(jié)數(shù))、類型、訪問(wèn)權(quán)限和其他屬性信息存放在8字節(jié)長(zhǎng)的數(shù)據(jù)結(jié)構(gòu)中,這種數(shù)據(jù)結(jié)構(gòu)稱為“段描述符”,簡(jiǎn)稱描述符(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),它對(duì)應(yīng)一個(gè)任務(wù)的各種信息。15.2.2描述符表為了查找和識(shí)別,把系統(tǒng)中的描述符按線性表的形式來(lái)組織,即構(gòu)成描述符表。描述符表的每一項(xiàng)就是一個(gè)描述符。描述符表由操作系統(tǒng)建立,并由操作系統(tǒng)維護(hù)和管理。有三種類型的描述符表:全局描述符表GDT、局部描述符表LDT和中斷描述符表IDT。全局描述符表GDT含有可供系統(tǒng)中所有任務(wù)使用的段描述符。局部描述符表LDT只含有與系統(tǒng)中某一個(gè)給定任務(wù)相關(guān)聯(lián)的描述符。中斷描述符表IDT含有指出各中斷服務(wù)程序位置及相關(guān)屬性信息的描述符。采用描述符表帶來(lái)的優(yōu)點(diǎn)如下:
1.
可以極大地?cái)U(kuò)展存儲(chǔ)空間。
2.
可以實(shí)現(xiàn)虛擬存儲(chǔ)。
3.
可以實(shí)現(xiàn)多任務(wù)隔離。由于描述符表是位于存儲(chǔ)器中的,因此系統(tǒng)中分別用一個(gè)寄存器來(lái)指出其位置,并稱該寄存器為描述符表寄存器。共有三個(gè)描述符表寄存器,分別是全局描述符表寄存器GDTR、局部描述符表寄存器LDTR和中斷描述符表寄存器IDTR。15.2.3段選擇符每個(gè)段描述符都有一個(gè)與之對(duì)應(yīng)的段選擇符。在保護(hù)模式下,16位段寄存器的內(nèi)容即為段選擇符。段選擇符對(duì)GDT或LDT提供索引、全局/局部標(biāo)志以及請(qǐng)求特權(quán)級(jí)信息。即用段選擇符的高13位來(lái)選擇描述符表中8192個(gè)描述符中的一個(gè)描述符(213=8192),用段選擇符的右數(shù)第3位決定是從GDT中還是從LDT中選擇描述符,用段選擇符的最低兩位指出請(qǐng)求特權(quán)級(jí)。注意,段選擇符并不直接指向段,而是指向定義段的段描述符。段選擇符的格式及功能如圖15.1所示。153201全局描述符表局部描述符表段選擇符(16位)圖15.1段選擇符的格式及功能現(xiàn)對(duì)段選擇符各字段的含義解釋如下:索引:位15~3。在全局描述符表GDT或局部描述符表LDT的8192個(gè)描述符中選擇一個(gè)描述符。處理器將索引值乘8,再加上GDT或LDT的基址,結(jié)果用來(lái)選擇一個(gè)段描述符。TI:位2。表指示器,指定要用的描述符表,該位復(fù)位時(shí),選擇GDT;該位置位時(shí),選擇LDT。RPL:位1~0。請(qǐng)求特權(quán)級(jí),指定選擇符的特權(quán)級(jí)。特權(quán)級(jí)為0~3,為0時(shí)特權(quán)級(jí)最高。例15.1
假定LDT的基址為00120000H,GDT的基址為00100000H。如果裝入CS寄存器的選擇符的值為1007H,那么請(qǐng)求特權(quán)級(jí)是多少?是GDT還是LDT的段描述符?段描述符的地址是什么?解將選擇符用二進(jìn)制表示,得到CS=0001000000000111B,由于最低兩位為11,所以請(qǐng)求特權(quán)級(jí)RPL=3。
右數(shù)第3位(表指示器TI位)為1,說(shuō)明段描述符位于LDT中。將最左13位的值乘以8,即可得到描述符相對(duì)于表基址的偏移量:偏移量OFFSET=0001000000000B×8=1000H;
段描述符地址為:00120000H+1000H=00121000H。15.3
保護(hù)模式的存儲(chǔ)器管理和地址轉(zhuǎn)換微處理器保護(hù)模式的軟件體系結(jié)構(gòu)還與存儲(chǔ)器的組織和管理密切相關(guān)。傳統(tǒng)上,是由單獨(dú)的存儲(chǔ)管理部MMU(專門的集成電路芯片)來(lái)實(shí)現(xiàn)存儲(chǔ)管理功能。在這種情況下,如果程序訪問(wèn)的地址不在當(dāng)前MMU管理范圍內(nèi),就會(huì)出現(xiàn)故障,產(chǎn)生一個(gè)出錯(cuò)信號(hào),并將控制交給操作系統(tǒng),由操作系統(tǒng)運(yùn)行一些專門的程序進(jìn)行故障處理。這樣,不但會(huì)減慢系統(tǒng)速度,而且又給操作系統(tǒng)設(shè)計(jì)帶來(lái)麻煩。15.3.1物理地址、線性地址與邏輯地址處理器在其地址總線上實(shí)際送出的地址為物理地址。在保護(hù)模式下,常規(guī)的物理地址空間為4GB(232字節(jié))。該地址空間是平面的,連續(xù)地址范圍是0~FFFFFFFFH。該物理地址空間可以映射成隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM以及存儲(chǔ)器映像的I/O地址。PentiumⅡ、PentiumⅢ系列處理器可以將物理地址空間擴(kuò)展到236字節(jié)(64GB),其最大物理地址為FFFFFFFFFH。該擴(kuò)展是由處理器內(nèi)部的控制寄存器CR4的第5位即物理地址擴(kuò)展(PAE)標(biāo)志來(lái)激活。編寫程序時(shí),程序中所指定的地址不是物理地址,而是二維的邏輯地址,亦稱虛擬地址。分段機(jī)制將邏輯地址轉(zhuǎn)換為一維的中間地址,這種中間地址稱為線性地址。15.3.2虛擬地址和虛擬地址空間保護(hù)模式的存儲(chǔ)器管理部件使用48位的存儲(chǔ)器指針,它又分為兩部分:選擇符和偏移量。該48位的存儲(chǔ)器指針即為虛擬地址或邏輯地址。如圖15.2所示,選擇符16位長(zhǎng),偏移量32位長(zhǎng)。前面曾談到選擇符可放在80386DX的段選擇符寄存器中。
圖15.2保護(hù)模式存儲(chǔ)器指針圖15.3說(shuō)明了16位的選擇符又分為13位索引、1位表指示器(TI)和2位請(qǐng)求特權(quán)級(jí)(RPL)。其中2位的RPL并不用于存儲(chǔ)器段選擇,因此,16位中只有14位用于尋址,這樣,虛擬地址空間可容納214(16384=16K)個(gè)存儲(chǔ)器段,每個(gè)段最大可達(dá)4G字節(jié)。
圖15.3段選擇符格式另外一種查看虛擬地址空間大小的辦法是將14位段選擇符和32位偏移量結(jié)合起來(lái),得到46位虛擬地址,從而80386DX虛擬地址空間可包含246(64T)個(gè)字節(jié)。15.3.3虛擬地址空間的分段80386DX的存儲(chǔ)器管理部件實(shí)現(xiàn)了虛存的分段和分頁(yè)模型。在分段模型中,64T字節(jié)虛擬地址空間分成了32T字節(jié)的全局存儲(chǔ)器地址空間和32T字節(jié)的局部存儲(chǔ)器地址空間。該劃分大致可見(jiàn)圖15.4。圖15.3中所示的選擇符的TI位用來(lái)選擇是全局還是局部描述符表。每個(gè)地址空間最多為8192個(gè)存儲(chǔ)器段。圖15.4虛擬地址空間的劃分局部地址空間32T字節(jié)全局地址空間32T字節(jié)虛擬地址空間64T字節(jié)在80386DX的多任務(wù)軟件環(huán)境中,一個(gè)應(yīng)用通常表示為一些任務(wù)的集合。這里所說(shuō)的任務(wù)指共同完成某項(xiàng)功能的多個(gè)程序的集合。當(dāng)80386DX啟動(dòng)一個(gè)任務(wù)時(shí),它可以激活全局存儲(chǔ)器段或局部存儲(chǔ)器段。該想法如圖15.5所示。注意任務(wù)1、2、3各自都有一個(gè)局部地址空間。這部分存儲(chǔ)器中的數(shù)據(jù)和代碼只能被相應(yīng)的任務(wù)訪問(wèn),即任務(wù)2不能訪問(wèn)任務(wù)1的局部地址空間中任何信息。另外,所有任務(wù)都共享全局地址空間。這部分通常包含被所有任務(wù)共享的操作系統(tǒng)資源和數(shù)據(jù)。任務(wù)1的局部地址空間全局地址空間任務(wù)3的局部地址空間任務(wù)2的局部地址空間圖15.5一個(gè)任務(wù)的全局和局部存儲(chǔ)區(qū)任務(wù)3的虛擬地址空間任務(wù)1的虛擬地址空間任務(wù)2的虛擬地址空間15.3.4物理地址空間和虛實(shí)地址轉(zhuǎn)換80386DX的分段和分頁(yè)存儲(chǔ)管理機(jī)制允許將48位虛擬地址映射到硬件所需的32位物理地址。該地址轉(zhuǎn)換過(guò)程大致可見(jiàn)圖15.6。首先是對(duì)虛擬(邏輯)地址進(jìn)行段轉(zhuǎn)換。然后,如果禁用分頁(yè)機(jī)制,則產(chǎn)生的線性地址就是物理地址。如果允許分頁(yè)機(jī)制,線性地址再經(jīng)過(guò)頁(yè)轉(zhuǎn)換產(chǎn)生物理地址。選擇符偏移量段轉(zhuǎn)換頁(yè)轉(zhuǎn)換邏輯地址015031PG=0?禁止分頁(yè)線性地址物理地址允許分頁(yè)031圖15.6邏輯地址到物理地址的轉(zhuǎn)換03115.3.5
段式地址轉(zhuǎn)換假定關(guān)閉了分頁(yè)機(jī)制,在這種情況下發(fā)生的地址轉(zhuǎn)換過(guò)程如圖15.7
中的深顏色部分所示。圖15.8
表示段轉(zhuǎn)換過(guò)程中進(jìn)行的操作。前面曾指出過(guò)80386DX的段選擇符寄存器CS、DS、ES、FS、GS和SS提供的段選擇符可用來(lái)選擇是進(jìn)入全局描述符表還是局部描述符表。當(dāng)選擇符值裝入段寄存器時(shí),由TI位選中的描述符表中的描述符自動(dòng)從存儲(chǔ)器取出并裝入相應(yīng)段描述符緩存寄存器中。注意,定義段基址、大小和屬性的是描述符而非選擇符。選擇符偏移量段轉(zhuǎn)換頁(yè)轉(zhuǎn)換邏輯地址015031PG=0?禁止分頁(yè)線性地址物理地址允許分頁(yè)031圖15.7禁止分頁(yè)時(shí)邏輯地址到物理地址的轉(zhuǎn)換031圖15.8邏輯地址轉(zhuǎn)換為物理地址的操作從圖15.8中可看到,80386DX對(duì)每個(gè)段選擇符寄存器都有一個(gè)64位的內(nèi)部段描述符高速緩存寄存器。這些高速緩存寄存器不能被編程者訪問(wèn)。指令執(zhí)行時(shí)它們被透明地裝入段描述符。從圖15.9可以看到,高速緩存寄存器中的段描述符分為三部分:12位的訪問(wèn)權(quán)限信息、32位的段基址和20位的段限長(zhǎng)。32位的段基址確定了要訪問(wèn)段的起始位置。對(duì)于數(shù)據(jù)段而言,給數(shù)據(jù)段描述符高速緩存寄存器裝入相應(yīng)值就實(shí)現(xiàn)了從16位選擇符到對(duì)應(yīng)的32位數(shù)據(jù)段基址的映像。
圖15.9段選擇符寄存器及描述符高速緩存寄存器數(shù)據(jù)段中操作數(shù)的位置由邏輯地址中偏移量來(lái)確定。例如,假定下一條執(zhí)行的指令要求訪問(wèn)數(shù)據(jù)段中的操作數(shù),并且該指令使用基址尋址方式規(guī)定操作數(shù),那么EBX寄存器中裝的就是操作數(shù)相對(duì)于數(shù)據(jù)段基址的偏移量。圖15.10給出了根據(jù)段選擇符從描述符表中得到段基址然后加上偏移量從而形成32位線性(物理)地址的具體操作過(guò)程示意圖。由該圖可見(jiàn),先根據(jù)段選擇符中的TI位選中GDT(TI=0)或LDT(TI=1),再由選擇符的高13位提供的索引值在某個(gè)描述符表中選中一個(gè)段描述符。段描述符提供一個(gè)32位的段基址,將此段基址加上偏移量就得到了線性地址。在禁止分頁(yè)的情況下,線性地址就是物理地址。選擇符偏移量邏輯地址01503101215063TI=0TI=1段基址063031線形地址031圖15.10線性地址形成過(guò)程示意圖例15.2
假定在圖15.10中的邏輯地址由段選擇符0100H和偏移量00002000H組成,從描述符中讀出的段基址為00030000H,若禁止分頁(yè),則操作數(shù)的物理地址是多少?解
邏輯地址=0100:00002000H物理地址=段基址+偏移量=00030000H+00002000H=00032000H15.3.6頁(yè)式地址轉(zhuǎn)換80386DX的保護(hù)模式體系結(jié)構(gòu)也支持存儲(chǔ)器地址空間的分頁(yè)組織。分頁(yè)存儲(chǔ)管理機(jī)制在分段存儲(chǔ)管理機(jī)制下工作,如果允許分頁(yè),則80386DX的地址空間組織又有所不同。如果不用分頁(yè),則每個(gè)段最多可以分配4G字節(jié)的物理地址空間,最少1字節(jié)。如果用了分頁(yè),則物理地址空間被劃分成1048496(1M)頁(yè),每頁(yè)4096(4K)字節(jié)長(zhǎng)。圖15.11表示物理地址空間按這種方式的組織形式。4K4K4K4K4K圖15.11物理地址空間的分頁(yè)管理分頁(yè)存儲(chǔ)器的這種固定大小的塊有一個(gè)缺點(diǎn),就是存儲(chǔ)管理程序每次分配都最少是4K字節(jié),即使它們并不全用。這些未用的存儲(chǔ)器區(qū)域稱為碎片。碎片導(dǎo)致存儲(chǔ)器使用效率降低,但是分頁(yè)大大簡(jiǎn)化了存儲(chǔ)管理程序的實(shí)現(xiàn)。從圖15.12可以看到,在允許分頁(yè)的情況下,段轉(zhuǎn)換過(guò)程所產(chǎn)生的線性地址不再用作物理地址,它還要經(jīng)過(guò)稱為“頁(yè)轉(zhuǎn)換”的第二個(gè)轉(zhuǎn)換過(guò)程。圖15.12線形地址到物理地址的分頁(yè)轉(zhuǎn)換選擇符偏移量段轉(zhuǎn)換頁(yè)轉(zhuǎn)換邏輯地址015031PG=0?禁止分頁(yè)線性地址物理地址允許分頁(yè)031031圖15.13給出了在進(jìn)行頁(yè)轉(zhuǎn)換時(shí)線性地址的具體格式,它由三部分組成:10位的頁(yè)目錄域,10位的頁(yè)表域及12位的偏移量域。通過(guò)后邊的介紹我們將會(huì)看到,這三部分分別為頁(yè)目錄項(xiàng)、頁(yè)表項(xiàng)及頁(yè)面中的存儲(chǔ)單元提供各自的偏移量。圖15.13
線性地址格式圖15.14顯示了一個(gè)線性地址怎樣轉(zhuǎn)換成對(duì)應(yīng)的物理地址。存儲(chǔ)器中頁(yè)目錄表的起始地址由控制寄存器CR3中的頁(yè)目錄基址寄存器(PDBR)確定。PDBR實(shí)際上是CR3的高20位,CR3的低12位始終為0,即頁(yè)目錄表的選取總是從4K字節(jié)的邊界處開(kāi)始。頁(yè)目錄表為4K字節(jié)長(zhǎng),包含1K個(gè)32位的頁(yè)目錄項(xiàng)。每個(gè)頁(yè)目錄項(xiàng)中的物理基址指向一個(gè)物理存儲(chǔ)器中的頁(yè)表。圖15.14頁(yè)式地址轉(zhuǎn)換過(guò)程示意圖1211031222180386DX轉(zhuǎn)換檢測(cè)緩沖器(TLB)操作數(shù)頁(yè)表項(xiàng)
物理存儲(chǔ)器頁(yè)目錄表(4K,1024項(xiàng))●●●●●頁(yè)目錄項(xiàng)031PDBR(CR3)●●●頁(yè)表(4K,1024項(xiàng))頁(yè)(4K,字節(jié))頁(yè)目錄項(xiàng)和頁(yè)表項(xiàng)的格式相同,圖15.15給出了它們的具體情形。從圖15.14已經(jīng)看到,它們均可被緩存于轉(zhuǎn)換旁視緩沖器TLB中。圖15.15頁(yè)目錄項(xiàng)和頁(yè)表項(xiàng)格式對(duì)頁(yè)目錄項(xiàng)和頁(yè)表項(xiàng)中所含信息解釋:1.物理基址:如為頁(yè)目錄項(xiàng),則為頁(yè)表的物理起始地址,即頁(yè)表基地址;如為頁(yè)表項(xiàng),則為頁(yè)的物理起始地址,即頁(yè)基地址。注意,頁(yè)目錄項(xiàng)或頁(yè)表項(xiàng)只提供基地址的高20位(第12位至31位),低12位設(shè)定0,這樣,頁(yè)表或頁(yè)總是定位于4K字節(jié)地址的邊界處。2.
存在標(biāo)志位P:若P=1,則對(duì)應(yīng)的頁(yè)表或頁(yè)存在于主存儲(chǔ)器中;若P=0,則對(duì)應(yīng)的頁(yè)表或頁(yè)不在主存儲(chǔ)器中,使用時(shí)會(huì)出現(xiàn)頁(yè)故障,控制寄存器CR2就是用來(lái)保存頁(yè)故障線性地址的寄存器。產(chǎn)生頁(yè)故障時(shí),操作系統(tǒng)會(huì)將此頁(yè)表或頁(yè)從外存(一般為磁盤存儲(chǔ)器)調(diào)入內(nèi)存中來(lái),并重新啟動(dòng)剛才引起頁(yè)故障的指令。當(dāng)然,這些操作對(duì)應(yīng)用程序而言是完全透明的。3.訪問(wèn)標(biāo)志位A:當(dāng)對(duì)某一個(gè)頁(yè)表或頁(yè)進(jìn)行訪問(wèn)時(shí),處理器將該標(biāo)志位置1,并保持為1。A位為系統(tǒng)提供本頁(yè)表或頁(yè)的使用情況信息,從而幫助操作系統(tǒng)在進(jìn)行頁(yè)面調(diào)度時(shí)選擇哪一頁(yè)應(yīng)當(dāng)從內(nèi)存中調(diào)出,一般是選長(zhǎng)期未用過(guò)的頁(yè)或近期最少使用的頁(yè)調(diào)出。在實(shí)際運(yùn)行中,當(dāng)頁(yè)表或頁(yè)在一開(kāi)始裝入到內(nèi)存時(shí),所有頁(yè)目錄項(xiàng)及頁(yè)表項(xiàng)的A位均被清0。
操作系統(tǒng)定期掃描這些表項(xiàng),如發(fā)現(xiàn)A位為1,就知道對(duì)應(yīng)頁(yè)表或頁(yè)被訪問(wèn)過(guò),操作系統(tǒng)據(jù)此增加該頁(yè)對(duì)應(yīng)的“訪問(wèn)次數(shù)記錄”,當(dāng)需要調(diào)出一頁(yè)時(shí),長(zhǎng)期未用的頁(yè)和近期使用最少的頁(yè)被選中。4.頁(yè)面寫標(biāo)志位D:D位只用于頁(yè)表項(xiàng),如果所指頁(yè)中任一個(gè)地址執(zhí)行了寫操作,則該標(biāo)志位置1。D標(biāo)志位有時(shí)形象地稱之為臟位(Dirty)。當(dāng)一頁(yè)從磁盤調(diào)入內(nèi)存時(shí),由操作系統(tǒng)的存儲(chǔ)器管理軟件將D位清0,以后,當(dāng)對(duì)此頁(yè)進(jìn)行寫操作時(shí),處理器將該位置1,并保持為1。
當(dāng)選中某頁(yè)調(diào)往磁盤時(shí),若檢測(cè)到對(duì)應(yīng)的D位仍為0,則說(shuō)明此頁(yè)一直沒(méi)被寫過(guò),所以不需要往磁盤重寫,從而使調(diào)出過(guò)程變得十分簡(jiǎn)單。D位對(duì)頁(yè)目錄項(xiàng)無(wú)意義。在頁(yè)式虛存系統(tǒng)中,操作系統(tǒng)可通過(guò)A和D位來(lái)跟蹤頁(yè)的使用情況。5.用戶/系統(tǒng)位U/S:若U/S=0,則用戶程序不能訪問(wèn)該頁(yè);U/S=1,才允許用戶程序讀/寫該頁(yè)。這是為了保護(hù)操作系統(tǒng)所使用的頁(yè)面不受用戶程序的破壞而設(shè)置的。6.讀/寫標(biāo)志位R/W:為頁(yè)表或頁(yè)指定讀、寫權(quán)限。若R/W=0,為只讀;R/W=1,為可讀/寫。7.
保留位AVL(3位):可被編程者使用。注意頁(yè)目錄項(xiàng)中指定的保護(hù)屬性對(duì)頁(yè)表所指向的所有頁(yè)都適用,但是頁(yè)表項(xiàng)指定的屬性只適用于它定義的頁(yè)。只有在頁(yè)目錄項(xiàng)和頁(yè)表項(xiàng)中的U/S位都為1時(shí),一個(gè)用戶程序才能讀對(duì)應(yīng)的頁(yè);同樣,只有兩個(gè)表項(xiàng)的U/S和R/W都為1時(shí),用戶程序才能讀/寫對(duì)應(yīng)頁(yè)。如果違反了操作規(guī)則,則將引起頁(yè)故障。例15.3
如果某一活動(dòng)頁(yè)的頁(yè)目錄項(xiàng)是F1000007H,頁(yè)表項(xiàng)是01000005H,則該頁(yè)被指定的是用戶級(jí)還是系統(tǒng)級(jí)?用戶級(jí)或系統(tǒng)級(jí)所允許的訪問(wèn)權(quán)限是什么?解
首先將頁(yè)目錄項(xiàng)用二進(jìn)制形式表示,得到:F1000007H=11110001000000000000000000000111B
可見(jiàn),頁(yè)保護(hù)位為U/SR/W=11,即給頁(yè)指定的是用戶級(jí)和可讀/寫權(quán)限。再將頁(yè)表項(xiàng)用二進(jìn)制形式表示:
01000005H=00000001000000000000000000000101B
發(fā)現(xiàn):U/SR/W=10,它定義頁(yè)為用戶級(jí),只讀。由于頁(yè)表項(xiàng)定義的頁(yè)屬性更具有約束性(更嚴(yán)格),所以它是有效的。即用戶軟件(應(yīng)用程序)只能讀取該頁(yè)中的數(shù)據(jù)。15.3.7轉(zhuǎn)換旁視緩沖器TLB(快表)轉(zhuǎn)換旁視緩沖器TLB實(shí)際上是置于處理器內(nèi)部的小型高速緩沖存儲(chǔ)器,在采用分頁(yè)機(jī)制進(jìn)行線性地址到物理地址轉(zhuǎn)換時(shí),用以緩存從存儲(chǔ)器中讀出的頁(yè)目錄項(xiàng)和頁(yè)表項(xiàng)。與通常的高速緩存(Cache)技術(shù)相同,TLB也是基于程序訪問(wèn)的局部性原理進(jìn)行工作的。TLB中共可緩存8至1024個(gè)最近使用過(guò)的頁(yè)表項(xiàng),通過(guò)操作系統(tǒng)的跟蹤來(lái)實(shí)現(xiàn)這些表項(xiàng)的保持和更新。在操作系統(tǒng)的技術(shù)術(shù)語(yǔ)中,常將TLB稱為“快表”,而把主存中的頁(yè)目錄表或頁(yè)表稱為“慢表”。15.4
多任務(wù)和保護(hù)80x86/Pentium微處理器實(shí)現(xiàn)了多任務(wù)的軟件體系結(jié)構(gòu)。這里的多任務(wù)是指其硬件允許軟件系統(tǒng)中存在多個(gè)任務(wù)并能夠以分時(shí)的方式執(zhí)行。也就是說(shuō),程序控制在經(jīng)過(guò)一固定的時(shí)間間隔后從一個(gè)任務(wù)切換到另一個(gè)任務(wù)。比如,任務(wù)可以循環(huán)方式(round-robin)執(zhí)行,即最近執(zhí)行的任務(wù)回到要執(zhí)行任務(wù)清單的末尾。盡管該過(guò)程是以分時(shí)的形式進(jìn)行,但處理器執(zhí)行起來(lái)還是會(huì)讓用戶覺(jué)得所有任務(wù)都是同時(shí)運(yùn)行。當(dāng)一個(gè)任務(wù)調(diào)入運(yùn)行時(shí),它既有全局存儲(chǔ)器資源又有局部存儲(chǔ)器資源。局部存儲(chǔ)器地址空間按任務(wù)進(jìn)行劃分,即每個(gè)任務(wù)一般都有它自己的局部存儲(chǔ)器段。全局存儲(chǔ)器中的段可被所有任務(wù)共享。從而,一個(gè)任務(wù)可以訪問(wèn)全局存儲(chǔ)器中的任意一段。如圖15.5所示,任務(wù)1、2、3既有專用地址空間又有全局地址空間。15.4.1保護(hù)和特權(quán)級(jí)可以在保護(hù)模式的軟件系統(tǒng)中加入防護(hù)措施以防止任務(wù)的存儲(chǔ)器資源未經(jīng)授權(quán)或不正確訪問(wèn),這種存儲(chǔ)器防護(hù)措施稱為保護(hù)。80x86/Pentium處理器的硬件實(shí)現(xiàn)了一種保護(hù)機(jī)制,在多任務(wù)環(huán)境下,該機(jī)制對(duì)任務(wù)的局部和系統(tǒng)資源的訪問(wèn)作了限制,使得各個(gè)任務(wù)之間隔離開(kāi)來(lái)。段、頁(yè)和描述符是80x86/Pentium處理器保護(hù)機(jī)制的關(guān)鍵元素。當(dāng)采用分段存儲(chǔ)器管理模型時(shí),段是具有特定保護(hù)屬性的虛擬存儲(chǔ)器地址空間中的最小單位。其保護(hù)屬性由段描述符中的訪問(wèn)權(quán)限信息和段限長(zhǎng)字段定義。另外,在存儲(chǔ)器訪問(wèn)過(guò)程中硬件保護(hù)機(jī)制要執(zhí)行一系列檢查,例如類型檢查、限長(zhǎng)檢查、地址域限制、過(guò)程入口點(diǎn)限制以及指令集限制等。為了實(shí)施特權(quán)級(jí)檢查,處理器識(shí)別下述三類特權(quán)級(jí):①描述符特權(quán)級(jí)DPL。每一個(gè)描述符包含一個(gè)描述符特權(quán)級(jí)DPL。它存放在段或門描述符的DPL字段中。它表明了什磨樣的特權(quán)級(jí)程序可以使用這個(gè)段。②當(dāng)前特權(quán)級(jí)CPL。CPL是當(dāng)前正在執(zhí)行的程序或任務(wù)的特權(quán)級(jí),它保存在CS寄存器的第0和1位。任何時(shí)候,處理器總是在某一個(gè)特權(quán)級(jí)上運(yùn)行,當(dāng)前特權(quán)級(jí)CPL確定了正在執(zhí)行的程序或任務(wù)的特權(quán)級(jí)。當(dāng)程序控制被轉(zhuǎn)移到不同特權(quán)級(jí)的代碼段時(shí),處理器就改變CPL。
如果CPL比所訪問(wèn)段的特權(quán)級(jí)DPL低,就會(huì)產(chǎn)生異常。用公式表示,即要求:
CPL≤DPL③請(qǐng)求特權(quán)級(jí)RPL(requestorprivilegelevel)。RPL是分配給段選擇符的特權(quán)級(jí),保存在段寄存器的第0和第1位。請(qǐng)求特權(quán)級(jí)表明了程序要求以什磨樣的特權(quán)級(jí)來(lái)訪問(wèn)這個(gè)段。它和DPL的關(guān)系類似于CPL和DPL的關(guān)系,即要求:
RPL≤DPL處理器將RPL與CPL一道檢查,確定是否允許訪問(wèn)某個(gè)段??捎媒y(tǒng)一的公式表示,即應(yīng)滿足:
MAX(CPL,RPL)≤DPL圖15.16不同特權(quán)級(jí)訪問(wèn)數(shù)據(jù)段舉例內(nèi)核圖15.17保護(hù)環(huán)0級(jí)1級(jí)2級(jí)3級(jí)操作系統(tǒng)數(shù)據(jù)庫(kù)管理等應(yīng)用程序任務(wù)A的局部地址空間任務(wù)B的局部地址空間任務(wù)C的局部地址空間全局地址空間15.4.2保護(hù)模式的中斷和異常操作為了支持任務(wù)和虛擬存儲(chǔ)器等功能,在工作于保
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《安全感悟分享》課件
- 《職業(yè)適應(yīng)與發(fā)展》課件
- 《生產(chǎn)安全事故應(yīng)急》課件
- 2024教師發(fā)言稿(34篇)
- 藝術(shù)與人生和社會(huì)的關(guān)系
- 單位管理制度匯編大全【人事管理】
- 單位管理制度分享合集【人員管理篇】十篇
- 單位管理制度分享大合集【人員管理】十篇
- 單位管理制度范文大合集【員工管理篇】十篇
- 單位管理制度呈現(xiàn)大全【人員管理】
- 安全生產(chǎn)培訓(xùn)法律法規(guī)
- 廣東省廣州市2021-2022學(xué)年高二上學(xué)期期末五校聯(lián)考生物試題
- 2024年領(lǐng)導(dǎo)干部任前廉政知識(shí)考試測(cè)試題庫(kù)及答案
- 舞蹈演出編導(dǎo)排練合同模板
- 融資合作法律意見(jiàn)
- 中醫(yī)辨證-八綱辨證(中醫(yī)學(xué)課件)
- 冠脈介入進(jìn)修匯報(bào)
- 蔣詩(shī)萌小品《誰(shuí)殺死了周日》臺(tái)詞完整版
- 生涯發(fā)展展示
- 整改回復(fù)書(shū)樣板后邊附帶圖片
- 建筑小區(qū)生雨水排水系統(tǒng)管道的水力計(jì)算
評(píng)論
0/150
提交評(píng)論