第七章
什么是死鎖:系統(tǒng)中有若干個(gè)進(jìn)程并發(fā)執(zhí)行秦爆,未申請(qǐng)到資源而等待,若持續(xù)則死鎖憔披。本質(zhì):相互等待形成環(huán)路等限。產(chǎn)生原因:進(jìn)程執(zhí)行順序管理
資源的申請(qǐng)、分配芬膝、使用精刷、釋放
死鎖的四個(gè)必要條件、資源分配圖
死鎖的預(yù)防(互斥蔗候、占有并等待怒允、非搶占、循環(huán)等待)和避免(安全狀態(tài)锈遥,資源分配圖算法纫事、銀行家算法{這個(gè)的時(shí)間復(fù)雜度?})的區(qū)別:分別限制申請(qǐng)和分配
死鎖避免和死鎖檢測(cè)是一樣的算法所灸,但有哪些不同丽惶?比如避免著手于將來,檢測(cè)是當(dāng)前爬立。另钾唬,兩個(gè)算法那個(gè)更寬松
死鎖恢復(fù):代價(jià)最小-貪心算法
1 【死鎖】:指兩個(gè)或兩個(gè)以上進(jìn)程在執(zhí)行過程中侠驯,因爭(zhēng)奪資源而造成的一種互相等待的現(xiàn)象抡秆,若無外力作用,它們都無法推進(jìn)下去
2 進(jìn)程在使用資源之前必須申請(qǐng)吟策,使用之后必須釋放
3 如果所申請(qǐng)的資源正在被使用儒士,則系統(tǒng)將進(jìn)程推入該資源的等待隊(duì)列
4 死鎖的必要條件:1、【互斥】:至少有一個(gè)資源必須處于非共享模式檩坚,即一次只有一個(gè)進(jìn)程使用着撩;2诅福、【占有并等待】:一個(gè)進(jìn)程必須占有至少一個(gè)資源,并等待另一個(gè)資源拖叙,而該資源為其他進(jìn)程所占有3氓润、【非搶占】:資源不能被搶占,即資源只能在進(jìn)程完成任務(wù)后自動(dòng)釋放4薯鳍、【循環(huán)等待】:有一組進(jìn)程{P0,P1,~,Pn}旺芽,P0等待的資源被P1占有, P1等待的資源被P2占有辐啄,~采章,Pn等待的資源被P0占有;必須在以上4個(gè)條件同時(shí)滿足才會(huì)出現(xiàn)死鎖
5 【資源分配圖】:圖中用圓形表示進(jìn)程壶辜,矩形表示資源悯舟,用邊必須資源的分配情況或者是進(jìn)程申請(qǐng)資源的方向;如果分配圖沒有緩砸民,那么系統(tǒng)就沒有進(jìn)程死鎖抵怎; 如果有環(huán),就有可能存在死鎖岭参,不一定有反惕!
6 處理死鎖問題1、可使用協(xié)議以預(yù)防或避免死鎖演侯,確保系統(tǒng)不會(huì)進(jìn)入死鎖狀態(tài)2姿染、可允許系統(tǒng)進(jìn)入死鎖狀態(tài),然后檢測(cè)它秒际,并加以恢復(fù)3悬赏、可忽視這個(gè)問題,認(rèn)為死鎖不可能在系統(tǒng)內(nèi)發(fā)生
7 只要確保至少一個(gè)必要條件不成立娄徊,就能預(yù)防死鎖的發(fā)生1闽颇、互斥:一般不能通過否定互斥來預(yù)防死鎖2、占有并等待:在一個(gè)進(jìn)程申請(qǐng)其他資源之前寄锐,必須釋放其現(xiàn)分配的所有資源3兵多、非搶占:當(dāng)一個(gè)進(jìn)程處于等待時(shí),如果其他進(jìn)程申請(qǐng)其擁有的資源橄仆,那么該進(jìn)程的資源可以被搶占剩膘; 一個(gè)進(jìn)程要重新執(zhí)行,她必須分配到其所申請(qǐng)的資源沿癞,并恢復(fù)其在等待時(shí)被搶占的資源4援雇、循環(huán)等待:對(duì)所有的資源類型進(jìn)行完全排序,且要求每個(gè)進(jìn)程必須按照遞增的順序來申請(qǐng)資源
8 【死鎖避免】:根據(jù)進(jìn)程可能申請(qǐng)的每種資源類型實(shí)例的最大需求的事先信息椎扬,構(gòu)造一個(gè)算法以確定系統(tǒng)絕不會(huì)進(jìn)入死鎖狀態(tài)惫搏; 死鎖避免算法動(dòng)態(tài)地檢測(cè)資源分配狀態(tài)以確保循環(huán)等待條件不可能成立
9 【安全狀態(tài)】:如果系統(tǒng)能按某個(gè)順序?yàn)槊總€(gè)進(jìn)程分配資源并能避免死鎖。那么系統(tǒng)狀態(tài)是安全的
10【安全序列】:進(jìn)程順序蚕涤,如果對(duì)于每個(gè)Pi, Pi仍然可以申請(qǐng)的資源數(shù)小于當(dāng)前可用資源加上所有進(jìn)程Pj(j < i)所占有的資源筐赔,那么這一順序稱為安全序列;? 如果存在安全序列揖铜,則系統(tǒng)是處于安全狀態(tài)
11 【資源分配圖算法】:在圖中設(shè)三種邊茴丰,“需求邊”、“分配邊”天吓、“申請(qǐng)邊”(只有當(dāng)每種資源只有一個(gè)實(shí)例的時(shí)候適合)需求邊:表示進(jìn)程P可能在將來某個(gè)時(shí)候申請(qǐng)資源R贿肩,但是用虛線表示申請(qǐng)邊:當(dāng)進(jìn)程P申請(qǐng)資源R時(shí),需求邊P->R 變成了申請(qǐng)邊分配邊:只有在將申請(qǐng)邊P->R變成分配邊R->P而不會(huì)導(dǎo)致資源分配圖形成環(huán)時(shí)龄寞,才允許申請(qǐng)汰规;當(dāng)進(jìn)程釋放資源時(shí),分配邊變?yōu)樾枨筮?/p>
12 【銀行家算法】:當(dāng)新進(jìn)程進(jìn)入系統(tǒng)時(shí)物邑,它必須說明其可能需要的每種類型實(shí)例的最大數(shù)量溜哮; 當(dāng)用戶申請(qǐng)一組資源時(shí),系統(tǒng)必須確定這些資源的分配是使系統(tǒng)仍然為安全狀態(tài)的話就可以分配色解,否則進(jìn)程必須等待茂嗓;
13 【等待圖】:是資源分配圖的變種,刪除所有資源類型節(jié)點(diǎn)科阎,合并適當(dāng)邊述吸;(僅適合于資源實(shí)例僅有一個(gè))更確切的說是等待圖中的有PI 到 PJ的邊意味著進(jìn)程PI在等待進(jìn)程PJ釋放一個(gè)PI所需要的資源;當(dāng)且僅當(dāng)?shù)却龍D中有一個(gè)環(huán)锣笨,系統(tǒng)中存在死鎖
14 死鎖恢復(fù)的方法【進(jìn)程終止】:(1)終止所有死鎖進(jìn)程刚梭、(2)一次只終止一個(gè)進(jìn)程直到取消死鎖循環(huán)為止【資源搶占】:通過搶占資源以取消死鎖,逐步從進(jìn)程中搶占資源給其他進(jìn)程使用票唆,直到死鎖環(huán)被打開
第八章
內(nèi)存管理:必須通過OS朴读,分配內(nèi)存,回收內(nèi)存走趋,進(jìn)程內(nèi)存的共享與保護(hù)
交換
連續(xù)內(nèi)存分配(進(jìn)程在內(nèi)存中占據(jù)連續(xù)的存儲(chǔ)空間):知道起始位置衅金、大小->;缺點(diǎn):內(nèi)碎片(進(jìn)程<分配的大胁净汀)氮唯、外碎片(進(jìn)程退出時(shí)的空洞,若小則無法利用)姨伟、不適宜實(shí)現(xiàn)虛擬存儲(chǔ)器
分頁(離散):為了解決碎片惩琉、為了實(shí)現(xiàn)虛擬存儲(chǔ)器
分頁式系統(tǒng):頁、頁框夺荒、兩者映射即裝入頁表的地址映射過程
地址變換過程硬件的支持:TLB瞒渠、頁表良蒸、缺頁中斷處理、缺頁異澄榫粒……嫩痰,軟件支持:OS……
硬件設(shè)計(jì)決定分頁/分段
頁表結(jié)構(gòu),結(jié)合Intel Pentium
分段(離散)
分頁式和請(qǐng)求分頁式實(shí)現(xiàn)的區(qū)別:頁表(引用位窍箍、中斷位串纺、修改位等反映頁表功能)、地址交換過程椰棘、硬件的變化
1 內(nèi)存是現(xiàn)代計(jì)算機(jī)運(yùn)行的中心
2 內(nèi)存由很大的一組字或字節(jié)組成纺棺,每個(gè)字或字節(jié)都有自己的地址
3 CPU根據(jù)程序計(jì)數(shù)器的值從內(nèi)存中提取指令,這些指令可能會(huì)引起進(jìn)一步對(duì)特定內(nèi)存地址的讀取和寫入
4 內(nèi)存單元只能看到地址流邪狞,而并不知道這些地址是怎么產(chǎn)生的或它們是什么地址(指令或數(shù)據(jù))
5 CPU能直接訪問的存儲(chǔ)器只有內(nèi)存和處理器內(nèi)的寄存器
6 機(jī)器指令可以用內(nèi)存地址作為參數(shù)祷蝌,但是不能用磁盤地址; 因此外恕,執(zhí)行指令以及指令使用的數(shù)據(jù)必須在這些直接可訪問的存儲(chǔ)設(shè)備上杆逗,如果數(shù)據(jù)不在內(nèi)存中,那么在CPU使用之前必須把數(shù)據(jù)移到內(nèi)存中
7 要確保操作系統(tǒng)不被用戶進(jìn)程所訪問鳞疲,以及用戶進(jìn)程不被其他用戶進(jìn)程訪問罪郊;首先要確保每個(gè)用戶進(jìn)程都有自己的獨(dú)立的內(nèi)存空間,并確保進(jìn)程只訪問其合法地址【基地址寄存器】:含有最小的合法物理內(nèi)存地址【界限地址寄存器】:決定范圍的大小只有操作系統(tǒng)可以通過特權(quán)指令來加載基地址寄存器和界限地址寄存器尚洽,并做出修改悔橄,不允許用戶修改
8 操作系統(tǒng)在內(nèi)核模式下執(zhí)行可以無限制地訪問操作系統(tǒng)和用戶的內(nèi)存
9 通常,程序以二進(jìn)制可執(zhí)行文件的形式存儲(chǔ)在磁盤上腺毫; 為了執(zhí)行癣疟,程序被調(diào)入內(nèi)存空間
10 【輸入隊(duì)列】:在磁盤上等待調(diào)入內(nèi)存以便執(zhí)行的進(jìn)程隊(duì)列
11 【地址綁定】:源程序中的地址通常是用符號(hào)來表示的(如:count),編譯器通常將這些符號(hào)地址綁定在可重定位的地址(如:從本模塊開始的第14字節(jié))潮酒,鏈接程序或加載程序再將這些可重定位的地址綁定成絕對(duì)地址睛挚; 每次綁定都是從一個(gè)地址空間到另一個(gè)地址空間的映射
12 將指令和數(shù)據(jù)綁定到內(nèi)存地址上有幾種情況:1、編譯時(shí):在編譯時(shí)就知道進(jìn)程將在內(nèi)存中的駐留地址急黎,那么就可以生成絕對(duì)代碼扎狱; 如果將來開始地址發(fā)生了改變,那么必須重新編譯代碼(MS-DOS的.COM格式程序就是這種情況)2勃教、加載時(shí):在編譯時(shí)不知道具體在內(nèi)存中的地址淤击,這時(shí),編譯器必須生成可重定位代碼故源; 如果開始地址發(fā)生變化污抬,只需要重新加載用戶代碼以引入新的地址值3、執(zhí)行時(shí):如果進(jìn)程在執(zhí)行時(shí)可以從一個(gè)內(nèi)存段移到另一個(gè)內(nèi)存段绳军,就屬于這種情況印机; 這種情況需要特定的硬件矢腻,絕大多數(shù)計(jì)算機(jī)操作系統(tǒng)采用這種辦法
13 CPU所生成的地址通常稱為【邏輯地址】,而內(nèi)存單元所看到的地址(即加載到內(nèi)存地址寄存器中的地址)通常稱為【物理地址】
14 在編譯事和加載時(shí)的地址綁定方法生成相同的邏輯地址和物理地址耳贬,但是在執(zhí)行時(shí)綁定的是兩者不一樣的踏堡,通常稱邏輯地址為【虛擬地址】
15 由程序所生成的所有邏輯地址的集合稱為【邏輯地址空間】猎唁,相應(yīng)的有【物理地址空間】
16 運(yùn)行時(shí)從虛擬地址到物理地址的映射是有被稱為【內(nèi)存管理單元MMU】的硬件設(shè)備來完成的一種實(shí)現(xiàn)映射的方案:使用【重定位寄存器】咒劲,其實(shí)是前面所講的基地址寄存器;用戶進(jìn)程所生成的地址在送交內(nèi)存之前诫隅,都將加上重定位寄存器的值腐魂; 例如:邏輯地址為346,重定位寄存器的值是10000逐纬,則將映射到地址10346
17 用戶程序絕不會(huì)看到真正的物理地址
18 【動(dòng)態(tài)加載】:對(duì)于一個(gè)進(jìn)程的子程序只有在被調(diào)用時(shí)才被加載蛔屹,所有子程序都以可重定位的形式保存在磁盤上; 主程序裝入內(nèi)存并運(yùn)行豁生,當(dāng)一個(gè)子程序需要調(diào)用到另一個(gè)子程序時(shí)兔毒,調(diào)用子程序首先檢查另一個(gè)子程序是否已被加載,如果沒有甸箱,【可重定位的鏈接程序】將用來加載所需要的子程序育叁,并更新程序的地址表以反映這一變化,接著芍殖,控制傳遞給新加載的子程序
19 動(dòng)態(tài)加載不需要操作系統(tǒng)提供特別的支持
20 【存根】是一小段代碼豪嗽,用來指出如何定位適當(dāng)?shù)膬?nèi)存駐留庫程序,或者是如果該程序不在內(nèi)存時(shí)應(yīng)該如何裝入庫豌骏; 不管如何龟梦,存根會(huì)用子程序地址來替換自己,并開始執(zhí)行子程序
21 【動(dòng)態(tài)鏈接】:概念與動(dòng)態(tài)加載相似窃躲,只是這里不是將加載延遲到運(yùn)行時(shí)计贰,而是將鏈接延遲到運(yùn)行時(shí); 這一特點(diǎn)通常用于系統(tǒng)庫蒂窒,如語言子程序庫躁倒;若沒有這一點(diǎn),則每個(gè)程序都必須要有一份語言庫的副本刘绣,這浪費(fèi)了磁盤空間和內(nèi)存空間樱溉;?動(dòng)態(tài)鏈接也可以使用于庫的更新; 動(dòng)態(tài)鏈接需要操作系統(tǒng)的幫助纬凤;
22 【交換】:進(jìn)程被換出(滾出)內(nèi)存或換入(滾入)內(nèi)存
23 通常一個(gè)交換出的進(jìn)程需要回到它原來所占有的空間
24 交換需要【備份存儲(chǔ)】福贞,是快速磁盤,這必須足夠大停士,以便容納所有用戶的內(nèi)存鏡像副本
25 具有動(dòng)態(tài)內(nèi)存需求的進(jìn)程需要通過系統(tǒng)調(diào)用(請(qǐng)求內(nèi)存和釋放內(nèi)存)來通知操作系統(tǒng)其內(nèi)存需求變化情況
26 **************以下討論是基于操作系統(tǒng)放在低內(nèi)存**************************
27 【連續(xù)內(nèi)存分配】:每一個(gè)進(jìn)程位于一個(gè)連續(xù)的內(nèi)存區(qū)域
28 MMU動(dòng)態(tài)地將邏輯地址加上重定位寄存器的值后映射成物理地址挖帘,再將之送往內(nèi)存單元
29 【多分區(qū)方法】:將內(nèi)存分為多個(gè)固定大小的分區(qū)完丽; 每個(gè)分區(qū)只能容納一個(gè)進(jìn)程; 因此多道程序的程度會(huì)受分區(qū)數(shù)所限制
30 在【可變分區(qū)】方案里拇舀,操作系統(tǒng)有一個(gè)表逻族,用于記錄哪些內(nèi)存可用和哪些內(nèi)存已被占用在一開始,所有的內(nèi)存都可用于用戶進(jìn)程骄崩,因此可以作為一大塊可用內(nèi)存聘鳞,稱為【孔】; 當(dāng)有新進(jìn)程需要內(nèi)存的時(shí)候要拂,就為該進(jìn)程查找足夠大的孔抠璃, 如果找到,可以在孔內(nèi)為該進(jìn)程分配所需的內(nèi)存脱惰,未分配的內(nèi)存下次可以使用
31 內(nèi)存不斷的分配給進(jìn)程搏嗡,直到下一個(gè)進(jìn)程的內(nèi)存需求不能滿足為止,這時(shí)沒有足夠大的可用孔來裝入進(jìn)程拉一; 操作系統(tǒng)可以等到有足夠的空間或者是往下掃描輸入隊(duì)列以確定是否有其他內(nèi)存需求較小的進(jìn)程可以被滿足
32 當(dāng)進(jìn)程釋放空間時(shí)采盒,將所占有的孔與相鄰的孔合并成大孔
33 從一組可用孔中選擇一個(gè)孔的方法:(首次適應(yīng)較佳)1、首次適應(yīng):分配第一個(gè)足夠大的孔蔚润,就可停止2磅氨、最佳適應(yīng):分配最小的足夠大的孔,必須查找整個(gè)表抽碌;可以產(chǎn)生最小的剩余孔3悍赢、最差適應(yīng):分配最大的孔,必須查找整個(gè)表货徙;可以產(chǎn)生最大的剩余孔
34 【碎片】:內(nèi)存之中的小空間左权,但已經(jīng)不足以分配給進(jìn)程使用了;首次適應(yīng)和最佳適應(yīng)方法都會(huì)有【外部碎片】
35 【50%規(guī)則】:假定有N個(gè)可分配塊痴颊,那么可能有0.5N個(gè)塊是外部碎片赏迟,即1/31/2的內(nèi)存不能使用
36 通常將內(nèi)存以固定大小的塊為單元來分配,但若按這種方案蠢棱,進(jìn)程所分配的內(nèi)存可能比所要的要大锌杀,這兩個(gè)數(shù)字之差稱為【內(nèi)部碎片】
37 【緊縮】:解決外部碎片的問題;移動(dòng)內(nèi)存內(nèi)容泻仙,以使所有空閑空間合并成一整塊糕再;(緊縮僅在重定位是動(dòng)態(tài)并在運(yùn)行時(shí)可采用)
38 【分頁】:允許進(jìn)程的物理地址空間可以是非連續(xù)的;(傳統(tǒng)上玉转,分頁是由硬件支持的)
39 分頁避免了將不同大小的內(nèi)存塊匹配到交換空間上的麻煩突想;
40 實(shí)現(xiàn)分頁的基本方法涉及將物理內(nèi)存分為固定大小的塊,稱為【幀】;而將邏輯內(nèi)存也分為同樣大小的塊猾担,稱為【頁】袭灯;當(dāng)需要執(zhí)行進(jìn)程時(shí),其頁從備份存儲(chǔ)中調(diào)入到可用的內(nèi)存幀中绑嘹; 備份存儲(chǔ)也分為固定大小的塊
41 由CPU生成的地址分為兩部分:頁號(hào)(P)和頁偏移(d)稽荧,頁號(hào)作為頁表(【頁表】包含每頁所在物理內(nèi)存的基地址)的索引,基地址與頁偏移組合成了物理地址工腋,就可送交物理單元了
42 分頁不會(huì)產(chǎn)生外部碎片姨丈,但是仍然有內(nèi)部碎片;
43 分頁的一個(gè)重要特點(diǎn)是用戶視角的內(nèi)存和實(shí)際的物理內(nèi)存的分離
44 【幀表】:每一個(gè)條目對(duì)應(yīng)著一個(gè)幀夷蚊,以表示該幀是空閑還是已占用构挤,如果占用髓介,是被哪個(gè)占用
45 絕大多數(shù)的操作系統(tǒng)都為每個(gè)進(jìn)程分配一個(gè)頁表惕鼓,頁表的指針與其他寄存器的值(如指令計(jì)數(shù)器)一起存入進(jìn)程控制塊中,當(dāng)調(diào)度程序需要啟動(dòng)一個(gè)進(jìn)程時(shí)唐础,它必須首先裝入用戶寄存器箱歧,并根據(jù)所保存的用戶頁表來定義正確的硬件頁表值
46 【頁表基寄存器PTBR】:指向存在內(nèi)存中的頁表
47 【轉(zhuǎn)換表緩沖區(qū)TLB】:是關(guān)聯(lián)的快速內(nèi)存; 由鍵(標(biāo)簽)和值組成一膨; 當(dāng)關(guān)聯(lián)內(nèi)存根據(jù)給定定值查找時(shí)呀邢,它會(huì)同時(shí)與所有鍵進(jìn)行比較TLB只包含頁表中的一小部分條目,當(dāng)CPU產(chǎn)生邏輯地址后豹绪,其頁號(hào)提交給TLB价淌,如果找到了頁號(hào)就找到了幀號(hào),并可用來訪問內(nèi)存瞒津; 如果頁碼不在TLB中(TLB失效)蝉衣,那么就需要訪問頁表,尋找到后將之放入TLB中巷蚪,如有必要病毡,置換出一個(gè)
48 有的TLB在每個(gè)條目中還保存地址空間標(biāo)識(shí)符(ASID),可用來唯一標(biāo)識(shí)進(jìn)程屁柏,并為進(jìn)程提供地址空間保護(hù)
49 【頁表長(zhǎng)度寄存器PTLR】:表示頁表的大欣材ぁ; 可用于檢查每個(gè)邏輯地址以驗(yàn)證其是否位于進(jìn)程的有效范圍
50 分頁的優(yōu)點(diǎn)之一在于可以【共享公共代碼】
51 【可重入代碼】淌喻、【純代碼】:可以共享僧家,不能自我修改的代碼,它從不會(huì)在執(zhí)行期間改變
52 【向前映射頁表】:地址轉(zhuǎn)換由外向內(nèi)(在兩級(jí)或多級(jí)頁表結(jié)構(gòu)中裸删,從外部頁表到內(nèi)部頁表
53 【哈希頁表】:處理超過32位地址空間的常用方法是使用哈希頁表八拱,并以虛擬頁碼作為哈希值;哈希頁表的每一條目都包括一個(gè)鏈表的元素,每個(gè)元素包括:(1)虛擬頁碼乘粒;(2)所映射的幀號(hào)豌注;(3)指向鏈表中下一個(gè)元素的指針;算法工作:虛擬地址中的虛擬頁號(hào)轉(zhuǎn)換到哈希表中灯萍,用虛擬頁號(hào)與鏈表中的每一個(gè)元素的第一個(gè)域相比轧铁,如果匹配(不匹配就比下一個(gè)),那么相應(yīng)的幀號(hào)(第二個(gè)域)就用來形成物理地址
54 【群集頁表】:類似于哈希頁表旦棉,但是每一個(gè)條目不只包括一頁信息齿风,包括多頁; 因此一個(gè)頁表?xiàng)l目可以存儲(chǔ)多個(gè)物理頁幀的映射绑洛,對(duì)于稀疏地址空間特別有用救斑;
55 【反向頁表】:對(duì)于每個(gè)真正的內(nèi)存頁或幀才有一個(gè)條目; 每個(gè)條目包含保存在真正內(nèi)存位置的頁的虛擬地址以及擁有該頁的進(jìn)程的信息真屯; 整個(gè)系統(tǒng)只有一個(gè)脸候;
56 【分段】:邏輯地址空間是由一組段組成的; 每個(gè)段都有名稱和長(zhǎng)度绑蔫,地址指定了段名稱和段內(nèi)偏移运沦;因此,用戶可以通過段名稱和偏移兩個(gè)量來指定地址
57 【段表】:段表的每個(gè)條目都有段基地址和段界限(段的長(zhǎng)度)
58 段表的使用:一個(gè)邏輯地址由:(1)段號(hào)(段名稱)和(2)段內(nèi)偏移配深;如果偏移合法携添,那么就與段基地址相加而得到所需字節(jié)在物理內(nèi)存的地址; 如果不合法篓叶,會(huì)陷入操作系統(tǒng)
59 在pentium系統(tǒng)中烈掠,CPU產(chǎn)生邏輯地址,它被賦給分段單元缸托; 分段單元為每個(gè)邏輯地址生成線性地址左敌,然后線性地址交給分頁單元,它接下來生成內(nèi)存中的物理地址嗦董;(分段單元和分頁單元相當(dāng)于內(nèi)存管理單元MMU)
60 進(jìn)程的邏輯空間被分成兩部分:第一部分最多由8K個(gè)段組成母谎,這部分為私有,存于【本地描述符表LDT】京革; 第二部分最多由8K個(gè)段組成奇唤,這部分為所有進(jìn)程所共享,存于【全局描述符表GDT】匹摇;LDT, GDT的每個(gè)條目為8B咬扇,包括一個(gè)段的詳細(xì)信息,如基位置和段界限等廊勃;邏輯地址是由一對(duì)(選擇器懈贺,偏移)組成的经窖,其中選擇器是16位的數(shù):s 表示段號(hào)(13位), g 表示是在GDT還是LDT(1位)梭灿,p是保護(hù)信息偏移是一個(gè)32位的數(shù)画侣,用來表示字節(jié)(或字)在段內(nèi)的位置