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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

軟件方面開始使用計算機(jī)高級語言(4)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

  • 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

提交評論