久久天天躁狠狠躁夜夜躁,国产精品入口福利,97久久精品人人爽人人爽蜜臀 ,中文字幕国产精品一区二区

好好學(xué)習(xí),天天向上,物理好資源網(wǎng)(原物理ok網(wǎng))歡迎您!
當(dāng)前位置:首頁 > > 信息公告 > 內(nèi)容頁

linux內(nèi)核頁表映射機(jī)制:線性地址怎么轉(zhuǎn)為化學(xué)地址?

2023-11-03 20:42:10信息公告60

關(guān)注“技術(shù)簡說”(頭條同名),帶你由淺入深學(xué)習(xí)linux內(nèi)核源碼。linux內(nèi)核開發(fā)100講免費教程,每晚下午9點準(zhǔn)時更新,敬請收看。進(jìn)我主頁點”視頻“欄目即可觀看。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

在后面《邏輯地址、虛擬地址、線性地址和化學(xué)地址大掃盲》一節(jié)我們談到了:Idh物理好資源網(wǎng)(原物理ok網(wǎng))

cpu在訪問某個邏輯地址的數(shù)據(jù)的時侯須要先把這種邏輯地址轉(zhuǎn)換為線性地址,之后再把線性地址轉(zhuǎn)換為化學(xué)地址,這樣能夠真正的訪問到相應(yīng)的數(shù)據(jù)。而我們也提到了在linux系統(tǒng)中,邏輯地址跟線性地址是一致的(也可以理解成是相同的)。所以邏輯地址轉(zhuǎn)換成化學(xué)地址,雖然就差一個環(huán)節(jié)了,那就是線性地址到化學(xué)地址的轉(zhuǎn)換,那我們明天就來看這部份內(nèi)容。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

Linux內(nèi)核里把線性地址轉(zhuǎn)換成化學(xué)地址是通過頁表映射來實現(xiàn)的。頁表映射具體還可以分為二級頁表、三級頁表等,而且原理是相同的邏輯地址和物理地址的轉(zhuǎn)換,五級頁表只是比二級頁表多了一個中間轉(zhuǎn)換環(huán)節(jié)而已。本文以二級頁表的映射機(jī)制來做說明。原理圖如下:Idh物理好資源網(wǎng)(原物理ok網(wǎng))

二級頁表映射機(jī)制Idh物理好資源網(wǎng)(原物理ok網(wǎng))

名詞解釋:Idh物理好資源網(wǎng)(原物理ok網(wǎng))

Page:頁目錄表,本文稱作一級頁表,表里的內(nèi)容叫頁目錄表項。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

PageTable:頁表,本文稱作二級頁表,表里的內(nèi)容叫頁表項。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

本文的講解以32位系統(tǒng)為例,在32位系統(tǒng)中,線性地址寬度為32bits,總大小4G。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

線性地址的界定Idh物理好資源網(wǎng)(原物理ok網(wǎng))

從上圖可以看出,linux把32的線性地址界定成了3段:Idh物理好資源網(wǎng)(原物理ok網(wǎng))

邏輯地址轉(zhuǎn)換物理地址公式_邏輯地址和物理地址的轉(zhuǎn)換_邏輯地址轉(zhuǎn)化物理地址Idh物理好資源網(wǎng)(原物理ok網(wǎng))

想想看:從線性地址經(jīng)過2次查詢加上1次匯總,是不是就得到相應(yīng)的數(shù)學(xué)地址?Idh物理好資源網(wǎng)(原物理ok網(wǎng))

線性地址到化學(xué)地址轉(zhuǎn)換Idh物理好資源網(wǎng)(原物理ok網(wǎng))

然而,這個時侯,你們對細(xì)節(jié)還是不太了解的,由于我們還不太清楚這個頁目錄表(Page)和頁表(PageTable)里存的一條一條的都是哪些?Idh物理好資源網(wǎng)(原物理ok網(wǎng))

頁目錄里表和頁表Idh物理好資源網(wǎng)(原物理ok網(wǎng))

我們剛才講過頁目錄表(一級頁表)里保存的是1024個頁目錄表項,二級頁表里保存的是1024個頁表項,但是每位頁目錄表項和頁表項的大小都是4個字節(jié)。那這種頁目錄表項和頁表項的格式如何的呢?Idh物理好資源網(wǎng)(原物理ok網(wǎng))

P--位0,是存在()標(biāo)志,用于指明表項對地址轉(zhuǎn)換是否有效。P=1表示有效;P=0表示無效。在頁轉(zhuǎn)換過程中,假如說涉及的頁目錄或頁表的表項無效,則會造成一個異常。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

R/W--位1,是讀/寫(Read/Write)標(biāo)志。假如等于1,表示頁面可以被讀、寫或執(zhí)行。假如為0,表示頁面只讀或可執(zhí)行。當(dāng)處理器運(yùn)行在超級用戶特權(quán)級(級別0、1或2)時,則R/W位不起作用。頁目錄項中的R/W位對其所映射的所有頁面起作用。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

U/S--位2是用戶/超級用戶(User/)標(biāo)志。假如為1,這么運(yùn)行在任何特權(quán)級上的程序都可以訪問該頁面。假如為0,這么頁面只能被運(yùn)行在超級用戶特權(quán)級(0、1或2)上的程序訪問。頁目錄項中的U/S位對其所映射的所有頁面起作用。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

A--位5是已訪問()標(biāo)志。當(dāng)處理器訪問頁表項映射的頁面時,頁表表項的這個標(biāo)志都會被置為1。當(dāng)處理器訪問頁目錄表項映射的任何頁面時,頁目錄表項的這個標(biāo)志都會被置為1。處理器只負(fù)責(zé)設(shè)置該標(biāo)志,操作系統(tǒng)可通過定期地復(fù)位該標(biāo)志來統(tǒng)計頁面的使用情況。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

D--位6是頁面已被更改(Dirty)標(biāo)志。當(dāng)處理器對一個頁面執(zhí)行寫操作時,才會設(shè)置對應(yīng)頁表表項的D標(biāo)志。處理器并不會更改頁目錄項中的D標(biāo)志。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

邏輯地址轉(zhuǎn)換物理地址公式_邏輯地址和物理地址的轉(zhuǎn)換_邏輯地址轉(zhuǎn)化物理地址Idh物理好資源網(wǎng)(原物理ok網(wǎng))

AVL--該數(shù)組保留特供程序使用。處理器不會更改這幾位,之后的升級處理器也不會。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

高20位是化學(xué)地址頁面的基地址。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

轉(zhuǎn)換過程Idh物理好資源網(wǎng)(原物理ok網(wǎng))

cpu先將32位線性地址分為三段,高10位,中間10位,低12位。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

用高10位的值作為索引在頁目錄表里找到相應(yīng)的頁目錄表項,頁目錄表項里記錄了二級頁表的化學(xué)地址Idh物理好資源網(wǎng)(原物理ok網(wǎng))

用中間10位的值作為索引在二級頁表(步驟1得到了二級頁表的化學(xué)地址)里找到相應(yīng)的化學(xué)顯存基地址。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

化學(xué)顯存的基地址左移12位加上線性地址的低12位,就得到了最終的化學(xué)地址。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

缺頁Idh物理好資源網(wǎng)(原物理ok網(wǎng))

在須要訪問某一個頁表或頁面時,首先要檢測P位,若P為1,表明該頁表或頁面存在于化學(xué)儲存器中,則可以直接訪問它們。若P為0,表明該頁表或頁面不在化學(xué)儲存器中,這時分頁機(jī)制將發(fā)出缺頁中斷訊號,導(dǎo)致操作系統(tǒng)步入中斷處理解釋器,把所需的頁面從外存(例如c盤)調(diào)入顯存。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

須要強(qiáng)調(diào),80x86處理器在P位為0時,對頁表和頁目錄表的表項其它位不做任何解釋,此時那些位可以由軟件自行使用和解釋,Linux就借助此特點,在其它位中儲存該頁面在交換空間的地址。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

當(dāng)新頁面調(diào)入化學(xué)顯存時,若沒有空閑的數(shù)學(xué)頁面可用,須要從該進(jìn)程占用的化學(xué)頁面中選擇某一頁淘汰,選中某一頁面淘汰時,須要檢測D位,當(dāng)D為1時,表明該頁面已被更改過邏輯地址和物理地址的轉(zhuǎn)換,須要把它寫回外存。D=0時,表明該頁面從未更改,可以直接淘汰而不需寫回外存,訪問位A可以用于實現(xiàn)頁面淘汰的有關(guān)算法。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

關(guān)注“技術(shù)簡說”(頭條同名),帶你由淺入深學(xué)習(xí)linux內(nèi)核源碼。linux內(nèi)核開發(fā)100講免費教程,每晚下午9點準(zhǔn)時更新,敬請收看。進(jìn)我主頁點”視頻“欄目即可觀看。Idh物理好資源網(wǎng)(原物理ok網(wǎng))

主站蜘蛛池模板: 常宁市| 刚察县| 金溪县| 连云港市| 温宿县| 泊头市| 卢氏县| 文水县| 双柏县| 扶余县| 昌邑市| 芦山县| 岚皋县| 始兴县| 成都市| 嵊泗县| 东城区| 同仁县| 平原县| 台中县| 梅河口市| 固阳县| 兴宁市| 通化市| 白银市| 乐业县| 中西区| 滨海县| 新龙县| 周至县| 宜君县| 佛冈县| 浠水县| 株洲县| 潼南县| 南投市| 太原市| 东源县| 聂拉木县| 乐陵市| 舞阳县|