mmu表示記憶體管理單元,負責虛擬記憶體對映到物理記憶體。
虛擬位址對映到實體地址的關鍵是構建對映表。mmu就是利用對映**將虛擬位址轉換成實體地址。虛擬位址在32系統中為4g,位址佔4位元組,如果對映**中虛擬位址和實體地址是一一對應的關係,一條記錄就佔8位元組,那麼對映表就要32g.這明顯是不合理的。
於是通過二級對映解決這個問題。位址共32位,把前12位作為基位址,後20位作為偏移量,將虛擬位址和實體地址作為的前12位一一對應,12位就是2的12次方為4k。 一條記錄8位元組,那麼對映**就只有32k,
下圖左邊為虛擬位址,右邊為實體地址。比如有個虛擬位址為0x00123456,基位址為001 偏移量為23456.先通過對映表找到對於的實體地址為0x60100000,然後加上偏移量就是實際的位址0x60123456。
0x70000000就表示對映表儲存的位置,對映**的內容就只有實體地址。虛擬位址就在**的位址中體現。這樣的話,記憶體對映表又縮減了一半,4g的虛擬位址只要16k的**就能全部對映。
先看tiny4412的記憶體表:
從表中可以知道0x30000000位址是沒有內容的。現在要開啟mmu,將0x30000000記憶體對映到0x50000000位址去,如果能夠訪問到0x3000000,就表示對映成功。**如下:
可以訪問0x32300000的內容,說明mmu開啟成功。
下面是關於彙編**中開啟mmu的介紹。先是在arm開發手冊中查詢關於mmu控制的相關資訊,下圖是mmu配置的內容
上面**16行就是mmu的配置,將第一位置1表示 開啟mmu,第三位置一表示開啟寫快取。
未完待續。。。(等水平提公升了在繼續寫,剩下的彙編**實在看不懂)
第三十五講 LINQ 語法(二)
不廢話看例項 using system using system.collections.generic using system.linq using system.text namespace con35 liststus new list 1001 new student 2,王小三 new ...
日本語 第三十五課
第三十五課 明日雨 降 大會 中止 日本 帰 中國語 勉強 続 今年 夏休 日 會議室 李 大學 卒業 外國 働 馬 元気 何 聞 何 言 李 資料 少 待 大人 乗 子供 乗 語法 小句1 小句2 用於表示假定條件 小句1 為過去簡體小句 動詞和形容詞 將 形容動詞和名詞 明日雨 降 大會 中止 ...
LeetCode第三十五題 Python實現
title leetcode no.35 categories tags 給定乙個排序陣列和乙個目標值,在陣列中找到目標值,並返回其索引。如果目標值不存在於陣列中,返回它將會被按順序插入的位置。你可以假設陣列中無重複元素。示例 1 輸入 1,3,5,6 5 輸出 2 示例 2 輸入 1,3,5,6 ...