




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第六章器管理本章主要內容:一.
器的層次結構二.程序的裝入和三.連續分配 管理方式單一連續區分配固定分區分配動態分區分配四.離散分配的基本分頁管理方式管理方式分段段頁式管理管理6.1器的層次結構第六章器管理第六章器管理6.1器的層次結構局部性原理空間局部
性時間局部
性6.2程序的裝入和在多道程序環境下,程序要運行必須為之創建進程,而創建進程的第一件事,就是要將程序和數據裝入內存。將一個用戶的源程序變為一個可在內存中執行的程序,通常要經過編譯、、裝入。第六章
器管理第六章
器管理程序的裝入和程序的裝入程序的裝入就是系統調用裝入程序將程序裝入內存,可采用三種方式:一、絕對裝入方式二、可重定位裝入方式(靜態重定位)三、動態運行時裝入第六章
器管理程序的裝入和程序的裝入一、絕對裝入方式編譯程序事先已知程序在內存中的駐留位置,編譯時產生絕對地址的目標代碼,絕對裝入程序按照裝入模塊的絕對地址將程序和數據裝入內存。裝入模塊被裝入內存后,不需對程序和數據的地址進行修改。第六章
器管理程序的裝入和程序的裝入二、可重定位裝入方式(靜態重定位)在程序裝入時對目標程序中的指令和數據地址的修改過程稱為重定位。1、編譯程序使目標模塊的起始地址從0開始。2、程序裝入時,裝入程序根據內存的使用情況將裝入模塊裝入到內存的某個位置,并對模塊進行重定位。物理地址=有效相對地址+程序在內存中的起始地址。第六章
器管理程序的裝入和程序的裝入三、動態運行時裝入程序執行時進行相對地址→物理地址的轉換。(因為程序在活動過程中,在物理內存中的位置會發生變化,比如在具有對換功能的系統中)。CPU內存重定位寄存器14000+34614346邏輯地址物理地址內存管理單元(MMU)第六章器管理6.2程序的裝入和6.2.2
程序的一、要解決的問題將編譯后的目標模塊裝配成一個可執行的程序第六章器管理6.2程序的裝入和6.2.2
程序的二、1、靜態的兩種方式(static
Linking)2、運行時動態
(Run-time
Dynamic
Linking)第六章器管理6.2程序的裝入和6.2.2
程序的二、
的兩種方式1.靜態:在程序運行前,用程序將目標模塊鏈接成一個完整的裝入模塊。靜態
的任務:對相對地址進行修改:變換外部調用符號:將每個模塊中所用的外部調用符號,都變換為相對地址見 P139頁圖6-46.2程序的裝入和6.2.2
程序的靜態1、的特點:開銷大2、程序開發不方便3、程序運行快第六章器管理第六章器管理6.2程序的裝入和6.2.2
程序的二、
的兩種方式2、運行時動態基本原理6.2程序的裝入和6.2.2
程序的動態
的特點:1、節省內存和外存空間;2、方便程序開發;3、程序運行時的速度慢了;第六章器管理第六章器管理管理方式6.3連續分配一、單一連續分配。二、分區式分配:1、固定分區:分區大小相等分區大小不等2、動態分區。第六章器管理連續分配
管理方式單一連續分配這種方式適用于單用戶,單任務的OS,它把內存OS使用,用戶區供分為系統區和用戶區。系統區用戶使用。單一連續分配的OS保護機構:設一基址寄存器(存程序在物理內存中的最小地址,用于進行地址映
射)、和一界限寄存器。如果用戶程序的邏輯地址<界限寄存器中的邏輯地址范圍則是合法地址,否則中斷。第六章器管理6.3
連續分配
管理方式6.3.2固定分區分配固定分區分配將內存空間劃分為若干個固定大小的區域,在每個分區中可以裝入一道作業。當內存中劃分成幾個分區時,便允許幾道作業并發運行;當有一個空閑分區時,便可從外存的后備隊列中選擇一個適當大小的作業裝入該分區;當該作業結束時,又可從后備隊列中找出另一個作業調入該分區。第六章器管理6.3
連續分配
管理方式6.3.2固定分區分配一、劃分分區的方法1、分區大小相等2、分區大小不等二、內存分配使用一個記錄內存狀況的內存分區使用表來管理內存分配。第六章器管理6.3
連續分配
管理方式6.3.2固定分區分配三、固定分區使用表分區號大?。↘B)始址(K)狀態11230已分配23045已分配35075已分配4100125已分配6.3
連續分配
管理方式6.3.2固定分區分配四、固定分區的特點:1、管理簡單2、內存利用率低第六章器管理第六章器管理6.3
連續分配
管理方式6.3.3動態分區分配使用固定分區浪費內存,故使用動態分區,根據進程的具體情況分配內存。本節主要內容:動態分區分配使用的數據結構動態分區分配算法動態分區的分配和回收操作第六章器管理6.3
連續分配
管理方式6.3.3動態分區分配一、動態分區分配的基本原理第六章器管理6.3
連續分配
管理方式6.3.3動態分區分配二、分區分配中的數據結構
1、空閑分區表包含分區序號、分區始址及分區大小等表目。序號分區大小(KB)分區始址(K)1123023045第六章
器管理6.3
連續分配
管理方式6.3.3動態分區分配二、分區分配中的數據結構2、空閑分區鏈為每個空閑分區建立一個分區結點每個結點包括:向前、向后指針、分區起始地址及大小。第六章器管理6.3
連續分配
管理方式6.3.3動態分區分配三、動態分區分配算法介紹下面三種動態分區分配算法:1、首次適應算法FF2、循環首次適應算法。3、最佳適應算法第六章器管理6.3
連續分配
管理方式6.3.3動態分區分配三、動態分區分配算法1、首次適應算法FF在采用空閑分區鏈作為數據結構時,FF算法要求空閑分區鏈以地址遞增的次序。在進行內存分配時,從鏈首開始順序查找,直至找到一個能滿足其大小要求的空閑分區為止。然后,再按照作業的大小,從該分區中劃出一塊內存空間分配給請求者,余下的空閑分區仍留在空閑鏈中。首次適應算法FF的特點:1、高地址部分大空閑區較多;2、低地址部分容易留下小分區;3、查找從低地址開始,查找開銷較大。第六章器管理6.3
連續分配
管理方式6.3.3動態分區分配三、動態分區分配算法
2、循環首次適應算法該算法是由首次適應算法演變而形成的。在為進程分配
內存空間時,不再每次從鏈首開始查找,而是從上次找到的
空閑分區的下一個空閑分區開始查找,直至找到第一個能滿足要求的空閑分區,并從中劃出一塊與請求的大小相等的內存空間分配給作業。為實現該算法,應設置一起始查找指針,以指示下一次起始查找的空閑分區,并采用循環查找方式。循環首次適應算法的特點:
1、空閑區分布均勻;2、查找開銷較小;3、容易使系統缺乏大空閑區;第六章器管理6.3
連續分配
管理方式6.3.3動態分區分配三、動態分區分配算法3、最佳適應算法該算法每次為作業分配內存,總是把既能滿足要求、又是最小的空閑分區分配給作業,避免了“大材小用”。為了加速尋找,該算法要求將所有的空閑區,按其大小以遞增的順序形成一空閑區。這樣,第一次找到的滿足要求的空閑區,必然是最優的。最佳適應算法的特點:1、避免大材小用,提高內存利用率;2、容易留下難以利用的小空閑區。第六章器管理6.3
連續分配
管理方式6.3.3動態分區分配四、分區分配操作1、內存分配流程檢索空閑鏈表找足夠大的空閑區(m.size>=u.size)從m.size中劃出大小為u.size的空間進行分配詳細流程見
p148頁習題:當前空閑鏈20k:50k80k:100k300k:60k先請求30k空間,再請求50k空間.畫出分別采用首次適應算法、循環首次適應算法、最佳適應算法的空閑鏈(size=1k)解答方法參見p145頁例1。第六章器管理連續分配
管理方式動態分區分配四、分區分配操作2、內存回收流程內存合并空閑區當前空閑鏈如下:30k:10k
60k:100k
500k:200k請畫出分別回收下列空閑區之后的空閑鏈:起始地址分區大小150k5k240k10k350k10k440k20k第六章器管理管理方式6.3連續分配6.3.4緊湊一、緊湊把多個分散的小分區拼接成大分區的方法,被稱為“拼接”或“緊湊”二、動態重定位物理地址=相對地址+重定位寄存器中的地址第六章
器管理6.4
多道程序環境下的對換“對換”是指把內存中暫不能運行的進程或暫時不用的程序和數據,換出到外存上,以騰出足夠的內存空間,把已具備運行條件的進程或進程所需要的程序和數據換入內存。對換的方式有兩種:一、整體對換二、部分對換第六章
器管理6.4
多道程序環境下的對換一、整體對換如果對換是以整個進程為單位,便稱之為“整體對換”或“進程”對換,這種對換被廣泛地應用于分時系統中,其目的是用以解決內存緊張問題,并可進一步提高內存的利用率。第六章
器管理6.4
多道程序環境下的對換二、部分對換如果對換是以“頁”或“段”為單位進行的,則分別稱之為“頁面對換”或“分段對換”,又統稱為“部分對換”,這種對換方法是實現請求分頁及請求分段系統的基礎,其目的是為了支持虛擬存貯系統。第六章
器管理6.4
多道程序環境下的對換三、對換空間的管理對換空間指外存中可以用于存放從內存換出進程的暫存空間。對換空間的管理采用與內存的動態分區分配類似的數據結構與分配、回收算法。第六章
器管理6.4
多道程序環境下的對換四、進程的換出與換入進程的換出與換入是通過OS內核調用對換程序或喚醒對換進程來實現的進程的換出1、選擇被換出的進程選擇低優先權、內存駐留時間較長的進程2、換出過程對于共享程序段或數據,要先檢查它們當前是否被某些其他進程需要;對換前還要申請對換空間。第六章
器管理進程的換入1、檢查PCB中進程的狀態,找出“就緒且換出”態的進程。2、把換出時間最長的一個進程作為換入進程。3、為換入進程申請內存空間,若申請成功,則直接換入,若內存不夠,則先換出某些進程,騰出足夠的空間,再將進程換入。第六章器管理6.5
基本分頁
管理方式連續分配方式會形成許多碎片,雖然可通過緊湊方法將碎片拼接成可用的大塊空間,但須為此付出很大開銷。如果允許將一個進程直接離散地分配到許多不相鄰的分區中,就不必再進行“緊湊”。為了支持虛擬內存管理,需要引入離散分配方式。根據離散分配時所使用的基本單位的不同,離散分配分為以下三種方式:1、分頁2、分段3、段頁式管理管理管理第六章器管理管理方式管理的基本方法基本分頁分頁一、基本概念1、頁面:將一個進程的邏輯地址空間分成若干個大小相等的片,稱為頁面或頁。2、物理塊:將內存空間分成與頁相同大小的若干個塊,稱為物理塊或頁框或幀。3、分頁:在為進程分配內存時,以塊為單位將進程中的若干頁分別裝入多個可以不相鄰接的塊中。4、頁內碎片:進程的最后一頁一般裝不滿一塊,而形成不可利用的碎片,稱為“頁內碎片”。0頁1頁邏輯地址空間物理地址空間0塊1塊2002塊200第六章
器管理基本分頁分頁二、基本分頁管理方式管理的基本方法管理方式中的地址結構1、地址結構中包含兩部分:頁號P、頁內偏移量W。若用m位表示邏輯地址,頁大小為2的n次冪,則用低n位表示頁內偏移量w;用高m-n位表示頁號P以32位地址為例:可用0~11位表示頁內偏移量n=12(頁內212個單元=物理塊大小=4K);12-31位(20位)表示頁號,共可有220個頁面(1M個頁)這種地址結構可以表示4G的邏輯地址空間。P(m-n)位W(n位)31 12
110計算關系:A為邏輯地址,L為頁面大小,P為頁號,W為頁內偏移量.P=INT(A/L)W=mod(A/L)第六章
器管理管理方式管理的基本方法基本分頁分頁三、頁表1、頁表是系統為進程建立的數據結構,頁表的作用是實現從頁號到物理塊號的地址。在進程地址空間內的所有頁(0-n),依次在頁表中有一頁表項,其中記錄了相應頁在內存中對應的物理塊號。第六章器管理基本分頁分頁管理方式管理的基本方法三、頁表中還可以包括一些存取控制字段頁號塊號021428……頁表中還可以包括一些存取控制字段1023102410250頁1頁02000201頁表邏輯地址空間物理地址空間0塊1塊02002塊10231024204720482049Move
eax,(1025)第六章器管理基本分頁分頁管理方式管理的基本方法四、地址變換機構為了能將用戶地址空間中的邏輯地址變換為內存空間中的物理地址,在系統中必須設
址變換機構,該機構的基本任務是實現邏輯地址到物理地址的轉換。(一)、基本的地址變換機構第六章
器管理管理方式管理的基本方法基本分頁分頁(二)、地址變換過程1、進程執行,PCB塊中頁表起始地址和頁表長度送頁表寄存器。2、CPU
邏輯單元a。3、由分頁地址變換機構自動將
a
分為頁號和頁內地址兩部分4、由硬件檢索機構搜索頁表,得到物理塊號。搜索原理:頁號對應的頁表項地址=頁表起始地址+頁表項長度*頁號。(頁表項中存有物理塊號)。5、物理塊號和頁內地址送物理地址寄存器。第六章
器管理管理方式管理的基本方法基本分頁分頁(三)實例若頁的大小為4K,則地址轉換機構將邏輯地址0轉換成的物理地址為___。在一個頁式管理系統中,頁表內容如下所示:頁號物理塊號0211263347例題:物理地址的計算過程1、計算頁號和頁內偏移p=INT[0/4096]=0w=MOD[0/4096]=02、搜索頁表,查找0號頁面所在的物理塊;結果為23、計算物理地址物理地址=塊大小*塊號+頁內偏移=4096*2+0=8192第六章器管理管理方式基本分頁分頁
管理的基本方法(四)、頁面大小的選擇1、在分頁系統中頁面的大小是由機器的體系結構所決定的,亦即由硬件決定。(如:分頁單元把低12位邏輯地址解釋為頁內偏移地址,則頁大小就是4K).2、影響頁面大小設計的因素管理內存的開銷:(1)頁面太小,就會導致進程所需頁面多,頁表過長,占用大量內存空間;同時,降低頁面換入換出效率。第六章
器管理基本分頁分頁管理方式管理的基本方法(四)、頁面大小的選擇內存的利用率頁面小有利于提高內存的利用率,但存(1)所述缺點,頁面大,可克服(1)的缺點,但頁內碎片大,空間利用率降低。頁面的大小、頁面大小是2的冪。、一般頁面大小在512個字節~4K、現在硬件可以支持多種不同的頁面大小。頁面大小4k
16K
2M
4M
8M
16M等等第六章器管理管理方式6.5基本分頁6.5.2
快表一、
快表快表(轉換后援緩沖TLB-TranslationLookasideBuffer),是為了提高CPU訪存速度而采用的緩存,用來存放最近被 過的頁表項。第六章器管理管理方式6.5基本分頁6.5.2
快表二、快表的引入CPU存取一個數據,需兩次
內存。第1次訪存取物理塊號、第2次取數。使計算機的處理速度降低近1/2。為了提高訪存速度,引
想
器,存放最近使用過的頁表項。第六章器管理6.5
基本分頁
管理方式6.5.2地址變換機構三、引入TLB之后的地址變換過程TLB引入之后的地址變換過程第六章器管理6.5
基本分頁
管理方式6.5.2地址變換機構四、引入TLB的性能分析TLB的速度為20ns,時間。若cpu
內存的速度為120ns,試比較有TLB和無TLB系統的有效假
定TLB
中率為90%1、有TLB系統的有效 時間=(120+120+20)*10%+(120+20)*90%=152ns2、無TLB系統的有效 時間=120+120=240ns第六章器管理6.5基本分頁管理方式6.5.3
兩級和多級頁表對于很大的邏輯地址空間,使用分頁,需要很大的連續空間來存放頁表,為了實現頁表的離散存放,引入了兩級或多級頁表,其好處是:1、對頁表所需的內存空間,采用離散分配方式,來解決難以找到一塊連續的大內存空間以及頁表的離散存放的問題。2、只將當前需要的頁表調入內存,其余的頁表駐留在磁盤上。第六章器管理6.5
基本分頁
管理方式6.5.3
兩級和多級頁表一、兩級頁表的實現方法將頁表再進行分頁,使每個頁面的大小與內存物理塊的大小相同,并為它們。將這些頁表頁面分別放入不同的,不一定相鄰的物理塊中,為離散分配的頁表再建立一張頁表,稱為外層頁表,在外層頁表中的每個表項中記錄了頁表頁面的物理塊號。第六章器管理6.5
基本分頁
管理方式6.5.3
兩級和多級頁表二、兩級頁表的尋址外層頁號外層頁內地址頁內地址P1P2d兩級頁表的邏輯地址結構1、對于給定的邏輯地址A,由外部頁號p1,從外層頁表中找到頁表分頁所在的物理塊號。2、由外層頁內地址p2,從分頁頁表中找到進程頁所在的物理塊號。3、由A所在的進程頁的物理塊號+頁內地址得到A的物理地址。6.5
基本分頁
管理方式6.5.3
兩級和多級頁表如何根據邏輯地址得到p1,p2,w?1、32位線性邏輯地址的最高10位被硬件解釋為p1,中間10位被硬件解釋為p2,低12位解釋為頁內偏移;2、若邏輯地址為A,頁大小為L,頁表長度為N(每個頁表中存放的頁表項數)P1=INT[INT[A/L]/N]P2=mod[INT[A/L]/N]W=mod[A/L]第六章器管理第六章
器管理6.5
基本分頁
管理方式6.5.3
兩級和多級頁表三、減少頁表占用內存的方法將當前所需要的頁表和外層頁表放在內存中,其余頁表放在外存,當所需頁表不在內存時,產生一中斷,將請求的頁表調入內存。四、多級頁表結構對于64位的機器,使用二級頁表,仍存在連續占用大量內存的問題,可以采用多級頁表結構,將外層頁表再分若干頁。第六章
器管理管理方式6.5基本分頁6.5.4反置頁表一、反置頁表用反置頁表,為每一個物理塊設一個表項,表項中放進程號和頁號,系統只一張反置頁表。由于物理空間小于邏輯空間,所以使用反置頁表減少了頁表占用的內存空間。第六章器管理管理方式6.5基本分頁6.5.4反置頁表二、反置頁表的尋址邏輯地址=進程號+頁號+頁內偏移地址尋址過程:根據進程號和頁號找到物理塊號物理地址=物理塊首址+頁內偏移地址進程號頁號物理塊號………第六章器管理分段
管理分段機制的引入引入分段
管理的好處:1、
方便編程2、
分段共享3、
分段保護4、
動態5、
動態增長第六章器管理6.6
分段
管理6.6.2分段系統的基本原理一、分段作業的地址空間被劃分成若干個段,每個段定義了一組邏輯信息,每個段的大小由相應的邏輯信息組的長度確定,段的大小不一樣,每段的邏輯地址從0開始。第六章器管理6.6
分段
管理6.6.2分段系統的基本原理二、分段的邏輯地址結構段號段的邏輯地址段內偏移地址第六章器管理6.6分段
管理6.6.2分段系統的基本原理三、段表1、系統為每個段分配
續區,各個段可以離散地放入內存不同的分區。2、系統為每個進程建立一張段
表,段 表的每—個表項記錄信息;段號、段長、該段的基址。第六章器管理6.6
分段
管理6.6.2分段系統的基本原理三、段表段號段長基址030k40k120k80k215k120k(main)=030k(x)=120k(D)=215k040k80k120k段表始址段表長度>01k
6k16004k2500
8k++82928k82928692段號 段長 基址2100越界段號位移量w四、分段系統的地址變換機構第六章器管理6.6
分段
管理6.6.2分段系統的基本原理五、分頁和分段的主要區別1、頁是按物理單位劃分的,段是按邏輯單位劃分的。2、頁的大小是固定的,段的大小不固定,決定于用戶編寫的程序和編譯器。3、分頁的地址空間是一維的,分段的地址空間是二維的。第六章器管理6.6
分段
管理6.6.2分段系統的基本原理六、信息共享多個進程可能共享程序和數據,基本分段管管理方式下共享的實現是不同理方式與基本分頁的。(一)、分頁共享每個進程為共享的程序和數據設頁表項,不同進程共享頁的頁表項指向相同的物理塊,共享程序和數據在內存中只留一個副本。(二)、分段共享每個進程中,為每個共享段設一段表項,段表中共享段的物理地址相同。第六章器管理6.6分段管理6.6.3段頁式為了使管理方式系統既具有分段系統便
現、分段可共享、易于保護、可動態等一系列優點;又能象分頁系統那樣很好地解決內存的外部碎片問題,以及為各個分段可離散地分配內存等問題,引入了“段頁式系統”。第六章器管理6.6分段
管理6.6.3段頁式
管理方式一、基本原理將用戶進程空間先劃分成若干個段,每個段劃分成若干個頁,每個進程有一個段表,每個段都有一個頁表。地址結構由段號、段內頁號和頁內地址三部分組成。每一段表項存放某個段的頁表始址和頁表長度。段頁式第六章器管理管理方式6.6分段
管理6.6.3段頁式二、地址變換過程1、利用段號,找到某段的段表項,得到該段頁表的首地址。2、利用段內頁號和由1得到的頁表始址得到頁表項。3、由頁表項得到頁所在的物理塊號。4、物理塊號與頁內地址得到某邏輯地址的物理地址。段頁式地程6.7
80X86常規內存尋址6.7.1內存地址1、邏輯地址:邏輯地址(logical
address)包含在機器語言指令中用來指定一個操作數或一
條指令的地址。這種尋址方式在80x86著名的分段結構中表現得尤為具體,它促使MS-DOS
或Windows程序
員把程序分成若干段。每一個邏輯地址都由一個段(segment)和偏移量(offset或displacement)組成,偏移量指明了從段開始的地方到實際地址之間的距離。6.7
80X86常規內存尋址2、線性地址(linear
address)(也稱虛擬地址virtual
address)是一個32位無符號整數,可以用來表示高達4GB的地址,也就是,高達4
294
967
296個器單元。線性地址通常用16進制數字表示,值的范圍從0x00000000
到0xffffffff。6.7
80X86常規內存尋址3、物理地址(physical
address)用于
器
級處理器的地址引腳發送到器單元尋址。它們與從微器總線上的電信號相對應。物理地址由32位或36位無符號整數表示。6.7
80X86常規內存尋址6.7.2硬件中的分段1、段選擇符和段寄存器段選擇符(segment
selector
):是一個16位長的段標識符。段寄存器:用來存放段選擇符。13位描述符索引index1位TI2位RPL段選擇符6.7
80X86常規內存尋址段選擇符字段字段名index描述指定了放在GDT或LDT中的相應段描述符的。TI((Table
Indicator)標志指明段描述符是在GDT中(TI=0)或在LDT(TI=1)。TIRPL
請求者
級:當相應的段選擇符裝入到cs寄存器中時指示出CPU當前的 級;6.7
80X86常規內存尋址6.7.2硬件中的分段2、段描述符每個段都由一個8字節的段描述符(SegmentDescriptor)來描述段的特征。段描述符放在全局描述符表(Global
Descriptor
Table,GDT)或局部描述符表(Local
Descriptor
Table
,LDT)中。GDT的線性基址存放在gdtr寄存器中,當前正被使用的LDT線性基址放在ldtr處理器寄存器中。段描述符字段Limit字段名 描述Base
包含段的起始地址G
粒度標志G。如果該位清為0,段大小以字節為單位,否則以4096字節的倍數計。20位的Limit字段,指定了以字節為單位的段長度。如果G被置為0,則一個非空段 的大小在1個字節到1MB之間變化;否則,將在4KB到4GB之間變化。系統標志S,如果它被清0,則這是一個系統段, 內核數據結構,否則它是一S個普通的代碼段或數據段。4位Type字段,描述了段的類型特征和它的存取權限。TypeDPL描述符 級字段:用于限制對這個段的存取。它表示為這個段而要求的CPU最小的優先級。因此,DPL設為0的段只能當CPL為0時(即在內核態)才是可 的,而DPL設為3的段對任何CPL值都是可 的。Segment-Present標志:等于0表示段當前不在主存中。Linux總是把這個標志(47位)設為1,因為它從來不把整個段交換到磁盤上去。PD或B
稱為D或B的標志,取決于是代碼段還是數據段。D或B的含義在兩種情況下稍微有所區別,但是如果段偏移量的地址是32位長,就基本上把它置為1,如果這個偏移量是16位長,它被清0
。AVL標志可以由操作系統使用,但是被Linux忽略。6.7
80X86常規內存尋址6.7.2硬件中的分段3、快速
段描述符為了加速邏輯地址到線性地址的轉換,80x86處理器提供一種附加的非編程的寄存器,供6個可編程的段寄存器使用。每一個非編程的寄存器含有8個字節的段描述符,由相應的段寄存器中的段選擇符來指定。每當一個段選擇符被裝入段寄存器時,相應的段描述符就由內存裝入到對應的非編程CPU寄存器。從那時起,針對那個段的邏輯地址轉換就可以不 主存中的GDT或LDT,處理器只需直接 存放段描述符的CPU寄存器即可
。6.7
80X86常規內存尋址6.7.2硬件中的分段4、由段選擇符獲得一個段描述符由于一個段描述符是8字節長,它在GDT或LDT內的相對地址是由段選擇符的最高13位的值乘以8得到的。例如:如果GDT在0x00020000(這個值保存在
gdtr寄存器中),且由段選擇符所指定的索引號為2,那么相應的段描述符地址是0x00020000+(2
×8),或0x00020010。(注意:這個計算得到的地址是一個段描述符的線性地址,不是物理地址,線性地址經過分頁單元的轉換可以得到物理地址)6.7
80X86常規內存尋址6.7.2硬件中的分段5、分段單元如何把邏輯地址轉化為線性地址?先檢查段選擇符的TI字段,以決定段描述符保存在哪一個描述符表中。TI字段指明描述符是在GDT中(在這種情況下,分段單元從gdtr寄存器中得到GDT的線性
址)還是在激活的LDT中(在這種情況下,分段單元從ldtr寄存器中得到
LDT的線性 址)。從段選擇符的index字段計算段描述符的地址,index字段的值乘以8(一個段描述符的大?。?,這個結果與gdtr或ldtr寄存器中的內容相加。把邏輯地址的偏移量與段描述符Base字段的值相加就得到了線性地址。(這個線性地址由分頁單元轉換得到物理地址)6.7
80X86常規內存尋址6.7.3
Linux中的分段運行在用戶態的所有Linux進程都使用一對相同的段來對指令和數據尋址。這兩個段就是所謂的用戶代碼段和用戶數據段。類似地,運行在內核態的所有
Linux進程都使用一對相同的段對指令和數據尋址:它們分別叫做內核代碼段和內核數據段。6.7
80X86常規內存尋址6.7.3
Linux中的分段1、四個主要的Linux段的段描述符字段的值段BaseGLimitSTypeDPLD/BP用戶代碼段0x0000000010xfffff11311用戶數據段0x0000000010xfffff12311內核代碼段0x0000000010xfffff110011內核數據段0x0000000010xfffff120116.7
80X86常規內存尋址6.7.3
Linux中的分段
2、Linux分段的特點:上述四個段相應的段描述符由宏_
_USER_CS,__USER_DS,_
_KERNEL_CS,和_
_KERNEL_DS分別指定。例如,為了對內核代碼段尋址,內核只需要把這個宏產生的值裝進cs段寄存器即可。與段相關的線性地址從0開始,達到4G-1的尋址限長。這就意味著在用戶態和內核態下的所有程序可以使用相同的邏輯地址。所有段都從0x00000000開始,這可以得出另一個重要結論,那就是在Linux下邏輯地址與線性地址是一致的,即邏輯地址的偏移量字段的值與相應的線性地址的值總是一致的。6.7
80X86常規內存尋址6.7.3
Linux中的分段3、Linux的全局描述符表在單處理器系統中只有一個GDT,而在多處理器系統中每個CPU對應一個GDT。每個GDT包含18個段描述符和14個空的,未使用的,或保留的項。每一個
GDT中包含的18個段描述符指向下列的段:每一個GDT中包含的18個段描述符指向下列的段:用戶和內核態下的代碼和數據段共四個任務狀態段(TSS),每個處理器有一個一個包括缺省局部描述符表的段三個局部線程
段與高級電源管理(AMP)相關的三個段與支持即插即用功能的BIOS服務程序相關的5個段被內核用來處理“雙重錯誤”(處理一個異常時可能會另一個異常。在這種情況下產生雙重錯誤)異常的特殊TSS段6.7
80X86常規內存尋址6.7.4
硬件中的分頁1、常規分頁從80386起,In處理器的分頁單元處理4KB的頁。32位的線性地址被分成3個字段:(Directory)最高10位中間10位最低12位頁表(Table)偏移量(Offset)6.7
80X86常規內存尋址6.7.4
硬件中的分頁三個字段的含義正在使用的頁的物理地址存放在控制寄存器CR3中。線性地址內的Directory字段(相當于二級頁表中的p1)決定頁 中的 項,而 項指向適當的頁表。地址的Table字段(相當于二級頁表中的p2)依次又決定頁表中的表項,而表項含有頁所在頁框的物理地址。Offset字段決定頁框內的相對位置(見圖2-7)。由于它是一個12位
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年淮南三和鎮城市社區專職網格員招聘真題
- 社區物業管理基礎知識點歸納
- 歷史建筑群標識系統規劃基礎知識點歸納
- 南通如東縣公安局招聘警務輔助人員筆試真題2024
- 石大學前兒童保育學課件6-6托兒所幼兒園衛生保健管理辦法實施細則
- 2025年金屬切割相關知識試題
- 青島版五四制五年級下冊《科學》期末試題及答案
- 混合云安全治理框架-洞察闡釋
- 項目實施中的資源共享與協同合作模式設計
- 南崗河幸福河湖綜合提升工程可行性研究報告
- 2024年工業廢水處理工(高級)技能鑒定理論考試題庫(濃縮500題)
- JGJ202-2010 建筑施工工具式腳手架安全技術規范【清晰版】
- 高考語文各類題型及答題技巧
- 六、煤礦提升機操作作業人員題庫 答案(二)
- 基本公共衛生服務項目村級考核用表
- 數據化轉型對營銷職業的影響
- 2023年南平市高校畢業生服務社區計劃招募考試真題
- HG-T 4062-2023 波形擋邊輸送帶
- 解碼國家安全-知到答案、智慧樹答案
- 廣東省課程思政示范高職院校申報書
- 提水試驗過程及數據處理
評論
0/150
提交評論