機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
讀核日記(六)
讀核日記(六)
 更新時(shí)間:2009-8-12 16:54:34  點(diǎn)擊數(shù):0
【字體: 字體顏色

我們講完了分段機(jī)制。接下來(lái)我們需要分析保護(hù)模式的第二種存儲(chǔ)管理機(jī)制:分頁(yè)方式。

在前面我們提到過(guò)轉(zhuǎn)臺(tái)和控制寄存器組。他們包括EFLAGS、ELP。和4 個(gè)32 位的控制寄存器CRO CR1CR2 CER3。其中CRO中有一位PE 用于標(biāo)志是使用保護(hù)模式還是實(shí)模式的。有一位PG定義是否使用分頁(yè)方式(10)。

當(dāng)PG=1 時(shí),系統(tǒng)使用分頁(yè)機(jī)制。80386使用大小位4K的頁(yè),并且每一個(gè)頁(yè)的邊界隊(duì)奇。即每一個(gè)頁(yè)的起始位置都可以被4K整除。這樣4G的字節(jié)就被分成了1M 頁(yè)。分頁(yè)機(jī)制把線性頁(yè)映射成物理頁(yè)。真正的起到了轉(zhuǎn)換作用

下面我們看一下LINUXE得分頁(yè)結(jié)構(gòu):

1.多級(jí)頁(yè)表結(jié)構(gòu)

LINUX中含有1M個(gè)頁(yè)。其中每個(gè)頁(yè)表占4個(gè)字節(jié)。則需要占用4M的連續(xù)內(nèi)存因此LINUX引入了2 級(jí)頁(yè)表結(jié)構(gòu)。在線性地址中的后10 位(22-32)定義了二級(jí)頁(yè)表。

二級(jí)頁(yè)表有1K 個(gè)字節(jié),頁(yè)正好存在]一個(gè)4K 的頁(yè)中。并且通過(guò)前20位進(jìn)行索引,從而實(shí)現(xiàn)實(shí)際的物理地址。

這個(gè)地方我說(shuō)不太清楚。大致可以這樣理解。

如:有N 個(gè)鏈表。每一個(gè)便是一頁(yè)?勺詈笠豁(yè)的內(nèi)容是指向另一個(gè)二級(jí)煉表的指針(或者是索引項(xiàng))

2,頁(yè)面項(xiàng)和頁(yè)目錄項(xiàng)

對(duì)于每一個(gè)頁(yè)。都會(huì)存在一個(gè)頁(yè)面項(xiàng)。用來(lái)表示該頁(yè)的使用狀況,是否空閑。是否在內(nèi)存中等等。而這些相會(huì)存儲(chǔ)成一個(gè)連標(biāo)。以減少使用表時(shí)的查詢時(shí)間等。

而每一個(gè)頁(yè)表,會(huì)存在1024個(gè)頁(yè)面項(xiàng),這才是真正的“頁(yè)“。

3,線性地址到物理地址的切換

  1. CR 包含頁(yè)目錄的起始地址,用32 位地址中的31-22位的內(nèi)容作頁(yè)目錄的頁(yè)目錄項(xiàng)的索引,于CR3種的頁(yè)目錄的起始地址相加。得到相應(yīng)頁(yè)表的地址
  2. 從指定的地址中取出32 位頁(yè)目錄項(xiàng)。它的提12 位是0用這32 位地址中21-12位作為頁(yè)表中的頁(yè)面的索引。將它乘以4和頁(yè)表的起始地址相加,得到32位地址
  3. 獎(jiǎng)11-0位作為相對(duì)一頁(yè)面地址的偏移量,于32位頁(yè)面地址相加。形成32 位的物理地址。

 

4,頁(yè)面CACHE

當(dāng)然,系統(tǒng)頻繁的訪問(wèn)二級(jí)頁(yè)表,會(huì)造成很大的時(shí)間浪費(fèi),因此引入了頁(yè)表CACHE,用來(lái)保存最近使用的頁(yè)面,或者頻繁使用的頁(yè)面,關(guān)于CACHE 的原理這里不再詳細(xì)講解,有興趣的朋友可以查一些,計(jì)算機(jī)專(zhuān)業(yè)的基礎(chǔ)教材

至此,LINUX使用的836保護(hù)模式,基本上講解完畢。至于控制轉(zhuǎn)移和任務(wù)切換。和一般的匯編編程差不多少,本人匯編水平太低。不在獻(xiàn)丑

總的說(shuō)來(lái),多任務(wù)的切換,以及保護(hù)模式的應(yīng)用。虛擬存儲(chǔ)系統(tǒng)的實(shí)現(xiàn),是建立在硬件的技術(shù)支持之上的。

個(gè)人認(rèn)為,LINUX的存儲(chǔ)管理。在不同的機(jī)器上是完全不同的,至于linux是否為他們提供了統(tǒng)一的接口。我還不太清楚。可以參見(jiàn)其他機(jī)型的源碼


  • 上一篇: 讀核日記(七) --linux的內(nèi)存管理機(jī)制(1)
  • 下一篇: 讀核日記(五)
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1