日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ARM9学习笔记之——MMU

發布時間:2025/6/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ARM9学习笔记之——MMU 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ?我記得有一次我去應聘ARM-Linux軟件工程師。結果被問到ARM中的虛擬內存是怎么管理的。由于我只對X86平臺下的MMU了解,所以我被問倒了。原來我所學的只是皮毛。還有很多東西值得我去深入。要做ARM-Linux下的驅動,熟悉虛擬內存應該是必須的。

??????? ARM9中的虛擬內存是怎么實現的呢?以下是我的學習總結。

?

??????? ARM920T核是通過CP15來實現MMU機制的。

?

1. 關于地址

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

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

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

??????? 3)PA,MVA通過MMU轉換后的地址。

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

??????? PID是存放在CP15協處理器的C13寄存器的高7位。

?

2. 關于虛擬內存轉換

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

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

??????? 得來的項表項分三種:

??????? 1)段頁描述符,直接指向1MB的內存空間。

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

??????? 3)細頁描述符,有1024個二級頁表項,每個二級頁表項指向1KB的內存空間。

?

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

??????? 1)大頁描述符,一個描述符可以對應64KB的內存地址,但16個二級描述符對應同一塊內存。

??????? 2)小頁描述符,一個描述符只對應4KB的內存地址,每個二級描述符只對應一塊內存。

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

?????

??? 如下是內存轉換圖:

?

思考:

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

? ? ? ? 那ARM9在設計CP15時為什么不為每一個進程指定一個單獨的頁表。這樣以來,每個進程就可以獨地擁有4GB的地址空間。

??????? 如此以來,進程數就不再受限于128個,可以多達1024個進程。而每一個進程的虛擬地址的空間可以擴展到4GB。

總結

以上是生活随笔為你收集整理的ARM9学习笔记之——MMU的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。