第1章 Pentium保護(hù)模式存儲(chǔ)管理課件_第1頁(yè)
第1章 Pentium保護(hù)模式存儲(chǔ)管理課件_第2頁(yè)
第1章 Pentium保護(hù)模式存儲(chǔ)管理課件_第3頁(yè)
第1章 Pentium保護(hù)模式存儲(chǔ)管理課件_第4頁(yè)
第1章 Pentium保護(hù)模式存儲(chǔ)管理課件_第5頁(yè)
已閱讀5頁(yè),還剩101頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

微型計(jì)算機(jī)原理與接口技術(shù)(第2版)

北京:科學(xué)出版社出版趙宏偉于秀峰黃永平秦貴和計(jì)算機(jī)系統(tǒng)概論一、計(jì)算機(jī)(Computer):1、

概念: 計(jì)算機(jī)是一種以電子器件為基礎(chǔ)的,不需人的直接干預(yù),能夠?qū)Ω鞣N數(shù)字化信息,進(jìn)行算術(shù)和邏輯運(yùn)算的快速工具。2計(jì)算機(jī)分類:模擬:處理在時(shí)間和數(shù)值上連續(xù)的量數(shù)字:處理離散的量3兩類計(jì)算機(jī)的主要區(qū)別:4數(shù)字計(jì)算機(jī)(電腦)分類:(應(yīng)用范圍)專用計(jì)算機(jī):

為特定應(yīng)用問(wèn)題而設(shè)計(jì)的計(jì)算機(jī),具有經(jīng)濟(jì)、有效和快速等特點(diǎn),但它的使用面較窄。如工控機(jī)等2006年,日本開(kāi)發(fā)出分解質(zhì)因數(shù)專用計(jì)算機(jī),對(duì)200位左右的數(shù)字進(jìn)行質(zhì)因數(shù)分解通用計(jì)算機(jī):通用計(jì)算機(jī)使用面廣,通用性強(qiáng),操作相對(duì)簡(jiǎn)單。5通用機(jī)分類:(規(guī)模)巨型機(jī)(Super-Computer)、大型機(jī)(Mainframe)中型機(jī)(Medium-sizeComputer)、小型機(jī)(minicomputer)、微型機(jī)(microcomputer)、單片機(jī)(Single-ChipComputer)二、計(jì)算機(jī)的發(fā)展概況1、第一代計(jì)算機(jī)(1)

1946年第一臺(tái)計(jì)算機(jī)ENIAC~~50年代末(2)

主要特征:電子管作為電子器件(3)

軟件處于初始階段,使用機(jī)器語(yǔ)言與符號(hào)語(yǔ)言編制程序(4)

特點(diǎn):體積大,運(yùn)算速度低,存儲(chǔ)容量小,主要用于科學(xué)計(jì)算。前進(jìn)返回第一臺(tái)電子數(shù)字計(jì)算機(jī)ENIACENIAC的特點(diǎn):采用十進(jìn)制20個(gè)10位的累加器用開(kāi)關(guān)手動(dòng)編程18,000個(gè)電子管重30噸占地170平方米耗電140KW5,000次/秒加法運(yùn)算返回2、第二代計(jì)算機(jī)(1)

50年代末~~60年代初(2)

主要特征:晶體管作為電子器件(3)

軟件方面開(kāi)始使用計(jì)算機(jī)高級(jí)語(yǔ)言(4)

特點(diǎn):體積減小,重量輕、壽命長(zhǎng)、耗電少、運(yùn)算速度快、存儲(chǔ)容量比較大等優(yōu)點(diǎn)。不僅用于科學(xué)計(jì)算,還用于數(shù)據(jù)處理和事務(wù)處理,并逐漸用于工業(yè)控制。下一頁(yè)返回由半導(dǎo)體材料構(gòu)成3、第三代計(jì)算機(jī)(1)

60年代中期~~70年代初期(2)

主要特征:中、小規(guī)模集成電路作為電子器件(3)

操作系統(tǒng)的出現(xiàn)(4)

特點(diǎn):體積與功耗都得到了進(jìn)一步的減小,可靠性和運(yùn)算速度進(jìn)一步提高。不僅用于科學(xué)計(jì)算,還用于文字處理、企業(yè)管理、自動(dòng)控制等領(lǐng)域,出現(xiàn)了管理信息系統(tǒng),可用于生產(chǎn)管理、交通管理、情報(bào)檢索等領(lǐng)域。4、第四代計(jì)算機(jī)(1)70年代初~~今(2)主要特征:大規(guī)模與超大規(guī)模集成電路作為電子器件(3)軟件越來(lái)越豐富,并且功能強(qiáng)大(4)特點(diǎn):計(jì)算機(jī)在各種性能上都得到了大幅度提高。1971年以來(lái),作為第四代計(jì)算機(jī)重要產(chǎn)品的微型計(jì)算機(jī)得到了飛速的發(fā)展,對(duì)計(jì)算機(jī)的普及起到了決定性的作用。以微機(jī)為例,IBMPC8088—80286—80386—80486—Pentium5、未來(lái)的計(jì)算機(jī) 以超大規(guī)模集成電路為基礎(chǔ),未來(lái)的計(jì)算機(jī)將向巨型化、微型化、網(wǎng)絡(luò)化與智能化的方向發(fā)展。我國(guó)計(jì)算機(jī)的發(fā)展1華羅庚和我國(guó)第一個(gè)計(jì)算機(jī)科研小組

華羅庚教授1950年回國(guó),1952年在全國(guó)大學(xué)院系調(diào)整時(shí),他從清華大學(xué)電機(jī)系物色了閔乃大、夏培肅和王傳英三位科研人員在他任所長(zhǎng)的中國(guó)科學(xué)院數(shù)學(xué)所內(nèi)建立了中國(guó)第一個(gè)電子計(jì)算機(jī)科研小組。1956年籌建中科院計(jì)算技術(shù)研究所時(shí),華羅庚教授擔(dān)任籌備委員會(huì)主任。

2第一代電子管計(jì)算機(jī)研制(1958-1964年)

我國(guó)從1957年開(kāi)始研制通用數(shù)字電子計(jì)算機(jī),1958年8月1日該機(jī)可以表演短程序運(yùn)行,標(biāo)志著我國(guó)第一臺(tái)電子計(jì)算機(jī)誕生。為紀(jì)念這個(gè)日子,該機(jī)定名為八一型數(shù)字電子計(jì)算機(jī)。該機(jī)在738廠開(kāi)始小量生產(chǎn),改名為103型計(jì)算機(jī)(即DJS-1型),共生產(chǎn)38臺(tái)。1031041071192第二代晶體管計(jì)算機(jī)研制(1965-1972年)我國(guó)在研制第一代電子管計(jì)算機(jī)的同時(shí),已開(kāi)始研制晶體管計(jì)算機(jī),1965年研制成功的我國(guó)第一臺(tái)大型晶體管計(jì)算機(jī)(109乙機(jī))實(shí)際上從1958年起計(jì)算所就開(kāi)始醞釀啟動(dòng)。在國(guó)外禁運(yùn)條件下要造晶體管計(jì)算機(jī),必須先建立一個(gè)生產(chǎn)晶體管的半導(dǎo)體廠(109廠)。經(jīng)過(guò)兩年努力,109廠就提供了機(jī)器所需的全部晶體管(109乙機(jī)共用2萬(wàn)多支晶體管,3萬(wàn)多支二極管)。對(duì)109乙機(jī)加以改進(jìn),兩年后又推出109丙機(jī),為用戶運(yùn)行了15年,有效算題時(shí)間10萬(wàn)小時(shí)以上,在我國(guó)兩彈試驗(yàn)中發(fā)揮了重要作用,被用戶譽(yù)為“功勛機(jī)”。

1093第三代基于中小規(guī)模集成電路的計(jì)算機(jī)研制(1973-80年代初)

我國(guó)第三代計(jì)算機(jī)的研制受到文化大革命的沖擊。IBM公司1964年推出360系列大型機(jī)是美國(guó)進(jìn)入第三代計(jì)算機(jī)時(shí)代的標(biāo)志,我國(guó)到1970年初期才陸續(xù)推出大、中、小型采用集成電路的計(jì)算機(jī)。1973年,北京大學(xué)與北京有線電廠等單位合作研制成功運(yùn)算速度每秒100萬(wàn)次的大型通用計(jì)算機(jī)。進(jìn)入80年代,我國(guó)高速計(jì)算機(jī),特別是向量計(jì)算機(jī)有新的發(fā)展。1983年中國(guó)科學(xué)院計(jì)算所完成我國(guó)第一臺(tái)大型向量機(jī)-757機(jī),計(jì)算速度達(dá)到每秒1000萬(wàn)次。

757銀河-I4第四代基于超大規(guī)模集成電路的計(jì)算機(jī)研制(80年代中期至今)

和國(guó)外一樣,我國(guó)第四代計(jì)算機(jī)研制也是從微機(jī)開(kāi)始的。1980年初我國(guó)不少單位也開(kāi)始采用Z80,X86和M6800芯片研制微機(jī)。1983年12電子部六所研制成功與IBMPC機(jī)兼容的DJS-0520微機(jī)。10多年來(lái)我國(guó)微機(jī)產(chǎn)業(yè)走過(guò)了一段不平凡道路,現(xiàn)在以聯(lián)想微機(jī)為代表的國(guó)產(chǎn)微機(jī)已占領(lǐng)一大半國(guó)內(nèi)市場(chǎng)。

1992年國(guó)防科大研究成功銀河-II通用并行巨型機(jī),峰值速度達(dá)每秒4億次浮點(diǎn)運(yùn)算(相當(dāng)于每秒10億次基本運(yùn)算操作),總體上達(dá)到80年代中后期國(guó)際先進(jìn)水平。

2000年推出每秒浮點(diǎn)運(yùn)算速度3000億次的曙光3000超級(jí)服務(wù)器。2004年上半年推出每秒浮點(diǎn)運(yùn)算速度1萬(wàn)億次的曙光4000超級(jí)服務(wù)器。曙光4000L三計(jì)算機(jī)的應(yīng)用

1科學(xué)計(jì)算傳統(tǒng)方式:工作量大、人工處理慢2自動(dòng)控制:數(shù)控機(jī)床、流水線控制3測(cè)量和測(cè)試:提高精度、在惡劣條件下的測(cè)量4

信息處理:5教育、衛(wèi)生:計(jì)算機(jī)輔助教學(xué)(CAI)、多媒體教室、CT(Computerizedtomography)6

家電7人工智能四計(jì)算機(jī)硬件

計(jì)算機(jī)系統(tǒng)是由計(jì)算機(jī)硬件和計(jì)算機(jī)軟件組成的。

計(jì)算機(jī)硬件(Hardware)是指構(gòu)成計(jì)算機(jī)的所有實(shí)體部件的集合,通常這些部件由電路(電子元件)、機(jī)械等物理部件組成。1.一般用戶觀察到的計(jì)算機(jī)硬件系統(tǒng)不同對(duì)象觀察到的計(jì)算機(jī)硬件系統(tǒng)2.專業(yè)用戶觀察到的計(jì)算機(jī)硬件系統(tǒng)3.計(jì)算機(jī)設(shè)計(jì)者觀察到的計(jì)算機(jī)硬件系統(tǒng)計(jì)算機(jī)的硬件組成中央處理器(CPU)CPU=運(yùn)算器+控制器主機(jī)主機(jī)=中央處理器+主存儲(chǔ)器外部設(shè)備除去主機(jī)以外的硬件裝置(如輸入設(shè)備、輸出設(shè)備、輔助存儲(chǔ)器等)。運(yùn)算器控制器主存儲(chǔ)器輸入設(shè)備輸出設(shè)備輔助存儲(chǔ)器CPU控制數(shù)據(jù)地址或指令主機(jī)外設(shè)存儲(chǔ)器計(jì)算機(jī)簡(jiǎn)單框圖1數(shù)字計(jì)算機(jī)的硬件組成(與算盤(pán)類似)五大組成部分:運(yùn)算器、控制器、存儲(chǔ)器、輸入/輸出設(shè)備。

算盤(pán)人本身紙筆運(yùn)算器控制器存儲(chǔ)器輸入/輸出設(shè)備3運(yùn)算器運(yùn)算器就好比一個(gè)由電子線路構(gòu)成的算盤(pán),能進(jìn)行加、減、乘、除等算術(shù)運(yùn)算,還可進(jìn)行邏輯運(yùn)算。考慮到電子器件的特性,計(jì)算機(jī)中通常采用二進(jìn)制數(shù)。這是因?yàn)槎M(jìn)制數(shù)的運(yùn)算規(guī)律非常簡(jiǎn)單,在電子線路中比較容易實(shí)現(xiàn),而且設(shè)備也最省注:二進(jìn)制數(shù)和十進(jìn)制數(shù)一樣,在運(yùn)算中,當(dāng)數(shù)的位數(shù)越多時(shí),計(jì)算的精度就越高,但是位數(shù)越多,所需的電子器件也越多。目前計(jì)算機(jī)的運(yùn)算器長(zhǎng)度一般是8位、16位、32位或64位。4存儲(chǔ)器存儲(chǔ)器的功能:保存或“記憶”各種數(shù)據(jù)(包括原始數(shù)據(jù)和解題步驟等)。不論是數(shù)據(jù),還是解題步驟,存儲(chǔ)器存儲(chǔ)的全是0或1表示的二進(jìn)制代碼。目前采用半導(dǎo)體器件來(lái)作為存儲(chǔ)器。一個(gè)半導(dǎo)體觸發(fā)器可以記憶一個(gè)二進(jìn)制代碼,一個(gè)數(shù)假定用16位二進(jìn)制代碼表示,那么就需要有16個(gè)觸發(fā)器來(lái)保存這些代碼。與存儲(chǔ)器相關(guān)的幾個(gè)概念存儲(chǔ)單元:在存儲(chǔ)器中保存一個(gè)數(shù)的16個(gè)觸發(fā)器,稱為一個(gè)存儲(chǔ)單元。地址:存儲(chǔ)器是由許多存儲(chǔ)單元組成,每個(gè)存儲(chǔ)單元的編號(hào),稱為地址。存儲(chǔ)容量:存儲(chǔ)器所有存儲(chǔ)單元的總數(shù)。通常用單位“KB、MB”表示,如64KB,128KB。存儲(chǔ)容量越大,表示計(jì)算機(jī)記憶儲(chǔ)存的信息就越多。外存儲(chǔ)器:計(jì)算機(jī)中又配備的存儲(chǔ)容量更大的磁盤(pán)存儲(chǔ)器、光盤(pán)存儲(chǔ)器等。相對(duì)而言,半導(dǎo)體存儲(chǔ)器稱為內(nèi)存儲(chǔ)器,簡(jiǎn)稱內(nèi)存。存儲(chǔ)器演示5控制器控制器是計(jì)算機(jī)中發(fā)號(hào)施令的部件,它控制計(jì)算機(jī)的個(gè)部件有條不紊地進(jìn)行工作。具體的講,讀取指令、翻譯指令代碼、并向計(jì)算機(jī)各部分發(fā)出控制信號(hào),以便執(zhí)行指令。當(dāng)一條指令執(zhí)行完以后,控制器會(huì)自動(dòng)地去取下一條將要執(zhí)行的指令,重復(fù)上述過(guò)程直到整個(gè)程序執(zhí)行完畢。6輸入輸出設(shè)備輸入設(shè)備輸入設(shè)備能將數(shù)據(jù)和程序變換成計(jì)算機(jī)內(nèi)部所能識(shí)別和接受的信息方式,并順序地把它們送入存儲(chǔ)器中。輸入設(shè)備由許多種類,例如鍵盤(pán)、鼠標(biāo)、掃描儀、光電輸入機(jī)等。

輸出設(shè)備輸出設(shè)備將計(jì)算機(jī)處理的結(jié)果以人們能接受的或其它機(jī)器能接受的形式送出。輸出設(shè)備同樣由許多種類,例如顯示器、打印機(jī)、繪圖儀等。適配器:相當(dāng)與一個(gè)轉(zhuǎn)換器,它可以保證外圍設(shè)備用計(jì)算機(jī)所要求的形式發(fā)送或接受信息第1章Pentium保護(hù)模式存儲(chǔ)管理1.1虛擬存儲(chǔ)器及其工作原理

虛擬存儲(chǔ)器又稱為虛擬存儲(chǔ)系統(tǒng)。虛擬存儲(chǔ)器是為滿足用戶對(duì)存儲(chǔ)空間不斷擴(kuò)大的要求而提出的,隨著用戶程序復(fù)雜性的增加,占用存儲(chǔ)空間越來(lái)越大。其解決辦法是,可擴(kuò)大主存,但是造價(jià)高,空間利用率很低,并不是好的途徑。采用虛擬存儲(chǔ)器,可較好地解決這個(gè)問(wèn)題。虛擬存儲(chǔ)器這個(gè)概念是1961年由英國(guó)曼徹斯特大學(xué)的Kilburn等人提出的,并于20世紀(jì)70年代廣泛應(yīng)用于大中型計(jì)算機(jī)之中,現(xiàn)在的微型計(jì)算機(jī)也都采用了這種技術(shù)。虛擬存儲(chǔ)器是由主存儲(chǔ)器、輔助存儲(chǔ)器、輔助硬件和操作系統(tǒng)管理軟件組成的一種存儲(chǔ)體系。它把輔助存儲(chǔ)器作為主存儲(chǔ)器的擴(kuò)充,對(duì)應(yīng)用程序員來(lái)說(shuō),好像計(jì)算機(jī)系統(tǒng)有一個(gè)容量很大的主存。虛擬存儲(chǔ)系統(tǒng)的目標(biāo)是為了增加存儲(chǔ)器的存儲(chǔ)容量,它的速度接近于主存,單位造價(jià)接近于輔存,因此性能價(jià)格比很高。表1.1.1虛擬存儲(chǔ)器和Cache存儲(chǔ)器的比較1.1.1地址空間及地址在虛擬存儲(chǔ)器中有3種地址空間及對(duì)應(yīng)的3種地址。3種地址空間分別是虛擬地址空間、主存地址空間、輔存地址空間。虛擬地址空間:又稱為虛存地址空間,是應(yīng)用程序員用來(lái)編寫(xiě)程序的地址空間,與此相對(duì)應(yīng)的地址稱為虛地址或邏輯地址。主存地址空間:又稱為實(shí)存地址空間,是存儲(chǔ)、運(yùn)行程序的空間,其相應(yīng)的地址稱為主存物理地址或?qū)嵉刂贰]o存地址空間:也就是磁盤(pán)存儲(chǔ)器的地址空間,是用來(lái)存放程序的空間,相應(yīng)的地址稱為輔存地址或磁盤(pán)地址。1.1.2虛擬存儲(chǔ)器工作原理存貯管理方式由于采用的存貯映象算法不同,就形成了不同的存貯管理方式,其中主要有段式、頁(yè)式和段頁(yè)式3種。Pentium支持分段存儲(chǔ)管理、分頁(yè)存儲(chǔ)管理和段頁(yè)式存儲(chǔ)管理。Pentium微處理器片內(nèi)存儲(chǔ)管理部件負(fù)責(zé)對(duì)物理存儲(chǔ)器實(shí)施安全可靠且行之有效的存儲(chǔ)管理操作。當(dāng)存儲(chǔ)管理部件正常運(yùn)轉(zhuǎn)時(shí),程序是不能直接對(duì)物理存儲(chǔ)器進(jìn)行尋址操作的,只能對(duì)一個(gè)被稱之為虛擬存儲(chǔ)器的存儲(chǔ)器模型進(jìn)行尋址操作。Pentium微處理機(jī)的存儲(chǔ)管理部件由分段部件和分頁(yè)部件組成。分段部件可以提供多個(gè)各自獨(dú)立的地址空間,而分頁(yè)部件可以使用少量的隨機(jī)存儲(chǔ)器(RAM)和磁盤(pán)存儲(chǔ)器去支持一個(gè)很大的地址空間模型。由程序提供的地址叫做邏輯地址。分段部件的功能之一就是將邏輯地址轉(zhuǎn)換成一個(gè)連續(xù)的不分段的地址空間,這個(gè)地址空間的地址叫做線性地址。而分頁(yè)部件的主要功能就是將線性地址轉(zhuǎn)換成物理地址。1.2分段存儲(chǔ)管理1.2.1分段存儲(chǔ)管理的基本思想通常,一個(gè)程序由多個(gè)模塊組成,特別是在結(jié)構(gòu)化程序設(shè)計(jì)思想提出之后,程序的模塊性就更強(qiáng)了。一個(gè)復(fù)雜的大程序總可以分解成多個(gè)在邏輯上相對(duì)獨(dú)立的模塊,模塊間的界面和調(diào)用關(guān)系是可以清楚定義的。這些模塊可以是主程序、各種能賦于名稱的子程序或過(guò)程,也可以是表格、數(shù)組、樹(shù)、向量等某類數(shù)據(jù)元素的集合。模塊的大小可以各不相同,有的甚至事先無(wú)法確定。但每一個(gè)模塊都是一個(gè)特定功能的獨(dú)立的程序段,都是以該段的起點(diǎn)為0相對(duì)編址。把主存按段分配的存儲(chǔ)管理方式就稱為段式管理。程序進(jìn)入內(nèi)存時(shí),各程序段要求占據(jù)相對(duì)獨(dú)立的內(nèi)存區(qū)間。因此,現(xiàn)代微機(jī)系統(tǒng)把物理空間分成相對(duì)獨(dú)立的許多內(nèi)存段,每個(gè)內(nèi)存段放置一個(gè)程序段,至此內(nèi)存段與程序段統(tǒng)一,統(tǒng)稱為段。一個(gè)程序擁有多個(gè)段、不同程序占據(jù)不完全相同的幾個(gè)段。而且管理系統(tǒng)所需要的信息放置在屬于系統(tǒng)所有的段中。1.分段存儲(chǔ)管理工作過(guò)程2.虛擬地址和虛擬地址空間Pentium微處理機(jī)在保護(hù)模式下的存儲(chǔ)器管理單元使用48位的存儲(chǔ)器指針。它分為段選擇符(或簡(jiǎn)稱為選擇符)和偏移量?jī)刹糠?。?8位存儲(chǔ)器指針?lè)Q為虛擬地址,它在程序中用以規(guī)定指令或數(shù)據(jù)的存儲(chǔ)器位置。段選擇符16位,偏移量32位。段選擇符可放在Pentium微處理機(jī)段寄存器中。若要訪問(wèn)存儲(chǔ)器中的代碼,則段選擇符應(yīng)放在CS中。若要訪問(wèn)存儲(chǔ)器中的數(shù)據(jù),則段選擇符應(yīng)放在DS、ES、FS、GS、SS中的任意一個(gè)。偏移量放在Pentium微處理機(jī)的用戶可訪問(wèn)的寄存器中。若要訪問(wèn)存儲(chǔ)器中的代碼,則偏移量放在EIP寄存器中。若要訪問(wèn)存儲(chǔ)器中的數(shù)據(jù),則偏移量放在EAX、EBX、ECX、EDX、ESI、EDI等寄存器中。由于偏移量是32位長(zhǎng),所以段大小可達(dá)4G字節(jié)。我們說(shuō)段大小可達(dá)4G字節(jié)是因?yàn)槎未笮?shí)際上可變的,它可從1個(gè)字節(jié)到4G字節(jié)。保護(hù)模式下的存儲(chǔ)器指針及段選擇符格式3.虛實(shí)地址轉(zhuǎn)換Pentium微處理機(jī)的分段存儲(chǔ)管理機(jī)制允許將46位虛擬地址映射到硬件所需的32位物理地址。首先由虛擬地址(也稱邏輯地址)段選擇符部分的13位索引字段確定段描述符在段表(也稱段描述符表)的位置。然后取出段描述符中的32位基地址并與偏移量相加,得到32位的線性地址。如果不啟用分頁(yè)功能,則線性地址就直接作為物理地址。虛實(shí)地址轉(zhuǎn)換示意圖1.2.2段描述符段描述符是Pentium微處理機(jī)存儲(chǔ)管理部件用以管理64T字節(jié)虛擬存儲(chǔ)地址空間分段的基本元素。一個(gè)段描述符對(duì)應(yīng)于虛擬地址空間中的一個(gè)存儲(chǔ)器段。段描述符是位于主存中的一種數(shù)據(jù)結(jié)構(gòu),由系統(tǒng)程序創(chuàng)建,它為處理機(jī)提供段的基本信息。所有段描述符均由8個(gè)字節(jié)組成。段描述符內(nèi)保存著供處理機(jī)使用的有關(guān)段的屬性、段的大小、段在存儲(chǔ)器中的位置以及控制和狀態(tài)信息。一般說(shuō)來(lái),各段描述符都是由各種編譯程序、各種連接程序、各種裝入程序或者是操作系統(tǒng)產(chǎn)生的,而不是由各種應(yīng)用程序生成的。段描述符按段的性質(zhì)可分為程序段描述符、系統(tǒng)段描述符和門(mén)描述符,如圖1.2.4所示。對(duì)于不同的描述符,其格式存在差異。段描述符的分類1.程序段描述符程序段描述符的格式:(1)基地址字段Pentium微處理機(jī)用這個(gè)字段來(lái)規(guī)定某一個(gè)段在4GB物理地址空間中的起始位置。段描述符的第2~4和第7字節(jié)組成了32位的基址字段,這個(gè)基址可以訪問(wèn)4G(232)字節(jié)的主存空間。(2)段界限字段段描述符中的段界限字段是用來(lái)定義段的大小規(guī)模。段描述符的第0、1字節(jié)和第6字節(jié)的低4位是20位的段界限字段,該字段的值決定了段的長(zhǎng)度,而該字段的值的單位由“G”位決定。“G”位稱作粒度位,用來(lái)確定段界限所使用的長(zhǎng)度單位。(3)粒位G字段段描述符中的這個(gè)字段是用來(lái)確定段界限所使用的長(zhǎng)度單位。段描述符的第6字節(jié)的D7位是粒度位G字段。G=0時(shí),段的長(zhǎng)度以一個(gè)字節(jié)為單位。G=1時(shí),段的長(zhǎng)度以4K(212)字節(jié)為單位。當(dāng)G=0時(shí),段界限字段值的范圍可從1B到1MB(因?yàn)槎谓缦逓?0位)范圍。在這種情況下,段界限字段的值可在1B的基礎(chǔ)上,每次增值1B。當(dāng)G=1時(shí),段界限字段值的范圍可從4KB到4GB范圍。在這種情況下,段界限字段的值可在4KB的基礎(chǔ)上,每次增值4KB。(4)分類S字段段描述符中的第5字節(jié)的D4位“S”字段是用來(lái)區(qū)分是系統(tǒng)段描述符還是非系統(tǒng)段描述符。當(dāng)S=0時(shí),是系統(tǒng)段描述符。當(dāng)S=1時(shí),是非系統(tǒng)段描述符。(5)段存在位P字段P字段表示該段是否在內(nèi)存中。段描述符的第5字節(jié)的D7位是P字段。當(dāng)P=1時(shí),表示該段在內(nèi)存中。當(dāng)P=0時(shí),表示該段不在內(nèi)存中。(6)系統(tǒng)可用位AVL字段表示系統(tǒng)軟件是否可用本段。段描述符的第6字節(jié)的D4位是AVL字段。當(dāng)AVL=1時(shí),表示系統(tǒng)軟件可用本段。當(dāng)AVL=0時(shí),表示系統(tǒng)軟件不能用本段。(7)特權(quán)級(jí)DPL字段這個(gè)字段用來(lái)定義段的特權(quán)級(jí)。段描述符的第5字節(jié)的D6、D5位是DPL字段。DPL字段占有2位,故有4個(gè)特權(quán)級(jí):00、01、10、11,稱作0級(jí)、1級(jí)、2級(jí)、3級(jí)。0級(jí)的特權(quán)最高,1級(jí)次之,3級(jí)的特權(quán)最低。借助于保護(hù)機(jī)構(gòu),用這個(gè)字段定義的特權(quán)級(jí)去控制對(duì)這個(gè)段的訪問(wèn)。其訪問(wèn)原則是高特權(quán)級(jí)的程序段可以訪問(wèn)低特權(quán)級(jí)程序的數(shù)據(jù)段,反之則不行。(8)類型TYPE字段段描述符的第5字節(jié)的低4位是類型TYPE字段。類型TYPE字段在不同的段描述符中有不同的格式。1)數(shù)據(jù)段或堆棧段描述符中的類型TYPE字段。數(shù)據(jù)段或堆棧段描述符中的類型TYPE字段的格式如表1.2.2所示。①E可執(zhí)行位。當(dāng)E=0時(shí),是數(shù)據(jù)段或堆棧段。②ED擴(kuò)展方向位。當(dāng)ED=0時(shí),向上擴(kuò)展(地址增加方向),通常用于數(shù)據(jù)段。它指明段的地址范圍是從基地址向高位地址方向擴(kuò)展,可以一直擴(kuò)展到該數(shù)據(jù)段的上界,上界的界限值是最大值。在數(shù)據(jù)段內(nèi),段界限字段規(guī)定了該數(shù)據(jù)段的上界,使用時(shí),段的偏移量值必須小于等于界限值。當(dāng)ED=1時(shí),向下擴(kuò)展(地址減小方向),通常用于堆棧段。它指明從段的最大偏移量處向低位地址方向擴(kuò)展,可以一直擴(kuò)展到該堆棧段的下界,下界的界限值是最小值。在向下擴(kuò)展的堆棧段內(nèi),段界限字段規(guī)定了該堆棧段的下界,使用時(shí),偏移量的值必須大于界限。在80X86系統(tǒng)中,堆棧向小地址方向生成,堆棧底部的地址最大,隨著壓入堆棧的數(shù)據(jù)增多,棧頂?shù)牡刂吩絹?lái)越小,這就是“向下擴(kuò)展”的含義,為此,要規(guī)定一個(gè)界限,使棧頂?shù)钠屏坎荒苄∮谶@個(gè)值。③W可寫(xiě)位。當(dāng)W=0時(shí),不允許寫(xiě)入。當(dāng)W=1時(shí),允許寫(xiě)入。④A訪問(wèn)位。當(dāng)A=0時(shí),該段尚未被訪問(wèn)。當(dāng)A=1時(shí),該段已被訪問(wèn)。2)代碼段描述符中的類型TYPE字段代碼段描述符中的類型TYPE字段的格式如表1.2.3所示。①E可執(zhí)行位。當(dāng)E=1時(shí),是代碼段。②C一致性位。所謂一致性檢查,就是采用特權(quán)級(jí)進(jìn)行控制。當(dāng)C=0時(shí),表示非一致性代碼段,此時(shí)忽視段描述符的特權(quán)值。當(dāng)C=1時(shí),表示一致性代碼段,需要進(jìn)行特權(quán)級(jí)檢查。③R可讀位。當(dāng)R=0時(shí),不允許讀。當(dāng)R=1時(shí),允許讀。當(dāng)然,對(duì)程序段來(lái)說(shuō),通常都是“可執(zhí)行的”。R位取0可防止用戶程序?qū)Υ鎯?chǔ)器里的“目標(biāo)程序代碼”做手腳。R位為0的描述符只能加載到CS的描述符寄存器,而R位為1的描述符可加載到CS、DS、ES、FS及GS的描述符寄存器,此時(shí),可以讀取段內(nèi)的數(shù)據(jù)(程序代碼)。④A訪問(wèn)位。當(dāng)A=0時(shí),該段尚未被訪問(wèn);當(dāng)A=1時(shí),該段已被訪問(wèn)。(9)D位/B位字段段描述符的第6字節(jié)的D6位是D位/B位字段。這個(gè)字段在代碼段描述符中叫做D位字段,而在數(shù)據(jù)段和堆棧段描述符中叫做B位字段。該字段可分為下述三種情況。1)在代碼段描述符中,用來(lái)指示代碼段中缺省的操作數(shù)的長(zhǎng)度和有效地址長(zhǎng)度。當(dāng)D=1時(shí),說(shuō)明采用的是32位操作數(shù)和32位有效地址的尋址方式。D=0時(shí),則說(shuō)明采用的是16位操作數(shù)和16位有效地址的尋址方式。2)在堆棧段描述符中,用來(lái)指示堆棧指針寄存器的大小。當(dāng)B=1時(shí),使用的是32位的堆棧指針寄存器ESP。當(dāng)B=0時(shí),使用的是16位的堆棧指針寄存器SP。堆棧段的上界是一個(gè)各位均為1的地址。當(dāng)B=1時(shí),上界地址值為0FFFFFFFFH。當(dāng)B=0時(shí),上界地址值為0FFFFH。3)在數(shù)據(jù)段描述符中,用來(lái)指示數(shù)據(jù)段中操作數(shù)的長(zhǎng)度。當(dāng)B=1時(shí),使用的是32位的操作數(shù)。當(dāng)B=0時(shí),使用的是16位的操作數(shù)。(10)兼容位字段段描述符的第6字節(jié)的D5位必須是0,以便與將來(lái)的處理器兼容。程序段描述符的格式2.系統(tǒng)段描述符系統(tǒng)段描述符中的類型TYPE字段的格式3.門(mén)描述符門(mén)描述符用來(lái)控制訪問(wèn)的目標(biāo)代碼段的入口點(diǎn)。所謂門(mén)是一種關(guān)卡,用來(lái)控制從一段程序到另一段程序或從一個(gè)任務(wù)到另一個(gè)任務(wù)的轉(zhuǎn)移。在轉(zhuǎn)移過(guò)程中自動(dòng)進(jìn)行保護(hù)檢查,并控制轉(zhuǎn)移到目的程序的入口。門(mén)描述符包括調(diào)用門(mén)、任務(wù)門(mén)、中斷門(mén)和陷阱門(mén)。這些門(mén)為控制轉(zhuǎn)移提供了一個(gè)間接的辦法,這一辦法允許處理器自動(dòng)地完成保護(hù)檢查。它也允許系統(tǒng)設(shè)計(jì)者控制操作系統(tǒng)的入口點(diǎn)。調(diào)用門(mén)用于改變特權(quán)級(jí)別,任務(wù)門(mén)用于任務(wù)切換,中斷門(mén)和陷阱門(mén)用于確定中斷服務(wù)程序。門(mén)描述符的第0、1、6、7字節(jié)是一個(gè)32位的偏移地址,第4字節(jié)是一個(gè)字計(jì)數(shù),第2、3字節(jié)是一個(gè)段選擇符,第5字節(jié)是門(mén)描述符的屬性。32位的偏移地址指向中斷服務(wù)程序或其他程序的入口。門(mén)描述符的格式1.2.3全局描述符表及寄存器全局描述符表由段描述符組成。全局描述符表和段描述符都由系統(tǒng)程序產(chǎn)生。描述符表就是描述符的一個(gè)陣列,是存放在主存中的一種數(shù)據(jù)結(jié)構(gòu)。在Pentium微處理機(jī)中,全局描述符表寄存器GDTR指定了全局描述符表GDT在內(nèi)存中的起始地址。全局描述符表是Pentium微處理機(jī)進(jìn)入保護(hù)方式后存儲(chǔ)器管理系統(tǒng)中的一個(gè)重要組成部分。GDTR是Pentium微處理機(jī)中的48位寄存器。該寄存器的低2個(gè)字節(jié)標(biāo)識(shí)為16位界限,它規(guī)定了GDT按字節(jié)進(jìn)行計(jì)算的地址范圍的大小。GDTR的高4個(gè)字節(jié)標(biāo)為32位基地址,指示GDT在存儲(chǔ)器中開(kāi)始的物理地址。用裝全局描述符表寄存器指令LGDT和存全局描述符表寄存器指令SGDT,可以對(duì)全局描述符表寄存器GDTR的內(nèi)容進(jìn)行裝入和保存的操作。由GDTR確定GDT存儲(chǔ)位置和界限1.2.4局部描述符表及寄存器局部描述符表寄存器LDTR也是Pentium微處理機(jī)存儲(chǔ)器管理部件的一部分,每個(gè)任務(wù)除了可訪問(wèn)全局描述符表外還可訪問(wèn)它自己的描述符表,這個(gè)描述符表稱為局部描述符表LDT,它由LDTR定義某個(gè)任務(wù)用到的局部存儲(chǔ)器地址空間。Pentium微處理機(jī)中的局部描述符表寄存器LDTR由16位選擇符、32位基址、20位界限和12位屬性組成?;贰⒔缦藓蛯傩圆豢稍L問(wèn),屬于程序不可見(jiàn)的部分,程序只能對(duì)16位的段選擇符進(jìn)行訪問(wèn)。局部描述符表寄存器LDTR中的段選擇符是一個(gè)指向全局描述符表GDT中LDT描述符的選擇符,它還不能直接確定局部描述符表LDT的位置。如果LDTR中裝入了段選擇符,Pentium微處理機(jī)自動(dòng)地將相應(yīng)的LDT描述符從全局描述符表GDT中讀出來(lái),并裝入LDTR中程序不可見(jiàn)部分。也就是說(shuō),全局描述符表GDT中的LDT描述符才確定了局部描述符表。由LDTR確定LDT存儲(chǔ)位置和界限1.2.5中斷描述符表及寄存器同全局描述符表寄存器一樣,Pentium微處理機(jī)通過(guò)中斷描述符表寄存器IDTR在內(nèi)存中定義了一個(gè)中斷描述符表IDT,中斷描述符表是Pentium微處理機(jī)進(jìn)入保護(hù)方式后存儲(chǔ)器管理系統(tǒng)中的又一個(gè)重要組成部分。同GDTR一樣,IDTR是Pentium微處理機(jī)中的48位寄存器。該寄存器的低2個(gè)字節(jié)標(biāo)識(shí)為16位界限,它規(guī)定了IDT按字節(jié)計(jì)算的大小,IDT最大可達(dá)64KB(但是Pentium微處理機(jī)只能夠支持256個(gè)中斷和異常,最多占用2KB)。IDTR的高4個(gè)字節(jié)標(biāo)為32位基地址,指示IDT在存儲(chǔ)器中開(kāi)始的物理地址。中斷描述符表IDT中存放的描述符類型均是門(mén)描述符。門(mén)提供了一種將程序控制轉(zhuǎn)移到中斷服務(wù)程序入口的手段。每個(gè)門(mén)8個(gè)字節(jié),包含服務(wù)程序的屬性和起始地址。由IDTR確定IDT存儲(chǔ)位置和界限1.2.6任務(wù)狀態(tài)段及寄存器在多任務(wù)系統(tǒng)中,多個(gè)任務(wù)可以并行執(zhí)行。當(dāng)然,這種并行是宏觀上的并行。為了實(shí)現(xiàn)多個(gè)任務(wù)同時(shí)工作,就要求每個(gè)任務(wù)都有自己的虛擬存儲(chǔ)空間,都有自己的一個(gè)局部描述符表LDT,存放該任務(wù)私有的描述符。任務(wù)間的轉(zhuǎn)移必然會(huì)引起任務(wù)切換。任務(wù)切換操作要保存現(xiàn)有任務(wù)的機(jī)器狀態(tài)(指處理器的工作環(huán)境,比如各個(gè)寄存器的狀態(tài)),裝入新任務(wù)的機(jī)器狀態(tài)。這時(shí)的機(jī)器狀態(tài)就是通常操作系統(tǒng)的任務(wù)控制塊,對(duì)于Pentium微處理機(jī),稱之為任務(wù)狀態(tài)段TSS(TaskStateSegment)。任務(wù)狀態(tài)段TSS如同每個(gè)任務(wù)有自己的一個(gè)LDT一樣,各個(gè)任務(wù)都有自己的TSS。TSS的格式由TR確定TSS存儲(chǔ)位置和界限任務(wù)寄存器TR中的32位基址值標(biāo)識(shí)任務(wù)狀態(tài)段在內(nèi)存中的起始物理地址,20位界限值定義段的大小。雖然任務(wù)狀態(tài)段TSS描述符和其他任何描述符一樣,包含了任務(wù)狀態(tài)段TSS的位置、大小和優(yōu)先級(jí)別。但它們之間的區(qū)別在于TSS描述符所描述的TSS段不包含數(shù)據(jù)和代碼,它包含了任務(wù)狀態(tài)和任務(wù)間的關(guān)聯(lián)信息,以使任務(wù)可以被嵌套(第一個(gè)任務(wù)可以調(diào)用第二個(gè)任務(wù),而第二個(gè)任務(wù)又可以調(diào)用第三個(gè)任務(wù),依此類推)。TSS描述符由任務(wù)寄存器TR尋址。TR的內(nèi)容由裝任務(wù)寄存器指令LTR和存任務(wù)寄存器指令STR進(jìn)行裝入和保存。TR的內(nèi)容也可由保護(hù)模式下運(yùn)行程序中的遠(yuǎn)轉(zhuǎn)移JMP或遠(yuǎn)調(diào)用CALL指令來(lái)改變。LTR指令通常用于系統(tǒng)初始化過(guò)程中裝入第一個(gè)任務(wù)的選擇符。在初始化之后,遠(yuǎn)調(diào)用CALL或遠(yuǎn)轉(zhuǎn)移JMP指令通常對(duì)任務(wù)進(jìn)行切換。1.2.7段選擇符及寄存器在實(shí)模式下,段寄存器的16位值是基地址。而在保護(hù)模式下,為了加快對(duì)存儲(chǔ)器的訪問(wèn),每個(gè)段寄存器都有一個(gè)程序員不可見(jiàn)的段描述符高速緩沖寄存器與之對(duì)應(yīng)。這樣,每一個(gè)段寄存器就由兩部分組成,一部分為16位的可見(jiàn)部分,另一部分為64位的不可見(jiàn)部分(或稱段描述符高速緩沖寄存器)。對(duì)段寄存器的可見(jiàn)部分來(lái)說(shuō),可用傳送指令MOV裝入,而不可見(jiàn)部分則只能由處理機(jī)裝入,用戶是不能也不可能進(jìn)行干預(yù)和操作的。段寄存器的可見(jiàn)部分裝入的是16位的段選擇符。段選擇符用于識(shí)別(選擇)在全局描述符表GDT或局部描述符表LDT內(nèi)被逐一登記的段描述符。在8字節(jié)段描述符中包含有定義段所用的32位的基地址、20位的段界限、12位的屬性(其中包括段類型、訪問(wèn)控制以及其他一些信息)。1.段選擇符選擇符分為3個(gè)字段:13位索引字段INDEX,1位描述符表選擇字段TI和2位的請(qǐng)求特權(quán)級(jí)字段RPL。(1)描述符表選擇字段TI段選擇符中的D2位(TI)是描述符表選擇字段,這個(gè)字段用來(lái)說(shuō)明使用的是全局描述符表GDT,還是局部描述符表LDT。當(dāng)TI=0時(shí),選擇的是全局描述符表GDT。當(dāng)TI=1時(shí),選擇的是局部描述符表LDT。(2)索引字段INDEX段選擇符中的D15~D3位是索引字段,共13位,這就意味著,利用索引字段可以從擁有213=8192個(gè)段描述符的描述符表中選出任何一個(gè)段描述符來(lái)。索引值乘以8就是相對(duì)于GDT或LDT首址的偏移量,處理機(jī)用這個(gè)偏移量再加上描述符表的基地址(來(lái)自全局描述符表寄存器GDTR,或者局部描述符表寄存器LDTR)就是段描述符在描述符表中的地址。(3)請(qǐng)求特權(quán)級(jí)字段RPL段選擇符中的D1、D0位是請(qǐng)求特權(quán)級(jí)字段。RPL字段占有2位,故有4個(gè)特權(quán)級(jí),00、01、10、11,稱作0級(jí)、1級(jí)、2級(jí)、3級(jí)。0級(jí)的特權(quán)最高,1級(jí)次之,3級(jí)的特權(quán)最低。2.段選擇符裝入段寄存器的操作段選擇符裝入段寄存器的操作是通過(guò)應(yīng)用程序中的指令完成的。裝段寄存器的指令有2類,即直接的裝段寄存器指令和隱含的裝段寄存器指令。(1)直接的裝段寄存器指令:可使用傳送指令MOV、彈出堆棧指令POP、加載段寄存器指令LDS、LSS、LGS、LFS。這些指令都是顯式地訪問(wèn)段寄存器。(2)隱含的裝段寄存器指令:可使用調(diào)用一個(gè)過(guò)程指令CALL、遠(yuǎn)轉(zhuǎn)移指令JMP。這種指令更改代碼段寄存器CS的內(nèi)容。由于絕大多數(shù)指令都要涉及段,所以段選擇符總是被裝在段寄存器內(nèi)備用。1.3保護(hù)模式下的訪問(wèn)操作與保護(hù)機(jī)制1.3.1保護(hù)機(jī)制的分類1.任務(wù)間存儲(chǔ)空間的保護(hù)任務(wù)間的保護(hù)是通過(guò)每一個(gè)任務(wù)所專用的LDT描述符實(shí)現(xiàn)的。根據(jù)LDT描述符,每個(gè)任務(wù)都有它特定的虛擬空間,因而避免各任務(wù)之間的干擾,起到隔離、保護(hù)的作用。2.段屬性和界限的保護(hù)當(dāng)段寄存器進(jìn)行加載時(shí),需要進(jìn)行段存在性檢查(屬性字節(jié)的P位)以及段限檢查。在段描述符中給出了20位的段界限值,每當(dāng)產(chǎn)生一個(gè)邏輯地址時(shí),都要比較偏移量和段限值。一旦偏移地址大于段限值,CPU就終止執(zhí)行命令,并發(fā)出越限異常。由此限制每個(gè)程序段只在自己的程序、數(shù)據(jù)段內(nèi)運(yùn)行,不相互干擾。最后,還要對(duì)該段的讀寫(xiě)權(quán)限進(jìn)行檢查。3.特權(quán)級(jí)與特權(quán)級(jí)保護(hù)特權(quán)級(jí)與特權(quán)保護(hù)是為了支持多用戶多任務(wù)操作系統(tǒng),使系統(tǒng)程序和用戶的任務(wù)程序之間、各任務(wù)程序之間互不干擾而采取的保護(hù)措施。Pentium微處理機(jī)系統(tǒng)提供了一個(gè)4級(jí)特權(quán)管理系統(tǒng),也就是4級(jí)保護(hù)系統(tǒng),如圖1.3.1所示。這樣可為不同程序規(guī)定一個(gè)權(quán)限,控制特權(quán)指令和I/O指令的使用,控制對(duì)段和段描述符的訪問(wèn),從而有效地防止不同程序執(zhí)行時(shí)的相互干擾或非法訪問(wèn)、非法改寫(xiě)GDT和LDT。3種形式的特權(quán)管理在實(shí)施管理中使用了3種形式的特權(quán)管理:當(dāng)前任務(wù)特權(quán)CPL、選擇符特權(quán)RPL和描述符特權(quán)DPL。并且規(guī)定:特權(quán)級(jí)為P的段中存儲(chǔ)的數(shù)據(jù),只能由特權(quán)級(jí)高于或等于P的段中運(yùn)行的程序使用;特權(quán)級(jí)為P的代碼段/過(guò)程,只能由在低于或等于P的特權(quán)級(jí)下執(zhí)行的任務(wù)調(diào)用。(1)當(dāng)前特權(quán)級(jí)CPLCPL是當(dāng)前正在執(zhí)行的代碼段所具有的訪問(wèn)特權(quán)級(jí),存放在CS段寄存器的最低兩位。每一項(xiàng)任務(wù)都是在其代碼段描述符所確定的特權(quán)級(jí)中運(yùn)行。當(dāng)前特權(quán)級(jí)就是任務(wù)執(zhí)行時(shí)所處的特權(quán)級(jí)。例如,一個(gè)正在運(yùn)行的任務(wù)的CPL,就是其描述符中訪問(wèn)權(quán)限字節(jié)的DPL。當(dāng)前特權(quán)級(jí)的值一般就是代碼段描述符中的DPL。任務(wù)執(zhí)行時(shí)當(dāng)前特權(quán)級(jí)一般不能改變,如果必須改變,只能通過(guò)代碼段的門(mén)描述符的控制轉(zhuǎn)換才能實(shí)現(xiàn)。一般高一級(jí)的任務(wù)可以訪問(wèn)同級(jí)或低級(jí)GDT和LDT中定義的數(shù)據(jù),顯然在第3特權(quán)級(jí)執(zhí)行的任務(wù)對(duì)數(shù)據(jù)的訪問(wèn)受到的限制最大。(2)描述符特權(quán)級(jí)DPLDPL是段被訪問(wèn)的特權(quán)級(jí),保存在該段的段描述符的特權(quán)級(jí)DPL位。(3)請(qǐng)求特權(quán)級(jí)RPLRPL是新裝入段寄存器的段選擇符的特權(quán)級(jí),存放在段選擇符的最低兩位。1.3.2數(shù)據(jù)段訪問(wèn)及其特權(quán)級(jí)檢查數(shù)據(jù)段訪問(wèn)的特權(quán)級(jí)檢查1.3.3任務(wù)內(nèi)的段間轉(zhuǎn)移及其特權(quán)級(jí)檢查程序控制轉(zhuǎn)移有2種類型:NEAR類型的段內(nèi)轉(zhuǎn)移和FAR類型的段間轉(zhuǎn)移。段內(nèi)轉(zhuǎn)移發(fā)生在同一個(gè)代碼段內(nèi),段的基址不變,所以不需要重新訪問(wèn)段描述符。轉(zhuǎn)移發(fā)生時(shí),只需要進(jìn)行段限保護(hù)檢查,即比較偏移量和段限值。段間轉(zhuǎn)移發(fā)生在不同的代碼段之間,不同的代碼段,其基址也不同,因此,轉(zhuǎn)移發(fā)生時(shí),需要重新訪問(wèn)目標(biāo)段的段描述符,以便確定目標(biāo)段的基址。在保護(hù)機(jī)制方面,除了要進(jìn)行段限保護(hù)檢查外,還要進(jìn)行特權(quán)級(jí)檢查。段間轉(zhuǎn)移有2種方法:段間直接控制轉(zhuǎn)移、段間間接控制轉(zhuǎn)移。下面將對(duì)這2種方法的實(shí)現(xiàn)過(guò)程和特權(quán)級(jí)檢查保護(hù)進(jìn)行說(shuō)明。段間轉(zhuǎn)移方法小結(jié)(1)任務(wù)內(nèi)的控制轉(zhuǎn)移可分為同一特權(quán)級(jí)間的控制轉(zhuǎn)移和不同特權(quán)級(jí)間的控制轉(zhuǎn)移。(2)用JMP指令通過(guò)代碼段描述符,可實(shí)現(xiàn)同一特權(quán)級(jí)間的直接控制轉(zhuǎn)移。(3)用CALL指令通過(guò)代碼段描述符,可實(shí)現(xiàn)同一特權(quán)級(jí)間的直接控制轉(zhuǎn)移,通過(guò)調(diào)用門(mén),可實(shí)現(xiàn)同一特權(quán)級(jí)間或更高特權(quán)級(jí)的間接控制轉(zhuǎn)移。(4)用INT指令(包括異常中斷和外部中斷)通過(guò)中斷門(mén)/陷阱門(mén),可實(shí)現(xiàn)同一特權(quán)級(jí)間或更高特權(quán)級(jí)的間接控制轉(zhuǎn)移。(5)將程序控制轉(zhuǎn)移給同一代碼段中的另一條指令,只須使用轉(zhuǎn)移或調(diào)用指令即可,此時(shí),只需要檢查段長(zhǎng)界限,以確保轉(zhuǎn)移或調(diào)用的目標(biāo)不會(huì)超過(guò)當(dāng)前代碼段的邊界。任務(wù)內(nèi)段間控制轉(zhuǎn)移的描述符訪問(wèn)規(guī)則段間直接轉(zhuǎn)移過(guò)程及目標(biāo)線性地址的生成通過(guò)代碼段的段描述符實(shí)現(xiàn)段間直接轉(zhuǎn)移的特權(quán)檢查用調(diào)用門(mén)實(shí)現(xiàn)段間間接轉(zhuǎn)移的過(guò)程1.3.4任務(wù)切換及其特權(quán)級(jí)檢查所謂任務(wù)切換,是指從執(zhí)行某一個(gè)任務(wù)轉(zhuǎn)換到執(zhí)行另外一個(gè)任務(wù)的過(guò)程。任務(wù)切換是多任務(wù)/多用戶系統(tǒng)的一個(gè)非常重要的屬性。Pentium微處理器支持多任務(wù),允許多個(gè)任務(wù)之間通過(guò)硬件進(jìn)行快速切換。任務(wù)切換的過(guò)程是:保存機(jī)器的整個(gè)狀態(tài)(比如所有的寄存器、地址空間、到原來(lái)任務(wù)的鏈接等),裝入新的執(zhí)行狀態(tài),進(jìn)行保護(hù)檢查,開(kāi)始新任務(wù)的執(zhí)行,執(zhí)行完畢后回到原來(lái)的任務(wù)繼續(xù)執(zhí)行。1.任務(wù)的設(shè)定在執(zhí)行某任務(wù)以前,必須在存儲(chǔ)器中定義GDT、IDT、LDT和TSS,在GDT中登記(寫(xiě)入)所需要的段描述符、門(mén)描述符、LDT描述符、TSS描述符,在IDT中登記(寫(xiě)入)所需要的中斷門(mén)、陷阱門(mén)、任務(wù)門(mén)等,并且還必須對(duì)GDTR、IDTR、LDTR、TR設(shè)置適當(dāng)?shù)臄?shù)值。TR給出TSS段的基址。2.TSS描述符和任務(wù)門(mén)在任務(wù)切換中,通常用到任務(wù)狀態(tài)段TSS和任務(wù)門(mén)。TSS描述符和任務(wù)門(mén)在前面已有說(shuō)明。每一個(gè)任務(wù)必須有一個(gè)任務(wù)狀態(tài)段TSS與其關(guān)聯(lián)。TSS描述符屬于系統(tǒng)描述符類(屬性字節(jié)中S=0),該描述符包含了TSS在內(nèi)存中的基址和界限。TSS描述符位于GDT中,所以指向TSS描述符的段選擇符的TI位應(yīng)該為0。用調(diào)用門(mén)實(shí)現(xiàn)段間間接轉(zhuǎn)移的特權(quán)級(jí)檢查3.任務(wù)切換的方法在進(jìn)行任務(wù)切換時(shí),要把新任務(wù)的TSS描述符的選擇符傳送到TR的選擇符字段,對(duì)TR的選擇符字段有兩種修改方法:(1)直接任務(wù)切換:直接訪問(wèn)新任務(wù)的TSS描述符,從而得到新任務(wù)的TSS。在直接任務(wù)切換中,段間JMP/CALL指令的操作數(shù)的段選擇符就是新任務(wù)的TSS描述符的選擇符,它被直接加載到TR的選擇符字段,對(duì)于執(zhí)行IRET指令的情況(必須NT=1),則是把曾經(jīng)壓入到當(dāng)前執(zhí)行任務(wù)的TSS中的返回鏈(返回鏈就是前一個(gè)任務(wù)的TSS描述符的段選擇符,即原來(lái)TR中的16位可見(jiàn)部分內(nèi)容),作為T(mén)R選擇符字段的修改值。(2)間接任務(wù)切換:新任務(wù)的TSS描述符的選擇符由任務(wù)門(mén)加載。通過(guò)任務(wù)門(mén)間接訪問(wèn)新任務(wù)的TSS描述符,從而得到新任務(wù)的TSS。在間接任務(wù)切換中,段間JMP/CALL指令的操作數(shù)的段選擇符是任務(wù)門(mén)的選擇符,而任務(wù)門(mén)的內(nèi)容包含新任務(wù)的TSS描述符的選擇符,所以,新任務(wù)的TSS描述符的選擇符將由任務(wù)門(mén)間接加載到TR的選擇符字段,3.任務(wù)切換的方法這樣,對(duì)任務(wù)的切換,可以采用以下方法:(1)段間JMP/CALL指令:進(jìn)行直接任務(wù)切換或間接任務(wù)切換。(2)INT指令(包括異常中斷和外部中斷):只能進(jìn)行間接任務(wù)切換。訪問(wèn)IDT中的任務(wù)門(mén),新任務(wù)的TSS描述符的選擇符由任務(wù)門(mén)加載。當(dāng)中斷/異常發(fā)生時(shí),如果IDT的目標(biāo)項(xiàng)是中斷門(mén)或陷阱門(mén),則執(zhí)行中斷處理程序。如果目標(biāo)項(xiàng)是任務(wù)門(mén),則進(jìn)行任務(wù)切換。(3)IRET指令(當(dāng)NT=1時(shí)):只能進(jìn)行直接任務(wù)切換。EFLAGS寄存器的NT位必須為1,表明是處于任務(wù)嵌套。NT為0時(shí),執(zhí)行IRET指令與正常中斷處理程序最后執(zhí)行IRET指令的結(jié)果相同,即只完成正常的中斷返回,不進(jìn)行任務(wù)切換。任務(wù)間的切換過(guò)程示意圖1.4向保護(hù)模式的轉(zhuǎn)換下面的步驟將完成從實(shí)地址方式到保護(hù)模式的切換:(1)初始化中斷描述符表IDT,使其包含至少前32種中斷類型有效的中斷門(mén)描述符。(2)初始化全局描述符表GDT,使其第0項(xiàng)為一個(gè)空描述符,并且使其至少包含一個(gè)數(shù)據(jù)段描述符、一個(gè)代碼段描述符、一個(gè)堆棧段描述符。(3)進(jìn)入保護(hù)模式的實(shí)際方法是通過(guò)指令MOVCR0,R/M使CR0寄存器中的PE位置1。這就使Pentium置為保護(hù)模式。(4)進(jìn)入保護(hù)模式后,執(zhí)行一條段內(nèi)近JMP指令清除內(nèi)部指令隊(duì)列并把TSS描述符基址裝入到TR中。(5)將初始數(shù)據(jù)段選擇符的值裝入到所有的數(shù)據(jù)段寄存器中。(6)現(xiàn)在Pentium已運(yùn)行在保護(hù)模式下,正在使用GDT和IDT中定義的段描述符。另一種適合多任務(wù)操作系統(tǒng)進(jìn)入保護(hù)模式的方法是為裝載所有的寄存器而建立任務(wù)切換。對(duì)于多任務(wù)操作系統(tǒng)利用任務(wù)切換來(lái)使Pentium進(jìn)入到保護(hù)模式所需的步驟如下:(1)初始化中斷描述符表IDT,以便它用IDT中的至少32個(gè)描述符提供有效的中斷描述符。(2)初始化全局描述符表GDT,以便使其最少有兩個(gè)任務(wù)狀態(tài)段TSS描述符和初始任務(wù)所需要的原始代碼段及數(shù)據(jù)段描述符。(3)初始化任務(wù)寄存器TR,使它指向一個(gè)TSS,當(dāng)初始任務(wù)發(fā)生切換并訪問(wèn)新的TSS時(shí),當(dāng)前寄存器值將保存在這個(gè)原始的TSS中。(4)進(jìn)入保護(hù)模式后,執(zhí)行一條段內(nèi)近JMP指令清除內(nèi)部指令隊(duì)列,切換到保護(hù)模式下。將當(dāng)前的TSS選擇符裝入到TR寄存器中。(5)用一條遠(yuǎn)轉(zhuǎn)移指令裝載TR寄存器,以便訪問(wèn)新的TSS并保存當(dāng)前狀態(tài)。(6)現(xiàn)在Pentium已運(yùn)行在保護(hù)模式下。1.5分頁(yè)存儲(chǔ)管理分頁(yè)是虛擬存儲(chǔ)器多任務(wù)操作系統(tǒng)另一種存儲(chǔ)器管理方法。段的長(zhǎng)度是可變的,而頁(yè)的長(zhǎng)度是固定的,比如每頁(yè)4KB。分頁(yè)方法將程序分成若干個(gè)大小相同的頁(yè),各頁(yè)與程序的邏輯結(jié)構(gòu)沒(méi)有直接的關(guān)系。分頁(yè)存儲(chǔ)器的這種固定大小頁(yè)有一個(gè)缺點(diǎn),就是存儲(chǔ)管理程序每次分配最少是一個(gè)頁(yè)(即使它們并不全用)。一頁(yè)中未用的存儲(chǔ)器區(qū)域稱為碎片,碎片導(dǎo)致存儲(chǔ)器使用效率降低,但是分頁(yè)大大簡(jiǎn)化了存儲(chǔ)管理程序的實(shí)現(xiàn)。Pentium微處理器采用二級(jí)頁(yè)表方法對(duì)頁(yè)面進(jìn)行管理,第1級(jí)頁(yè)表稱作頁(yè)目錄,頁(yè)目錄中的頁(yè)目錄項(xiàng)指明第2級(jí)頁(yè)表中各頁(yè)表的基址。1.5.1頁(yè)目錄與頁(yè)表1.頁(yè)目錄基地址寄存器頁(yè)目錄存儲(chǔ)在內(nèi)存中,并通過(guò)頁(yè)目錄基地址寄存器CR3來(lái)訪問(wèn)??刂萍拇嫫鰿R3保存著頁(yè)目錄的基地址,該基地址起始于任意4KB的邊界。指令MOVCR3,reg用來(lái)對(duì)CR3寄存器進(jìn)行初始化。CR2是頁(yè)故障線性地址寄存器,它保存著檢測(cè)到的最后引起故障的32位線性地址。2.頁(yè)目錄頁(yè)目錄由頁(yè)目錄項(xiàng)組成,頁(yè)目錄項(xiàng)包含下一級(jí)頁(yè)表的基址和有關(guān)頁(yè)表的信息。Pentium微處理器中,頁(yè)目錄最多包含1024個(gè)頁(yè)目錄項(xiàng),每個(gè)頁(yè)目錄項(xiàng)為4個(gè)字節(jié),所以,頁(yè)目錄自身占用一個(gè)4KB的頁(yè)面(存儲(chǔ)頁(yè))。32位線性地址的最高10位(A31-A22)是頁(yè)目錄的索引,用于在頁(yè)目錄中查找不同的頁(yè)目錄項(xiàng),而頁(yè)目錄項(xiàng)中保存著下一級(jí)所對(duì)應(yīng)的頁(yè)表的基地址。3.頁(yè)表頁(yè)表由頁(yè)表項(xiàng)組成,頁(yè)表項(xiàng)包含頁(yè)面(存儲(chǔ)頁(yè))的基址和有關(guān)頁(yè)面的信息。Pentium微處理器中,頁(yè)表最多包含1024個(gè)頁(yè)表項(xiàng),每個(gè)頁(yè)表

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論