嵌入式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. 操作系统理论基 ...
随机推荐
- 从一个int值显示相应枚举类型的名称或者描述
我正在做一个出入库管理的简单项目,在Models里定义了这样的枚举类型 public enum InOrOut { [Description("出库")] Out = , [Des ...
- reverse engineering in ax
install Visio2010 Premium(UML model template). not work in Visio 2013 and other version.
- [转]解决a different object with the same identifier value was already associated with the session错误
1.a different object with the same identifier value was already associated with the session. 错误原因:在h ...
- iOS10 权限适配
权限适配 这应该算iOS10系统适配的范畴,最近这两个都在弄,所以就直接和Xcode8适配一起写出来了. 在iOS10之后需要在Info.plist中,添加新的字段获取权限,否则在iOS10上运行会导 ...
- CSS3按钮鼠标悬浮光圈效果
1 .HTML相关知识点 HTML(超文本标记语言)是网页的核心.首先你要学会,不要害怕,HTML很容易学习的,刚开始多记多练,但是到最后还是要自己深入专研,简单的入门是很快,但学好HTML是成为W ...
- background-size拉伸背景图片
在制作页面中常需要对背景图片在容器中进行平铺,可用background-size属性对背景编辑:拉伸,压缩等~ background-size:contain; 将背景扩展到整个容器大小. 较为实用的 ...
- 1.使用Entity Framwork框架常用的技术手段Code First 和Reverse Engineer Code First
提示:VS版本2013, Entity Framwork版本5.0.0,Mysql数据库 使用Entity FrameWork的好处就不多说,直接上手如何使用.两种形式:1.将代码映射到数据库实体 ...
- MFC 如何改变对话框的默认背景颜色(转)
下面介绍三种方法:实现改变对话框的默认背景颜色: (1)可以在CLotteryApp::InitInstance()设置更新对话框的背景颜色 调用SetDialogBkColor(RG ...
- 命令与文件的查询 which whereis locate find
一:which which查找脚本文件也就是我们的系统命令 用法:which [command] 默认根据我们PATH路径去查找,但是不同的用户肯定设置不同的PATH,所以就像普通用户查找不到一些/s ...
- Git 操作本地分支与远程分支
1 查看本地分支 git branch 2 查看远程分支 git branch -a 3 新建远程分支 git checkout -b developr git push origin develop ...