嵌入式linux学习笔记1—内存管理MMU之虚拟地址到物理地址的转化
一.內(nèi)存管理基本知識
1.S3C2440最多會用到兩級頁表:以段的方式進行轉(zhuǎn)換時只用到一級頁表,以頁的方式進行轉(zhuǎn)換時用到兩級頁表。頁的大小有三種:大頁(64KB),小頁(4KB),極小頁(1KB)。條目也稱為"描述符",有:段描述符,大頁描述符,小頁描述符,極小頁描述符——他們保存大頁,小頁,極小頁的起始物理地址;粗頁表描述符,細(xì)頁表描述符——他們保存二級頁表的物理地址。
2.一級頁表描述符的最低兩位,可分為以下四種情況:
(1).0b00:無效。
(2).0b01:粗頁表。
(3).0b10:段。
(4).0b11:細(xì)頁表。
3.二級頁表描述符的最低兩位,可分為以下四種情況:
(1).0b00:無效。
(2).0b01:大頁描述符。
(3).0b10:小頁描述符。
(4).0b11:極小頁描述符。
4.一級頁表地址,將它寫入?yún)f(xié)處理器CP15的寄存器C2(稱為頁表基址寄存器)
二.地址轉(zhuǎn)化過程(基址+變址的形式)
1.段的地址轉(zhuǎn)化過程
NO1.一級頁表基址C2[31:14]+MVA[31:20]+低兩位為0構(gòu)成一個32位的物理地址,找到其中存儲的描述符,此描述符最低兩位為0b10,稱為段描述符;
NO2.段描述符[31:20]+MVA[19:0]構(gòu)成一個32位的物理地址——這就是MVA對應(yīng)的PA。
2.大頁的地址轉(zhuǎn)化過程
(1).大頁描述符保存在粗頁表中
? NO1.一級頁表基址C2[31:14]+MVA[31:20]+低兩位為0構(gòu)成一個32位的物理地址,找到其中存儲的描述符,此描述符最低兩位為0b01,稱為粗頁表描述符;
? NO2.粗頁表描述符[31:10]+MVA[19:12]+低兩位為0構(gòu)成一個新的32位地址,找到其中存儲的描述符,此描述符最低兩位為0b01,稱為大頁描述符;
? NO3.大頁描述符[31:16]+MVA[15:0]構(gòu)成一個32位的物理地址——這就是MVA對應(yīng)的PA。
(2).大頁描述符保存在細(xì)頁表中
??NO1.一級頁表基址C2[31:14]+MVA[31:20]+低兩位為0構(gòu)成一個32位的物理地址,找到其中存儲的描述符,此描述符最低兩位為0b11,稱為細(xì)頁表描述符;
? NO2.細(xì)頁表描述符[31:12]+MVA[19:10]+低兩位為0構(gòu)成一個新的32位地址,找到其中存儲的描述符,此描述符最低兩位為0b01,稱為大頁描述符;
? NO3.大頁描述符[31:16]+MVA[15:0]構(gòu)成一個32位的物理地址——這就是MVA對應(yīng)的PA。
3.小頁的地址轉(zhuǎn)化過程?
(1).小頁描述符保存在粗頁表中
? NO1.一級頁表基址C2[31:14]+MVA[31:20]+低兩位為0構(gòu)成一個32位的物理地址,找到其中存儲的描述符,此描述符最低兩位為0b01,稱為粗頁表描述符;
? NO2.粗頁表描述符[31:10]+MVA[19:12]+低兩位為0構(gòu)成一個新的32位地址,找到其中存儲的描述符,此描述符最低兩位為0b10,稱為小頁描述符;
? NO3.小頁描述符[31:16]+MVA[15:0]構(gòu)成一個32位的物理地址——這就是MVA對應(yīng)的PA。
(2).小頁描述符保存在細(xì)頁表中
??NO1.一級頁表基址C2[31:14]+MVA[31:20]+低兩位為0構(gòu)成一個32位的物理地址,找到其中存儲的描述符,此描述符最低兩位為0b11,稱為細(xì)頁表描述符;
? NO2.細(xì)頁表描述符[31:12]+MVA[19:10]+低兩位為0構(gòu)成一個新的32位地址,找到其中存儲的描述符,此描述符最低兩位為0b10,稱為小頁描述符;
? NO3.小頁描述符[31:16]+MVA[15:0]構(gòu)成一個32位的物理地址——這就是MVA對應(yīng)的PA。
4.極小頁的地址轉(zhuǎn)化過程
? NO1.一級頁表基址C2[31:14]+MVA[31:20]+低兩位為0構(gòu)成一個32位的物理地址,找到其中存儲的描述符,此描述符最低兩位為0b11,稱為細(xì)頁表描述符;
? NO2.細(xì)頁表描述符[31:12]+MVA[19:10]+低兩位為0構(gòu)成一個新的32位地址,找到其中存儲的描述符,此描述符最低兩位為0b11,稱為極小頁描述符;
? NO3.極小頁描述符[31:16]+MVA[15:0]構(gòu)成一個32位的物理地址——這就是MVA對應(yīng)的PA。
三.粗頁表細(xì)頁表每個條目表示的物理空間的由來
1.粗頁表中連續(xù)16個條目都保存同一大頁描述符
? 用于粗頁表索引的MVA[19:12]與用于大頁內(nèi)尋址的MVA[15:0]有重合的位,粗頁表中保存的描述符[31:16]作為物理地址的基址,為了保證基址相同,變址變化,即描述符 ? 不變,MVA[15:0]變化,當(dāng)MVA[15:12]由0b0000變化到0b1111時,里面存儲的描述符應(yīng)該相同——所以,粗頁表中連續(xù)16個條目都保存同一大頁描述符。
2.細(xì)頁表中連續(xù)4個條目保存同一小頁描述符
???用于細(xì)頁表索引的MVA[19:10]與用于小頁內(nèi)尋址的MVA[11:0]有重合的位,粗頁表中保存的描述符[31:12]作為物理地址的基址,為了保證基址相同,變址變化,即描述符 ? ?不變,MVA[11:0]變化,當(dāng)MVA[11:10]由0b00變化到0b11時,里面存儲的描述符應(yīng)該相同——所以,粗頁表中連續(xù)4個條目都保存同一小頁描述符。
四.為什么極小頁描述符只能保存在細(xì)頁表中
? ?MVA[31:20]索引一級頁表,MVA[19:12]索引二級頁表中的粗頁表,MVA[19:10]索引二級頁表中的細(xì)頁表,MVA[9:0]表示極小頁的尋址空間。又每一個MVA對應(yīng)一個 ? 不同的物理地址PA,當(dāng)極小頁的描述符保存在粗頁表中時,MVA[11:10]變化時,其對應(yīng)的物理地址全部相同,故不能保存在粗頁表中。
轉(zhuǎn)載于:https://www.cnblogs.com/WenlongLiu/p/5272763.html
總結(jié)
以上是生活随笔為你收集整理的嵌入式linux学习笔记1—内存管理MMU之虚拟地址到物理地址的转化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 生化危机cg电影有几部
- 下一篇: HDU 5047 Sawtooth 高精