色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM9學(xué)習(xí)筆記之——MMU

          ARM9學(xué)習(xí)筆記之——MMU

          作者: 時間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
          我記得有一次我去應(yīng)聘ARM-Linux軟件工程師。結(jié)果被問到ARM中的虛擬內(nèi)存是怎么管理的。由于我只對X86平臺下的MMU了解,所以我被問倒了。原來我所學(xué)的只是皮毛。還有很多東西值得我去深入。要做ARM-Linux下的驅(qū)動,熟悉虛擬內(nèi)存應(yīng)該是必須的。

          ARM9中的虛擬內(nèi)存是怎么實(shí)現(xiàn)的呢?以下是我的學(xué)習(xí)總結(jié)。

          本文引用地址:http://cafeforensic.com/article/201611/318812.htm

          ARM920T核是通過CP15來實(shí)現(xiàn)MMU機(jī)制的。

          1. 關(guān)于地址

          要知道虛擬內(nèi)存機(jī)制必須了解ARM9中的3種地址:VA(虛地址),MVA(修正后虛地址),PA(物理地址)

          1)VA,是程序中的邏輯地址,0x00000000~0xFFFFFFFF。

          2)MVA,由于多個進(jìn)程執(zhí)行,邏輯地址會重合。所以,跟據(jù)進(jìn)程號將邏輯地址分布到整個內(nèi)存中。MVA = (PID << 25) | VA

          3)PA,MVA通過MMU轉(zhuǎn)換后的地址。

          由2可知,地址位共32位,PID占7位,所以最多只能有 128 個進(jìn)程。而每個進(jìn)程可訪問的地址位為25位,故只能分到 32MB 的地址空間。(注:不是物理內(nèi)存空間)

          PID是存放在CP15協(xié)處理器的C13寄存器的高7位。

          2. 關(guān)于虛擬內(nèi)存轉(zhuǎn)換

          CP15從C2中獲得頁基址(TTB)。將 MVA 的高12位作為頁表索引值。獲得頁表項:TTB [ MVA >> 20 ]。注意:頁表項是32位的。

          從上可知,一個頁表最多有4096個頁表項,也就是4K。那么,每個頁表項可以表示1MB的地址空間。

          得來的項表項分三種:

          1)段頁描述符,直接指向1MB的內(nèi)存空間。

          2)粗頁描述符,有256個二級頁表項,每個二級頁表項指向4KB的內(nèi)存空間。

          3)細(xì)頁描述符,有1024個二級頁表項,每個二級頁表項指向1KB的內(nèi)存空間。

          ## 粗頁描述符中存放的是粗頁表二級表的基址。將MVA的[19~12]位用來進(jìn)行二級頁表查尋。粗頁表二級表分兩種:

          1)大頁描述符,一個描述符可以對應(yīng)64KB的內(nèi)存地址,但16個二級描述符對應(yīng)同一塊內(nèi)存。

          2)小頁描述符,一個描述符只對應(yīng)4KB的內(nèi)存地址,每個二級描述符只對應(yīng)一塊內(nèi)存。

          ## 細(xì)頁描述符中存放的是細(xì)頁表二級表的基址。將MVA的[19~10],共計10位用于進(jìn)行二級頁表索引。二級頁表共1024個描述符。剩下的10位作為基址,可訪問空間為1024B。

          如下是內(nèi)存轉(zhuǎn)換圖:

          思考:

          通過上面的學(xué)習(xí),了解到ARM將4GB的地址訪問空間分成128個32MB,每份供一個進(jìn)程使用。如此以來,一個進(jìn)程的地址訪問空間只有32MB。如進(jìn)程1的地址空間為[0x02000000~0x03FFFFFF]。如果超出這個范圍,地址訪問就是非法的。

          那ARM9在設(shè)計CP15時為什么不為每一個進(jìn)程指定一個單獨(dú)的頁表。這樣以來,每個進(jìn)程就可以獨(dú)地?fù)碛?GB的地址空間。

          如此以來,進(jìn)程數(shù)就不再受限于128個,可以多達(dá)1024個進(jìn)程。而每一個進(jìn)程的虛擬地址的空間可以擴(kuò)展到4GB。



          關(guān)鍵詞: ARM9MM

          評論


          技術(shù)專區(qū)

          關(guān)閉