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