嵌入式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]变化时,其对应的物理地址全部相同,故不能保存在粗页表中。
嵌入式linux学习笔记1—内存管理MMU之虚拟地址到物理地址的转化的更多相关文章
- 韦东山嵌入式Linux学习笔记05--存储管理器
SDRAM: 原理图如下: jz2440 v3开发板上面用的内存芯片为钰创科技公司生产的EM63A165TS,一片内存大小为32MB大小,一共有两块,共64MB的大小. SDRAM接 ...
- linux kernel学习笔记-5内存管理_转
void * kmalloc(size_t size, gfp_t gfp_mask); kmalloc()第一个参数是要分配的块的大小,第一个参数为分配标志,用于控制kmalloc()的行为. km ...
- Linux学习笔记(六) 进程管理
1.进程基础 当输入一个命令时,shell 会同时启动一个进程,这种任务与进程分离的方式是 Linux 系统上重要的概念 每个执行的任务都称为进程,在每个进程启动时,系统都会给它指定一个唯一的 ID, ...
- Linux学习笔记(五) 账号管理
1.用户与组账号 用户账号:包括实际人员和逻辑性对象(例如应用程序执行特定工作的账号) 每一个用户账号包含一个唯一的用户 ID 和组 ID 标准用户是系统安装过程中自动创建的用户账号,其中除 root ...
- XV6学习笔记(2) :内存管理
XV6学习笔记(2) :内存管理 在学习笔记1中,完成了对于pc启动和加载的过程.目前已经可以开始在c语言代码中运行了,而当前已经开启了分页模式,不过是两个4mb的大的内存页,而没有开启小的内存页.接 ...
- 嵌入式Linux学习笔记之第一阶段---基础篇
嵌入式Linux学习分五个阶段 第一阶段: 01嵌入式环境搭建初期 02C语言语法概述 03C语言内存操作 04c语言函数 05linux基础 06gun基础 第二阶段: 01-linux之io系统编 ...
- Linux内核学习笔记——内核内存管理方式
一 页 内核把物理页作为内存管理的基本单位:内存管理单元(MMU)把虚拟地址转换为物理 地址,通常以页为单位进行处理.MMU以页大小为单位来管理系统中的也表. 32位系统:页大小4KB 64位系统:页 ...
- Linux System Programming 学习笔记(九) 内存管理
1. 进程地址空间 Linux中,进程并不是直接操作物理内存地址,而是每个进程关联一个虚拟地址空间 内存页是memory management unit (MMU) 可以管理的最小地址单元 机器的体系 ...
- 【转】嵌入式Linux学习笔记
一 嵌入式系统定义: 应用于特定环境的硬件体系. 二 两样非常重要的能力: 1. 掌握各种新概念的能力 2. 调试的能力( 包括软件, 硬件 ) 三 需要的基础知识: 1. 操作系统理论基 ...
随机推荐
- OpenGL ES(一.概念)
OpenGL ES是以手持和嵌入式设备为目标的高级3D图形应用程序编程接口,主要的支持平台是iOS,Android,Linux和Windows 1.顶点着色器 他可以用于通过矩阵变换位置,计算照明公式 ...
- MySQL Workbench “Error Code: 1175” 的解决方法
转自:http://www.linuxidc.com/Linux/2012-04/59333.htm 当用MySQL Workbench进行数据库的批量更新时,执行一个语句会碰到以下错误提示: Err ...
- OGC学习课程
1.引言 由于项目需要,需要学习OGC相关地图标准,包括WMS.WFS.GML.SLD等,只是国内相关书籍大家都懂的,特向Google大师请教,得一秘籍<Open Web Mapping> ...
- jquery 获取鼠标和元素的坐标点
获取当前鼠标相对img元素的坐标 $('img').mousemove(function(e) { varpositionX=e.pageX-$(this).offset().left; //获取当前 ...
- Sublime插件安装
来在Sublime text3上安装Package Control 使用Ctrl+`(ESC下边的那个~)快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码: imp ...
- leetcode 171
171. Excel Sheet Column Number Related to question Excel Sheet Column Title Given a column title as ...
- 快速卸载VS2015的办法
1.以管理员身份运行CMD: 2.在CMD里输入F:\>vs_enterprise.exe /uninstall /force
- asp.net MVC上传图片完整方法
图片上传 自动创建文件夹并重命名(带缩略图) 后台: [HttpPost] public ActionResult WanSell_UploadPicture(ProductGalleryModels ...
- MSSQL 查询数据库所有表的大小, 有助于删除一些没用的表
SELECT b.name AS tablename , a.rowcnt AS datacount FROM sysindexes a , sysobjects b WHERE a.id = b.i ...
- Bash脚本15分钟进阶指导
首先声明这是网上摘来的.这里的技术技巧最初是来自谷歌的“Testing on the Toilet” (TOTT).这里是一个修订和扩增版本. 脚本安全 我的所有bash脚本都以下面几句为开场白: # ...