




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
匯編語言與接口技術綜合評測考試+作業+實驗(報告)+考勤與其他課程的關系匯編語言程序設計硬件構成、芯片編程使用微型計算機硬件系統馮·諾依曼型計算機的硬件分成五大部件,包括運算器、控制器、存儲器、輸入設備和輸出設備主板外部設備I/O接口微處理器CPU芯片組總線控制邏輯內存微處理器簡稱μP、MP或MPU算術邏輯單元ALU(ArithmeticLogicUnit)、控制單元CU(ControlUnit)和寄存器組(Registers)三個基本部分以及內部總線通用CPU專用單片機(SingleChipMicrocomputer)和數字信號處理器(DigitalSignalProcessor,DSP)微處理器單片機又叫微控制器(MicroControllerUnit,MCU),常用于控制領域,芯片內部除了CPU外還集成了其他如RAM/ROM,輸入輸出接口等主要部件,一個芯片配上少量的外部電路和設備就能構成具體的應用系統。比較著名的包括Intel公司的8位MCS51系列、16位/32位的MCS96/98系列以及其他各大處理器廠商基于ARM架構的各系列處理器。數字信號處理器專注于數字信號的高速處理,這類微處理器主要在通信、消費類電子產品領域使用,比較知名的是美國德州儀器公司(TexasInstruments,TI)的系列產品,如TMS320系列各代DSP等。80x86系列CPU發展1971年Intel成功設計了世界上的第一個微處理器:4位微處理器Intel4004。執行速度為50KIPS(IPS=InstructionPerSecond),即每秒執行5萬條指令80x86系列CPU發展8位微處理器1972年Intel公司推出了世界上第一款8位處理器8008Motorola公司的M6800、Zilog公司的Z80等Intel4004Intel8008Intel808016位微處理器1978年6月,Intel8086,第一個16位CPU1979年6月,Intel推出了Intel8088主要區別在于外部數據總線的寬度只能支持整數運算80286微處理器,該微處理器的最大主頻為20MHz,內、外部數據傳輸均為16位,使用24位地址總線。80286首次引入了保護模式32位微處理器1986年Intel推出了80386,它的數據總線和地址總線都是32位的,內部寄存器和操作也都是32位引入了虛擬8086模式1989年,Intel公司推出了80486,它集成了80386、80387和8KB片內高速緩存從80486開始,Intel采用了倍頻技術32位微處理器在1993年3月,Intel推出新一代奔騰(Pentium)CPUPentium內部的寄存器和運算操作仍然是32位兩個整型處理單元和一個浮點協處理單元兩條指令流水線超級標量技術動態轉移預取技術準64位32位微處理器1995年11月,Intel推出的PentiumPro,地址總線為36位,尋址范圍達到236=64GB。其片內高速緩存有兩級,分別為L1和L2,L2緩存為256KB或512KB。1997年1月,Intel發布了PentiumMMX指令集,增強了對多媒體數據的支持。32位微處理器1997年5月,Intel推出PentiumII,它的主頻達到233MHz~400MHz。片內高速緩存為32KB,數據Cache和指令Cache各占16KB。L2緩存為512KB,但沒有包含在CPU內部,采用新的封裝形式SECC(SingleEdgeContactCartridge,單邊接觸盒專利(Slot1))來連接PentiumII和L2緩存。低端賽揚(Celeron)處理器掉了它的L2緩存32位微處理器1999年2月,Intel推出PentiumIII處理器,主頻為450MHz、500MHz。具有一個流式指令擴展SSE(StreamingSIMDExtensions,SIMD即SingleInstructionMultipleData,單指令多數據流)的指令集,全面增強三維圖形運算,也對動畫、圖像、聲音、網絡、語音識別等功能進一步增強。PIII芯片內部都有一個128位處理器序號,每個CPU的序號是惟一的。用戶可以關閉。32位微處理器2000年11月,Intel推出PentiumIV處理器(也稱P4),主頻為1.4GHz。系統總線速度達到了400MHz,指令流水線達到20級,增加了SSE2指令集2004年2月,Intel發布了Pentium4E系列處理器64位微處理器2001年推出了第一款64位的Itanium(安騰)微處理器架構不同于其他Intel處理器采用的x86(包含x86-64)架構,也不與x86架構兼容,在市場上沒有取得很大的成功。AMD公司,沿襲了IA-32的思路,發布了與x86兼容的64位CPU英特爾64位擴展技術(ExtendedMemory64Technology,EM64T)(走回老路)在x86-64上,部分技術的主導權已經屬于AMD微處理器性能指標速度指標主頻也叫時鐘頻率主頻越高,一個時鐘周期里完成的指令數也越多,CPU的運算速度也就越快,執行程序的時間就能縮短外頻是系統總線的工作頻率,即CPU與周邊設備傳輸數據的頻率。目前絕大部分計算機系統中外頻也是內存與主板之間同步運行的速度微處理器性能指標倍頻是指CPU和系統總線之間工作頻率相差的倍數,當外頻不變時,倍頻越高,CPU主頻也就越高。CPU主頻的計算方式變為:主頻=外頻×倍頻。倍頻可以從1.5一直到23甚至更高,以0.5為一個間隔單位。例如當外頻等于200MHz時,倍頻為9,則主頻為200MHz×9=1.8GHz。假定購買了一顆CPU,它的工作頻率是2.4GHz,倍頻系數設定為18,請問外頻是多少?2.4GHz/18≈133MHz,因此在設置主板跳線時應將主板頻率置為133MHz。微處理器性能指標前端總線(FrontSideBus,FSB)是指處理器到北橋之間的總線。前端總線的數據帶寬=(總線頻率×數據位寬)÷8QDR(QuadDateRate)技術及其他類似的技術使得前端總線的頻率成為外頻的2倍、4倍甚至更高。如Intel在Pentium4處理器采用了4倍傳輸率的前端總線,該技術可以使系統總線在一個時鐘周期內傳送4次數據。內存控制器被逐步集成到了處理器中,CPU直接和內存通信,不再通過北橋,前端總線也就消失了微處理器性能指標例1-2IntelPentium4處理器中采用了四倍傳輸率的前端總線,當主頻為3.2GHz,外頻為200MHz時,試問倍頻是多少?已知數據位寬為64位,則前端總線頻率為多少?前端總線的數據傳輸性能峰值為多少?倍頻=3.2GHz/200MHz=16FSB頻率=200MHz×4=800MHz峰值傳輸性能200M×4×64÷8=6.4G/s高速緩沖存儲器CPU與主存之間數據交換的速度成為整個計算機處理能力的瓶頸高速緩沖存儲器Cache目的是協調主頻和內存總線頻率之間的差異。高速緩存的容量和工作速率對提高計算機的性能有著重要的作用。CPU的緩存分為:
LlCache(一級緩存),CPU同頻,內部
L2Cache(二級緩存)
L3Cache(三級緩存)L1常采用哈佛結構,分為數據緩存和指令緩存微處理器性能指標制造工藝1995年以后,從0.5微米、0.35微米、0.25微米、0.18微米、0.15微米、0.13微米、0.09微米(90納米)、65納米、45納米,到現在14納米(2016年,Corei7Kabylake架構)以及用于移動平臺的10納米(2017年,高通Qualcomm驍龍835處理器)和7納米(2018年,三星/臺積電制程)微處理器性能指標核心電壓一般CPU的工作電壓包括CPU的核心電壓與I/O電壓兩部分明顯下降趨勢,降低電壓是CPU主頻提高的重要因素之一降低CPU的功耗,減少發熱量微處理器性能指標封裝形式雙列直插式封裝技術,也叫DIP封裝(DualIn-LinePackage)Socket架構的常采用插針網格陣列封裝技術(CeramicPinGridArrauPackage,PGA)、球柵陣列封裝技術(BallGridArrayPackage,BGA)或者觸點陣列封裝(LandGridArray,LGA)封裝微處理器軟件特性工作模式實模式、保護模式和虛擬實模式指令系統復雜指令集CISC,精簡指令集RISC微處理器軟件特性超線程技術一個物理處理器核上會模擬出兩個邏輯內核微處理器軟件特性超標量和超長指令字超標量技術指的是CPU在同一時刻執行兩條或兩條以上指令的能力。超標量結構使用多個功能部件同時執行多條指令,實現指令級的并行超標量超標量+超流水多核技術為什么多核?單核發展到了極限。功耗限制互連線延時設計復雜度多核技術什么是多核多核是指在一枚處理器中集成兩個或多個完整的計算引擎(內核),多核處理器是單枚芯片(也稱為“硅核”),能夠直接插入單一的處理器插槽中,操作系統會利用所有相關的資源,將它的每個執行內核作為分立的邏輯處理器。通過在多個執行內核之間劃分任務,多核處理器可在特定的時鐘周期內執行更多任務,實現更好的并行處理。多核技術1996年斯坦福大學研制出世界上第一款多核處理器的原型系統Hydra以來。2005年4月Intel推出簡單封裝雙核的奔騰D和奔騰4至尊840處理器;AMD公司也發布了雙核皓龍(Opteron)和速龍(Athlon)。2006年被認為是雙核元年。超級計算中國從1978年開始,歷經5年研制,中國第一臺被命名為“銀河”的億次巨型電子計算機在國防科技大學誕生。2010年11月14日中國首臺千萬億次超級計算機系統“天河一號”在全球超級計算機前500強排行榜排名第一。直到2011年才被日本超級計算機“京”超越。2013年6月由國防科技大學研制的“天河二號”超級計算機系統,以峰值計算速度每秒5.49億億次、持續計算速度每秒3.39億億次雙精度浮點運算的優異性能位居榜首,成為全球最快超級計算機。截止到2015年3月“天河二號”
多次蟬聯全球最快的超級計算機冠軍。超級計算在2017年全球超級計算機500強排名中,中國的“神威·太湖之光”和“天河二號”超級計算機分列冠亞軍。500強榜單中,中國占了202臺,美國有143臺。此外,中國超算的總性能也超越美國,占該榜單總處理能力的35.4%,美國則占29.6%。處理器是軟肋匯編語言與接口技術主板和內存主板(MainBoard,MotherBoard,SystemBoard)是微型機各種硬件的載體。微型機的CPU、內存及芯片組等部件都安裝在一塊電路板上,這塊電路板稱為主機板(主板)。主板結構AT、ATX和BTX三大類AT結構主要在早期的微型計算機中使用,目前已經被淘汰。AT結構的初始設計是讓擴展總線以微處理器相同的時鐘速率來運行。擴展AT(AdvancedTechnologyeXtended)主板結構,即ATX主板標準,取代了AT主板規格。BTX(BalancedTechnologyeXtended)是Intel公司2003年發布的新型主板架構,目標是取代ATX結構。新架構的發展目標是完全取消傳統的串口、并口、PS/2等接口,并很好支持PCIExpress和串行ATA等新技術。芯片組芯片組(Chipset)是主板的核心組成部分幾乎決定了主板的全部功能包括控制芯片組、主板BIOS芯片和CMOS芯片等控制芯片組南北橋體系結構CPU+北橋+南橋的體系結構內存控制器:北橋芯片I/O控制器:南橋芯片北橋芯片控制CPU、內存和圖形加速器接口(AGP)等設備之間的數據傳輸主板上靠近CPU插槽的位置。發熱量一般較高,通常需要安裝散熱片內存控制器中心(MemoryController
Hub,MCH)前端總線FSB由MCH提供,目前是64位芯片組的名稱就是以北橋芯片的名稱來進行命名北橋芯片MCH芯片的類型決定著RAM的類型和容量早期MCH提供的顯卡接口是AGP(AcceleratedGraphicsPort)總線接口,但現在已被數據傳輸速率更快的PCI-E取代南橋芯片I/O控制中心(I/O
Controller
Hub,ICH)負責對I/O設備的讀寫控制和數據的傳輸處理,提供各種外部設備的接口來實現硬、軟盤和光驅等設備之間的數據傳輸一般在遠離CPU插槽,靠近PCI槽的位置,這種布局是考慮到它所連接的I/O總線較多,離處理器遠一點有利于布線IDE(Integrated
Drive
Electronics)控制器、USB(Universal
Serial
Bus)控制器、PCI控制器、音頻控制器、SATA(Serial
Advanced
Technology
Attachment)控制器和網絡控制器、DMA控制器、中斷控制器、定時/計數器、實時時鐘控制器RTC(Real-Time
Clock)和CMOS
RAM南橋芯片ICH10是最后一個版本PCH平臺控制器支持6條PCI-E通道、4個主PCI接口、12個USB2.0接口、并支持USB接口禁用功能,支持6個SATA3Gbps接口單芯片組體系結構CPU+南橋的單芯片組體系結構內存控制器、北橋芯片的其它部分包括GPU核心、PCI-E控制器等都被集成到CPU里面BIOS及CMOS芯片BIOS(BasicInput/OutputSystem,基本輸入/輸出系統)全稱是ROM-BIOS,只讀存儲器基本輸入輸出系統開機上電自檢程序和系統啟動自舉程序、系統設置信息早期的BIOS多為可重寫EPROM芯片,現在多采用FlashROM(可擦可編程只讀存儲器)BIOS及CMOS芯片CMOS芯片是電腦主板上的一塊可讀寫的RAM芯片,用它來保存當前系統的硬件配置和用戶對某些參數的設定?,F在做到了BIOS芯片中CMOS電池單通道內存技術單通道系統中,北橋芯片內部只有一個內存控制器,系統安裝的多個內存條連接到同一個內存總線上。多個內存條相當于串行工作,一次只有一個內存條工作,內存條數目增多,只能增加容量,并不能增加帶寬。假定2條DDR400內存條,工作在200MHz頻率下,每個時鐘可以傳送2次64位數據,則單通道系統中內存總線的總帶寬是多少?200M×2×64÷8=6400MB/s=3.2GB/s雙通道內存技術芯片組有兩個內存控制器,構成雙通道內存總線(DualChannelMemoryBus)與內存本身無關,任何DDR內存都可工作在支持雙通道技術的主板上內存條利用并聯方式運行,當連接兩條內存時,總線寬度達到64×2=128位雙通道要求按主板上內存插槽的顏色成對使用,如雙通道系統中安裝兩條2GB的內存比安裝一條4GB的效果要好雙通道內存技術假定2條DDR400內存條,工作在200MHz頻率下,每個時鐘可以傳送2次64位數據。雙通道系統中內存總線的總帶寬是多少?2×200M×2×64÷8=6400MB/s=6.4GB/s三通道內存技術隨著IntelCorei7平臺發布而出現,是雙通道內存技術的后續技術發展將同色的三根內存插槽插上內存即可,系統會自動識別,并進入三通道模式如果插上非3或非6條的內存,如4根內存,系統會自動進入單通道模式。主板插槽CPU插槽接口方式有引腳式、卡式、觸點式、針腳式常見的CPU插槽類型可分為Slot架構和Socket架構兩種內存插槽早期的8位和16位SIMM(SingleInlineMemoryModule)內存模組使用30Pin接口32位SIMM模組使用72Pin接口SDRAM開始使用DIMM結構的插槽SDRAMDIMM為168PinDIMM結構,每面為84Pin,有兩個卡口,用來避免插入插槽時,錯誤將內存反向插入DDRDIMM則采用184PinDIMM結構,每面有92Pin,只有一個卡口DDR2、DDR3DIMM為240PinDIMM結構,每面有120Pin電源插槽有AT電源插座和ATX電源插座兩種AT電源插座為12芯單列插座,目前已被淘汰ATX電源插座早期為D型20芯雙列插座從ATX12V2.0開始,電源接口從傳統的20芯升級為24芯,多出的4芯主要是為解決功耗較大的PCI-E顯卡供電問題CPU電源4芯的+12V接插頭,單獨向處理器供電服務器平臺上由于對供電要求更高,很早引入了更強的8PIN12V接口PCI插槽PCI(PeripheralComponentInterconnect,外設部件互連總線)Intel公司1991年推出的用于定義局部總線的標準,支持即插即用在CPU和原來的ISA總線之間插入的一級總線工作頻率一般為33MHz/66MHz,提供32位和64位兩種位寬33MHz下最大數據傳輸率為133MB/sec(32位)和266MB/sec(64位)目前被PCI-E(PCIExpress)逐步取代PCI-E插槽完全兼容PCI較短的PCI-E卡可以插入較長的PCI-E插槽中使用,支持熱拔插IDE接口也稱作并行ATA(ParallelATA)ICH有2個IDE通道,每個通道上可以連接2個IDE設備(如硬盤、光驅等),其中一個為主設備(Master),另一個為從設備(Master)已經被SATA接口所取代IDE接口SATASerialATA采用串行方式傳輸數據,只需要7芯電纜就能連接主板和硬盤。結構簡單,支持熱插拔,數據傳輸可靠性高,傳輸的速度達到600MB/s甚至更高機箱連接線用來連接主板和機箱面板計算機狀態指示以及外延主板開關和接口一般黑色/白色為負,其他顏色為正外部接口主要包括用于操作控制、音視頻輸入/輸出、網絡接入、外置存儲接入等接口PS/2接口來源于Personal2,IBM個人電腦用于鼠標、鍵盤等設備的輸入裝置接口,不是傳輸接口只有采樣率,沒有傳輸速率一般情況下,PS/2接口的鼠標為綠色,鍵盤為紫色VGA、DVI和HDMI接口VGA是傳輸模擬信號,DVI和HDMI傳輸數字信號。后兩者傳輸數字信號的抗干擾性和傳輸穩定性比VGA好。與DVI相比,HDMI主要優勢是能夠同時傳輸音頻數據,在視頻數據的傳輸上沒有差別USB接口1996年Intel牽頭推出是連接計算機系統與外部設備的一種串口總線標準,也是一種輸入輸出接口的技術規范目前為3.0版本,傳輸速度達到4.8Gbps已取代原有的串口和并口e-SATA接口擴展的SATA接口讓外部I/O接口使用SATA功能并不是一種獨立的外部接口技術標準擁有e-SATA接口的電腦,可以把SATA設備直接從外部連接到系統當中,而不用打開機箱。其他接口網口音頻接口(DAC/ADC)IEEE1394接口串/并口內存內存和外存的差異工藝容量成本速度揮發性存儲器容量存儲器的容量以字節(byte)為單位,用大寫字母B表示。以字節編址,包含8個二進制位(bit)二進制位用小寫字母b表示。在描述比較大的存儲容量時,經常使用KB、MB、GB、TB等單位。內存地址及內容每個單元分配了一個唯一的地址,地址從0開始編號,順序遞增10000100025 90 D6 0E 25 40 FC 00-00 00 00 00 25 60 FC 000000101000 00 00 00 00 00 0000-00 00 00 00 00 00 00 000000102000 00 00 00 00 00 0000-00 00 00 00 00 00 00 000000103000 00 00 00 00 00 0000-00 00 00 00 25 20 EA 0E0000104000 00 00 00 67 40 270F-67 E0 7A 00 00 00 00 00
字節、字、雙字字節:字節是PC機中內存存取信息的基本單位,1個字節包含8個二進制位字:1個字包含16個二進制位,即兩個字節,分別稱為高字節和低字節。雙字:1個雙字包含32個二進制位存儲器訪問單字節數據訪問多字節數據訪問小端存儲:低字節在前(LittleEndian)的存儲格式。即低地址中存放低字節數據,高地址中存放高字節數據訪問這些數據時只需給出最低單元的地址號000010002590D60E2540FC00000000002560FC00從00001000H中分別取出1個字和一個雙字9025H和0ED69025H00001000:2590D60E2540FC00000000002560FC00按小端存儲讀出0000100C地址的字節、字、雙字數據(0000100C)字節=25H(0000100C)字=6025H(0000100C)雙字=00FC6025H匯編語言與接口技術微處理器管理模式微處理器的基本結構CPUMMUBIUBIU總線接口部件(BusInterfaceUnit,BIU)通過數據總線、地址總線、控制總線來與外部環境聯系,包括從存儲器中預取指令、讀寫數據,從I/O端口讀寫數據,以及其他的控制功能。數據總線和地址總線都是32位的。從存儲器中存儲數據最快也需要兩個時鐘周期內完成。CPU中央處理部件(CentralProcessUnit,CPU)由指令部件和執行部件組成。指令部件包括指令預取單元(InstructionPrefetchUnit,IUP)和指令譯碼單元(InstructionDecodeUnit,IDU)兩部分指令預取負責從存儲器取出指令,放到一個16字節的FIFO指令隊列中,這個隊列叫做指令預取隊列。指令譯碼單元從指令預取隊列中取出指令,進行譯碼,并將譯碼后的可執行指令放入已譯碼指令隊列中。執行部件(ExecutionUnit,EU)執行從已譯碼指令隊列中取出的指令。它包含8個32位通用寄存器、32位的算術運算單元ALU、1個64位的移位器和乘/除硬件。如果是算術、邏輯或者移位指令,則交給ALU處理,若指令執行時需要段或者頁單元產生操作數地址(尋址),則交給分段或者分頁單元進行處理。MMU存儲器管理單元由分段部件和分頁部件組成,提供存儲器管理和保護服務,實現從邏輯地址到物理地址的轉換,既支持段式存儲管理、頁式存儲管理,也支持段頁存儲管理。CPU工作模式實模式CPU被復位(加電)時,自動進入實模式。在實模式下,這些CPU就相當于高性能的8086,使用1MB地址空間以及16位的“段首址:偏移”的地址格式。全部權限保護模式CPU支持內存分頁機制,提供段式和頁式內存管理功能,協助操作系統高效地實現虛擬內存,支持多任務和特權級等。保護模式下CPU執行JMP/CALL/IRET等指令,就可實現任務切換。分為特權級0、1、2、3虛擬8086模式兼容以前的DOS及應用程序(即8086程序),從80386開始增加了虛擬8086模式(V86模式)86模式是以任務形式在保護模式上執行的,每個任務都有自己的任務狀態段,各個V86任務所擁有的1MB地址空間相互獨立特權指令,如屏蔽中斷指令CLI、中斷指令INT、中斷返回指令IRET等,在DOS程序中是合法的。如果不讓這些指令在V86模式中執行,DOS程序就無法工作。為了解決這個問題,V86管理程序采用模擬的方法來完成這些指令。寄存器微處理器內部的寄存器可以分為:程序可見的寄存器(ProgramVisibleRegister)程序不可見的寄存器(ProgramInvisibleRegister)80386以上CPU才包含程序不可見寄存器組程序可見寄存器Intel8086~Core2(包括64位擴展)通用型寄存器寄存器常用功能64位32位16位8位RAX累加器,乘法、除法運算等指令的專用寄存器。RAXEAXAXAH,ALRBX保存數據,可用作基址寄存器。RBXEBXBXBH,BLRCX保存數據,計數值(用于循環,串指令等),80386以上CPU也可用于訪問存儲器的偏移地址。RCXECXCXCH,CLRDX保存數據,乘法、除法運算指令的專用寄存器,80386以上CPU也可用于訪問存儲器的偏移地址。RDXEDXDXDH,DLRBP保存訪問存儲單元時的偏移地址。RBPEBPBP無RDI用于尋址串指令的目的操作數。RDIEDIDI無RSI用于尋址串指令的源的操作數。RSIESISI無通用寄存器功能中RAX,RBX,RCX和RDX可以作為64位,32位,16位和8位寄存器使用,微處理器訪問不同長度數據時,可以直接利用表中的命名。如利用MOV指令修改DX的值:MOVDX,0010h。指令給DX寄存器賦值0010h,指令執行結果只會改變寄存器低16位,RDX的其他部分保持不變。又如EAX的值為6BC30E9FH,那么,AX=0E9FH(AH=0EH,AL=9FH)。64位中新增(非擴展)寄存器R8~R15共8個64位寄存器。這些寄存器可以按照字節、字、雙字或者四字方式尋址。訪問位數控制字寄存器位置示例8B7~0MOVR8B,R9B16W15~0MOVR9W,AX32D31~0MOVR10D,EAX64無63~0MOVR11,RAX段寄存器80286以前的CPU有4個段寄存器,分別稱為代碼段寄存器CS(CodeSegment),數據段寄存器DS(DataSegment),堆棧段寄存器SS(StackSegment),附加數據段寄存器ES(ExtraSegment)。自80386CPU開始,增加了FS和GS兩個段寄存器。分段:基于邏輯分頁:基于管理實模式:段地址+段內偏移保護模式:段選擇符這些段寄存器都是16位的,對于16位CPU段長度限制為216B=64KB,對于32位CPU段長度限制為232B=4GB,實模式和V86模式下它們的用法兼容16位CPU,即段寄存器保存20位段首址的高16位,段首址的低4位為0。在保護模式下,不直接存放段基址,而是存放一個索引,稱之為段選擇符(SegmentSelector)。由段選擇符從全局描述符表或局部描述符表中找到8個字節長的段描述符,從而確定關于這個段的全部描述信息。RPL(RequestorPrivilegeLevel):請求特權級,表示將要訪問的段的特權級。取值范圍為0~3。TI(TableIndicator):表指示符。為0時,從全局描述符表(GDT)中選擇描述符;為1時,從局部描述符表(LDT)中選擇描述符。Index:索引。指出要訪問描述符在段描述符表中的順序號,Index占13位。因此,順序號的范圍是0~8191。每個段描述符表(GDT或LDT)中最多有8192=213個描述符。DS=0023H=0000000000100011b,可知:Index=0000000000100b=4。TI=0,RPL=11b=3。因為TI=0,DS的段描述符在GDT中。Index×8=4×8=0020H,該描述符在GDT表中的位置是0020H~0027H,占8個字節。RPL=3,請求特權級為3。專用寄存器Intel8086~Core2專用型寄存器包括:指令指針寄存器、堆棧指針寄存器和標志寄存器等。指令指針寄存器IP/EIP/RIP指令指針指向程序的下一條指令。當微處理器為8086/8088,80286或者工作在實模式下時,這個寄存器取16位IP;80386以及更高型號的微處理工作于保護模式下時這個寄存器取32位EIP。在64位模式中,RIP包含40位地址總線。指令指針可以由轉移指令或者調用指令修改(間接)。堆棧指針寄存器SP/ESP/RSP堆棧指針,指向棧頂單元。這個寄存器作為16位寄存器時使用SP;作為32位寄存器時,使用ESP;64位使用RSP。標志寄存器FLAGS/EFLAGS/RFLAGS用來指示微處理器狀態并控制它的操作。從8086開始直到Pentium微處理器向上兼容。8086/8088和80286使用16位FLAGS寄存器。80386以及更高微處理器使用32位EFLAGS寄存器。64位版本中的RFLAGS包含EFLAGS和FLAGS寄存器狀態位+控制位進位標志CF(CarryFlag)當結果的最高位(字節操作時的第7位或字操作時的第15位)產生一個進位或借位,CF=1,否則CF=0。在移位或循環移位指令中,會把操作數的最高位(左移時)或最低位(右移時)移入CF中。奇偶標志PF(ParityFlag)Intel微處理器中采用奇校驗,當執行結果的低8位中二進制1的個數為奇數時,PF為0,否則為1。不考慮其他位6DH+6DH=DAHDAH=11011010B,結果中有5個1,因此PF為0。輔助進位標志AF(AuxiliaryCarryFlag)在字節操作時若低半字節(一個字節的低4位)向高半字節有進位或借位;在字操作時若低位字節向高位字節有進位或借位,則AF=1,否則AF=0。這個標志用于十進制算術運算指令中,即通過二進制數運算調整為十進制數表示的結果。(BCD)零標志ZF(ZeroFlag),當運算結果為零時,ZF為1;否則為0。符號標志SF(SignFlag),它與運算結果的最高位相同。對字節操作(8位運算)來說,是結果的第7位;對字操作(16位運算)來說,是結果的第15位。當SF=0時,結果為正數或0;當SF=1時,結果為負數。單步標志TF(TrapEnableFlag),當TF=1時,CPU進入單步方式,在每條指令執行以后產生一個內部中斷(單步中斷)。當TF=0時,CPU執行指令后不產生單步中斷。中斷允許標志IF(InterruptEnableFlag),當IF=1時,允許CPU接收外部中斷請求,此時為“開中斷”狀態。當IF=0時,屏蔽外部中斷請求,此時為“關中斷”狀態。方向標志DF(DirectionFlag),在字符串操作指令中,當DF=0時,串操作為自動增址;當DF=1時,串操作為自動減址。STD指令置位DF,CLD指令清除DF。溢出標志OF(OverflowFlag),帶符號數運算時,當其運算結果超出了8位或16位帶符號數所能表達的范圍時,將產生溢出,置OF為1,否則OF清0。溢出OF與進位CF是兩個不同性質的標志。IOPL(I/OPrivilegeLevel),表示I/O特權級,IOPL占2位,取值為0、1、2、3對應四個特權級。只有特權級高于IOPL的程序才能夠執行I/O指令,否則會產生異常,并將任務掛起。NT(NestTask),嵌套任務位,此位只用于保護模式,如果保護模式下當前的任務嵌套在其他任務中,此位為1,否則為0。IRET指令會檢測NT的值。若NT=0,則執行中斷的正常返回;若NT=1,則執行任務切換操作。VM(Virtual8086Mode),V86模式位。VM=1時,表示當前CPU正工作在V86模式下;VM=0,表示當前CPU工作在實模式或保護模式下。VM位只能在保護方式中由IRET指令置位(如果當前特權級為0)或在任意特權級上通過任務切換而置位。486以上新增標志位:ID、VIP,VIF和ACAC(AlignmentCheck),地址對齊檢查位。尋址一個字或者雙字時,當地址不在字或者雙字的邊界上,此時AC=1,否則AC=0。VIF(VirtualInterruptFlag),虛擬中斷標志,與VIP一起使用,在虛擬方式下提供中斷允許標志位IF的副本。VIP(VirtualInterruptPending),虛擬中斷掛起標志,為Pentium~Pentium4處理器提供有關虛擬模式中斷的信息,它用于多任務環境下,為操作系統提供虛擬中斷標志和中斷掛起信息。ID(Identification)微處理器標識標志,用來指示Pentium~Pentium4處理器,支持CPUID指令。CPUID指令是IntelIA-32架構下獲得CPU信息的匯編指令,可以得到CPU類型、型號、制造商、商標、序列號、緩存等一系列CPU相關的信息??刂萍拇嫫鰿R0~CR3(ControlRegister)。CR0的低5位是系統控制標志,被稱為機器狀態字(MachineStatusWord,MSW)分頁機制中用到CR3、CR2和CR0。CRx3130~1211~543210CR0PG00000000000000000000000000ETTSEMMPPECR1保留未用CR2頁故障線性地址CR3頁目錄基址000000000000PE(ProtectionModeEnable):保護模式允許標志。PE=0為實模式,CPU復位時自動進入實模式;PE=1為保護模式。可以通過軟件設置PE進入或退出保護模式。MP(MonitorCoprocessorExtension):運算協處理器存在位,MP=1表示系統中有協處理器。EM(EmulateProcessorExtension):仿真位。設置該位可以使每條ESC指令引起7號中斷(ESCape指令用來對80387協處理器指令編碼)。EM=1時,可以利用7號中斷,用軟件來仿真協處理器的功能;EM=0時用硬件控制浮點指令。TS(TaskSwitched):任務切換標志。TS=1時表明任務已經切換,在保護模式下,TR的內容改變將自動設置此位為1。ET(ExtensionType):協處理器選擇標志,早期80386里面沒有80387協處理器,因此設置此位。當處理器復位時,ET位被初始化以指示系統中數字協處理器的類型。如果系統中存在80387協處理器,那么ET位置1;如果系統中存在80287協處理器或者不存在協處理器,那么ET位清0。80386以后的系統中ET位被置為1表示系統中存在協處理器。PG(PagingEnable):分頁標志。PG=1時,存儲器管理單元允許分頁,線性地址通過頁表轉換獲得物理地址。PG=0時,分頁功能被關閉,線性地址等于物理地址。當PG=0時,CR2和CR3寄存器無效,PG=1時二者用于分頁管理機制。分頁-頁面每頁大小為4KB。CR3也被稱做頁目錄基址寄存器PDBR(PageDirectoryBaseRegister),它的高20位用于保存頁目錄表的起始物理地址的高20位。向CR3中裝入一個新值時,低12位必須為0,這是由于頁目錄是頁對齊的,所以僅高20位有效,低12位保留未用;從CR3中取值時,低12位被忽略。分頁-頁面CR2也被稱做頁面故障線性地址寄存器(PageFaultLinearAddressRegister),用于發生頁異常時報告出錯信息。如在訪問某個線性地址時,該地址的所在頁沒有在內存中,則發生頁異常,處理器把引起頁異常的線性地址保存在CR2中。全局描述符表寄存器全局描述符表(GlobalDescriptorTable,GDT)是用來定義全局存儲器空間的一種機制,它用段描述符來描述一個全局存儲器中的段,每個GDT最多含有213=8192個描述符(8192×8=64KB)。全局描述符表可以存儲在內存的任何位置,通過全局描述符表寄存器(GlobalDescriptorTableRegister,GDTR)給出它的位置和大小。LGDT指令可以將描述符表的起始位置裝入GDTR。GDTR是48位的寄存器。其最低16位是限長,給出GDT的字節大?。ㄆ渲当菺DT的長度少1),其高32位是基址,指出GDT在物理存儲器中存放的基地址。
47
1615
0GDTR基址限長已知GDTR=0E003F0003FFH,則全局描述符表的基址是多少?這個全局描述符表有多大,里面有多少個描述符?GDT的地址為0E003F00H長度為3FFH+1=400H??扇菁{400H/8=80H個段描述符。中斷描述符表寄存器中斷描述符表寄存器(InterruptDescriptorTableRegister,IDTR)也在存儲器中定義了一個表,該表稱為中斷描述符表IDT。IDT中保存的不是段描述符,而是中斷門描述符。每個門描述符也包含8字節IDT最多包含256個門描述符,因為CPU最多支持256個中斷。中斷門指向的是中斷服務程序的入口。IDTR是48位的寄存器。其最低16位是限長,給出IDT的字節大小(其值比IDT的長度少1),其高32位是線性地址,經過分頁部件轉換為物理地址,指出IDT在物理存儲器中存放的基地址。已知IDTR=0E003F40007FFH,則中斷描述符表的基址是多少?這個中斷描述符表有多大,里面有多少個描述符?IDT的地址為0E003F400H長度為7FFH+1=800H可容納800H/8=100H個描述符。保護模式下的中斷描述符表IDT的位置是可變的,實模式下的中斷向量表的地址是固定在物理地址00000H處。GDTR和IDTR的值必須在進入保護模式之前裝入。在實模式下執行LGDT和LIDT指令裝入GDTR和IDTR。局部描述符表寄存器保護模式提供了多任務的環境,為每個任務建一個局部描述符表(LocalDescriptorTable,LDT)。LDT只含有與系統中某一個任務相關的各個段的描述符。可以使每一任務的代碼段、數據段、堆棧段與系統其他部分隔離開。多任務環境下由于每項任務都有自己的LDT(且每項任務最多只能有一個LDT),因此保護模式下可以有多個LDT。局部描述符表寄存器LDTR并不直接指出LDT的位置和大小。LDTR的內容是一個16位的選擇符,指向一個LDT描述符(GDT中)。LDT描述符指出LDT的位置和大小。在任務切換時,CPU從新任務的任務狀態段中裝入LDTR,從而使用新任務的局部存儲器空間。①和②步由GDTR確定了GDT表在存儲器中的位置和限長。LDTR中是一個選擇符,它包含了LDT描述符在GDT中的索引。③步是依據LDTR在GDT中取出LDT描述符的過程。在LDT描述符中,包含由LDT的位置和限長,即④和⑤步任務寄存器任務寄存器(TaskRegister,TR)在保護模式的任務切換機制中使用。TR是16位的選擇符,其內容為索引值,它選中的是TSS描述符。TR的初值由軟件裝入,當執行任務切換指令時TR的內容自動修改。在多任務環境下,每個任務都有屬于自己的任務狀態段(TaskStatusSegment,TSS),TSS中包含啟動任務所必需的信息。任務狀態段TSS在存儲器的基地址和限長(大?。┯蒚SS描述符指出。TSS描述符放在全局描述符表GDT中,TR內容為選擇符,它指出了TSS描述符在GDT中的順序號。假定全局描述符表的基址為00011000H,TR為2108H,問TSS描述符的起止范圍是多少?TSS起始地址=00011000H+2108H=00013108HTSS終止位置=00013108H+7H=0001310FH①和②步由GDTR確定了GDT表在存儲器中的位置和限長。TR是一個選擇符,這個選擇符中包含了TSS描述符在GDT中的索引。③步依據TR在GDT中取出TSS描述符。在第④和⑤步中,在TSS描述符中取得TSS的基址和限長。內存管理實模式下分段管理20位地址總線,最大可尋址內存空間應為220=1MB,其物理地址范圍從00000H~FFFFFH。段的大小可以變化,16位CPU中最大的段為216=64KB。段的起始地址可以在任何16的倍數上,段寄存器中存放段基址除以16得到的商(也就是20位段基址的高16位)。段基址:偏移量10H×段基址+偏移量某內存單元的地址用十六進制數表示為1234:5678其物理地址為179B8H計算實模式下1000:1F00、11F0:0000、1080:1700的物理地址。1000:1F00=10H×1000+1F00=11F00H;11F0:0000=10H×11F0+0000=11F00H;1080:1700=10H×1080+1700=11F00H。保護模式下分段管理保護模式下,邏輯地址同樣由段基址:偏移量的格式形成,只不過,原來用來存儲段基址的段寄存器不再表示段的起始位置,而是用來表示段選擇符。該地址表示形式稱為虛擬地址,對應的地址空間稱為虛擬地址空間。以CS:EIP為例,CS中存放了一個16位的段選擇符,EIP是32位偏移量。16位段選擇符加上32位偏移量,總共是48位,其中段選擇符的2位RPL與虛擬地址的轉換無關,因此可以認為虛擬地址是46位的,段選擇符的Index和TI占14位,偏移量為32位,虛擬地址空間為246B=64TB段描述符段描述符用于描述代碼段、數據段和堆棧段。段描述符位于GDT或LDT中,占8字節(64位),包括:段基址(32位)、限長(20位)、訪問權限(8位)和屬性(4位)。P(Present):存在位。P=1時表示該段己裝入內存;P=0時表示該段沒有在內存中,此時訪問該段會產生段異常。操作系統將某個段從物理內存中交換到磁盤時,設置此位為0。DPL(DescriptorPrivilegeLevel):描述符特權級,說明該段的特權級,取值為0~3。S(System):描述符類型位,S=1時,這個段為代碼段、數據段或堆棧段;S=0時,為系統段描述符。E(Executable):可執行位,用來區分代碼段和數據段。S=1且E=1時,這是一個代碼段,可執行。S=1且E=0時,這是一個數據段或堆棧段,不可執行。E=0時,后面的兩位為ED和W;若E=1時,后面的兩位為C和R。ED(ExpansionDirection):擴展方向位(對數據段或堆棧段)。ED=0時,段向上擴展(從低地址向高地址擴展),偏移量小于等于限長。ED=1時,段向下擴展(從高地址向低地址擴展),偏移量必須大于限長。限長是指地址上限。一般情況下ED位為0。W(Writeable):寫允許位(對數據段或堆棧段)。W=0時,不允許對這個數據段寫入;W=1時,允許對這個數據段寫入。C(Conforming):一致位(對代碼段)。C=0時,這個段不是一致代碼段;C=1時,這個段是一致代碼段。一致代碼段就是操作系統拿出來被共享的代碼段,這些代碼段允許被低特權級的用戶直接調用訪問。此時特權級高的程序不允許訪問特權級低的代碼,即核心態不允許調用用戶態的代碼;特權級低的程序可以訪問到特權級高的代碼,但是特權級不會改變。除了一致代碼段外,其他的代碼段稱為非一致代碼段。非一致代碼段常用于那些為了避免低特權級的訪問而被操作系統保護起來的系統代碼。非一致代碼段只允許特權級相同的程序間訪問,絕對禁止不同級訪問,即核心態不使用用戶態,用戶態也不使用核心態。R(Readable):讀允許位(對代碼段)。R=0時,不允許讀這個段的內容;R=1時,允許讀這個段的內容。對代碼段進行寫操作總是被禁止的。A(Accessed):訪問位。A=1表示段己被訪問(使用)過;A=0表示段未被訪問過。操作系統利用這個位對段進行使用統計,可以將那些很長時間沒有被訪問過的段從內存中調出,釋放其內存給其他程序所使用。G(Granularity):粒度。G=1時,限長以頁為單位;G=0時,限長以字節為單位。D(DefaultOperationSize):默認操作數寬度。D=1時,為32位數據操作段;D=0時,為16位數據操作段。限長位在描述符中一共占20位。G=1時,限長的內容加上1后就是段所占的頁數,1頁的大小為212=4KB;G=0時,段限長以字節為單位,限長的內容+1就是段所占的字節數。G=1,限長位為FFFFFH時,段所占的頁數是FFFFFH+1=100000H,即220頁,段的大小為232=4GB,有效偏移量的范圍是00000000H~FFFFFFFFH。G=0,限長位為FFFFFH時,段的大小為220=1MB,有效偏移量的范圍是00000000H~000FFFFFH。設段基址為0CD310000H,段界限為001FFH。G位分別為0和為1時,求段的起始地址和段的結束地址。段的起始地址=段基址=0CD310000H(G=0)段的結束地址=段基址+段限長=0CD310000H+001FFH=0CD3101FFH(G=1)段的結束地址=段基址+段限長=0CD310000H+(001FFH+1)×4K?1=0CD50FFFFH段描述符的實際應用各段寄存器及段描述符的值:CS=001BDS=0023ES=0023SS=0023FS=0030GS=0000GDTbase=E003F000Limit=03FFE003F0000000000000000000-FFFF0000009BCF00E003F010FFFF00000093CF00-FFFF000000FBCF00E003F020FFFF000000F3CF00-AB200020048B0080E003F030010000F0DF93C0FF-FF0F000000F34000E003F040FFFF000400F20000-0000000000000000選擇符
類型
段基址
結束地址 DPL0008 Code32 00000000 FFFFFFFF 0 P RE0010 Data32 00000000 FFFFFFFF 0 P RW001B Code32 00000000 FFFFFFFF 3 P RE0023 Data32 00000000 FFFFFFFF 3 P RW0028 TSS32 80042000 000020AB 0 P B0030 Data32 FFDFF000 00001FFF 0 P RW003B Data32 00000000 00000FFF 3 P RW0043 Data16 00000400 0000FFFF 3 P RW0048 Reserved 00000000 00000000 0 NP以CS=001BH為例,001BH=0000000000011011b,001BH是段選擇符,Index=0000000000011b=3H,TI=0,RPL=11b=3H。Index×8=3H×8=0018H,因此,在GDT表中的位置0018H處開始的8個字節,存放的就是001BH選擇符對應的段描述符。GDT表的基址為E003F000H,這個段描述符從E003F000H+0018H=0003F018H開始,取出這8個字節為:FFFF000000FBCF00。段基址(位31~24)=00H,段基址(位23~16)=00H,段基址(位15~8)=00H,段基址(位7~0)=00H,所以段基址(位31~0)=00000000H。限長(位19~16)=FH,限長(位15~8)=FFH,限長(位7~0)=FFH,所以限長(位19~0)=FFFFFH。G=1,限長是以頁為單位的,段的大小為(FFFFFH+1)×212=100000H×212=232=4GB。段的基址為00000000H,長度為4GB,其線性地址范圍為00000000H~FFFFFFFFH。D=1,因此這是一個32位的段。AVL=0。P=1,這個段在內存中。DPL=112=316,段的特權級為3。S=1,這不是一個系統段,而是一個代碼、數據段或堆棧段。E=1,這是一個代碼段(可執行)。C=0,非一致代碼段。因為E=1,這一位是C;若E=0,這一位代表ED。R=1,可以對這個段進行讀操作。因為E=1,這一位是R;若E=0,這一位代表W。段描述符高速緩存如果每一次都需要到內存中去讀取段描述符,那么CPU的運行效率就會極大地降低。為解決這個問題,CPU在內部設置了段描述符高速緩存。段描述符高速緩存總是與CS、DS、ES、SS、FS、GS段寄存器和描述符的當前值保持一致,只有段寄存器的值發生改變時,才需要到GDT或LDT中裝入段描述符。這些緩存器是不可見的段式地址轉換根據虛擬地址中的段選擇符,在GDT或LDT中查找到對應的段描述符,段描述符中包括這個段的段基址、限長和權限等信息。取出段的基址后,再加上偏移部分,就得到了線性地址。頁式內存管理每一個任務都有它自己的一個線性地址空間,由于線性地址是32位的,所以線性地址空間為232=4GB。分段管理時,段的長度不固定,段和段之間也允許重疊;而頁面的劃分則嚴格得多。所有頁的長度固定,頁與頁之間也沒有重疊。頁面大小為4KB,則32位CPU將4GB的線性地址空間劃分成220頁。分頁機制就是一種將線性地址的頁面映射到物理地址頁面的手段,也就是從線性地址到物理地址的轉換過程。分頁機制中用到了兩個表:頁目錄表和頁表。32位線性地址被劃分為3個部分:頁目錄索引(10位),頁表索引(10位),頁面字節索引(12位),其中第1項是對頁目錄(PageDirectory)的索引,第2項是對頁表(PageTables)的索引,第3項是線性地址在頁面(PageFrame)內的偏移。①:頁目錄的地址由CR3的最高20位決定,CR3又被稱做頁目錄基址寄存器PDBR(PageDirectoryBaseRegister),CR3的低12位=000H。頁目錄的大小為4KB,由1024個頁表描述符組成,每個頁表描述符占4個字節。②:線性地址中高10位為頁目錄索引,頁目錄基地址加上頁目錄索引乘以4獲得的地址指向頁目錄表中一個頁表描述符。③:頁表描述符的高20位給出了頁表的基地址。頁表同樣占4KB,由1024個頁描述符組成,每個頁描述符占4字節。④:線性地址中的頁表索引(10位),指示了被訪問的頁在頁表中的序號。根據頁表基地址加上10位頁表索引乘以4指向頁表中的一個頁描述符。⑤:頁描述符的高20位給出了物理頁面的基地址的高位20位。⑥:物理頁面的基地址再加上線性地址中12位字節的頁內偏移量,得到物理地址。片內轉換檢測緩沖器(32個頁描述符)頁表項頁目錄表、頁表和頁面的基地址的低12位全部為0,定位在頁的邊界上。頁表項的低12位提供保護功能和統計信息。U/S位、R/W位、P位實現頁保護機制;D位和A位提供統計信息。U/S(User/Supervisor):用戶/管理員位。U/S=0時,只有操作系統程序可以訪問該頁,不允許用戶程序訪問,這可以保護操作系統使用的頁面不被用戶程序破壞(讀寫);U/S=1時,允許用戶程序訪問該頁。R/W(Read/Write):讀寫位。R/W=0,用戶程序對頁面只有讀權限,不能寫入;R/W=1時,可讀/寫。不論R/W位設置如何,操作系統的程序都可以對頁面進行讀寫。P(Present):存在位。P=1,頁表或頁存在于物理內存中;P=0,頁表或頁不在物理內存中。如果內存不足時,操作系統會選擇那些使用頻率低的頁面,設置它們的P位為0,將這些物理頁面釋放出來供其他程序使用。產生缺頁異常時,程序中使用的32位線性地址被保存在CR2中。A(Accessed):訪問標志。如果對某頁表或頁訪問過,CPU設置頁表項中的A位為1。操作系統定期掃描該項,統計使用次數。當需要調出(釋放)頁面時,操作系統一般選擇那些最少使用的或長期不用的頁。D(Dirty):寫入位。D=1時表示對該頁進行過寫操作,D=0時表示對該頁還沒有進行過寫操作。D位只用于頁描述符,它是寫入標志。當需要釋放某個物理頁面時,若其D=0表示磁盤中交換頁面的內容和物理頁面的內容一致,不需要向磁盤重寫;若D=1則需要將這個頁面寫到磁盤頁表項權限用戶程序系統程序用
途U/S=0,R/W=0不可讀寫可讀寫系統頁面U/S=0,R/W=1不可讀寫可讀寫系統頁面U/S=1,R/W=0只能讀可讀寫代碼頁面U/S=1,R/W=1可讀寫可讀寫數據/堆棧頁面一個物理頁存在兩級保護屬性,一個是頁表描述符中的保護屬性,另一個是頁描述符中的保護屬性。在兩級保護屬性不一致的情況下,CPU從二者中取一個較嚴格的保護權限。例如,頁表描述符的屬性R/W=0(只讀),頁描述符的屬性R/W=1(可讀寫),則最后結果是R/W=0(只讀)。線性地址轉換為物理地址的過程02032070H轉換為物理地址地方虛擬地址(16位段選擇符:32位偏移量)分段部件線性地址(32位)=段基址+偏移量分頁部件物理地址=頁的基地址+偏移量物理地址=線性地址允許分頁?允許禁止任務在保護模式下每個任務是獨立的,CPU提供了實現任務間快速切換的高效機制。在任何時刻都有一個當前任務,由TR寄存器指定,CPU在這個任務的環境下執行。當運行一個應用程序后,操作系統就為這個程序創建一個任務。每個任務都由兩個部分組成:任務執行環境(TaskExecutationSpace)和任務狀態段TSS(TaskStateSegment)。任務執行環境任務執行環境包括一個代碼段、堆棧段和數據段等,任務在每一個特權級上執行時都有一個堆棧段。每個任務都有一個LDT描述符表,構成一個局部地址空間,局部空間的數據和代碼不能被其他任務訪問。任務狀態段任務狀態段TSS(TaskStateSegment)中保存了任務的各種狀態信息。它在任務切換過程中起著重要作用,通過它可以實現任務的掛起和恢復。在任務切換過程中,首先CPU中各寄存器的當前值被自動保存到TR所指定的TSS(當前任務狀態段)中;然后下一任務的TSS的選擇符被裝入TR;最后從TR所指定的TSS中取出各寄存器的值送到處理器的各寄存器中。任務狀態段在主存中的位置、大小和屬性等信息由任務狀態段描述符(即TSS描述符)來描述。TSS描述符屬于系統描述符,S位等于0,它必須放在GDT表中,而不能放在LDT或IDT中。在任務切換或執行LTR指令時,會將新的任務狀態段選擇符裝載到TR寄存器。TSS的基本格式由104字節(000H~067H)組成。這104字節的基本格式是不可改變的,在此之外系統軟件還可在TSS段中定義若干附加信息。基本的104字節可分為寄存器保存區域、內層堆棧指針區域、地址映射寄存器區域、域鏈接字段區域、I/O許可位圖等。LDTR和CR3的值與特定任務相關,隨著任務的切換,LDTR和CR3的值也要切換。TSS中保存了該任務的CR3和LDTR。鏈接字段位于在TSS偏移0開始的雙字中,其高16位未用,而低16位保存前一任務的TSS的選擇符。如果當前的任務由段間調用指令CALL、中斷/異常而激活,那么當前任務TSS中的鏈接字段保存被掛起任務的TSS的選擇符,并且標志寄存器EFLAGS中的NT位被置為1,表示嵌套。I/O許可位圖區域是為了實現輸入/輸出的保護。I/O許可位圖作為TSS的擴展部分,TSS內偏移66H處的字用于存放I/O許可位圖在TSS內的偏移(從TSS的頭開始計算)。門4種:調用門、任務門、中斷門、陷阱門調用門用于控制傳送,來改變任務或者程序的特權級別;任務門像個開關一樣,用來執行任務切換;中斷門和陷阱門用來指出中斷服務程序的入口地址。門描述符屬于系統描述符門描述符
7
0+0偏移(位7~0)+1偏移(位15~8)+2段選擇符(位7~0)+3段選擇符(位15~8)+4000參數計數值(5位)+5PDPLS=0TYPE(4位)+6偏移(位23~16)+7偏移(位31~24)系統描述符中設置了一個類型(TYPE)字段,4位可表示16種類型TYPE含義TYPE含義0非法8非法180286可用任務狀態段(AvailableTSS)980386可用任務狀態段(AvailableTSS)2局部描述符表(LDT)A保留380286忙任務狀態段(BusyTSS)B80386忙任務狀態段(BusyTSS)480286調用門(CallGate)C80386調用門(CallGate)5任務門(TaskGate)D保留680286中斷門(InterruptGate)E80386中斷門(InterruptGate)780286陷阱門(TrapGate)F80386陷阱門(TrapGate)調用門調用門可以實現當前任務從低特權級到更高特權級的間接控制轉移,它在更高級特權級的段中定義了一個入口點,該入口點的虛擬地址(目標選擇符和偏移量)包含在調用門中。調用門可以駐留在GDT中,也可以駐留
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四年級信息技術課時安排優化計劃
- 外包資質審核管理辦法
- 部編版本小學語文一年級上冊教研活動計劃
- 西藏農貿市場管理辦法
- 財務印章管理辦法出自
- 外研版三年級英語下冊教師培訓計劃
- 道路沿線牲畜管理辦法
- 以生命之名:小學低年級班級管理的深度變革與實踐探索
- 以生為本:高中數學課堂有效教學的實踐探索與深度剖析
- 以生為本:汪清D高中城鎮高中生班級自主管理現狀與提升路徑探究
- 肝硬化門靜脈高壓食管胃靜脈曲張出血的防治指南( 2022)
- 初中英語《反義疑問句》優質課件
- 農田水利學專業課程設計
- 子宮脫垂病例護理討論
- vte病人的健康宣教
- 2024屆四川涼山州數學高二第二學期期末考試試題含解析
- 2023全新包干制物業服務合同
- 外賣運營培訓手冊
- 鋁壓延加工材項目評估報告
- 多學科治療協作模式
- (環境管理)環境保護與水土保持監理實施細則
評論
0/150
提交評論