嵌入式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. 操作系统理论基 ...
随机推荐
- Lodop6 以上打印控件使用,详参考自带说明文档,打印样式及文字大小要特殊设置一下
<link href="../css/cssprint.css" rel="stylesheet" /> <script src=" ...
- java comet
http://www.javaworld.com/article/2077995/java-concurrency/asynchronous-processing-support-in-servlet ...
- 二模12day2解题报告
T1.笨笨玩糖果(sugar) 有n颗糖,两个人轮流取质数颗糖,先取不了的(0或1)为输,求先手能否必胜,能,输出最少几步肯定能赢:不能,输出-1. 一开始天真的写了一个dp,f[i]表示i颗糖最少取 ...
- ios录音、音频播放功能
#import <AVFoundation/AVFoundation.h> { NSInteger _timeCount; NSTimer *_timer; } @pro ...
- Extjs MVC开发模式详解
Extjs MVC开发模式详解 在JS的开发过程中,大规模的JS脚本难以组织和维护,这一直是困扰前端开发人员的头等问题.Extjs为了解决这种问题,在Extjs 4.x版本中引入了MVC开发模式, ...
- Nginx配置文件(nginx.conf)配置详解(2)
Nginx的配置文件nginx.conf配置详解如下: user nginx nginx ; Nginx用户及组:用户 组.window下不指定 worker_processes 8; 工作进程:数目 ...
- webstorm安装后的一些设置技巧:
如何更改主题(字体&配色):File -> settings -> Editor -> colors&fonts -> scheme name.主题下载地址 如 ...
- NodeJS学习三之API
Node采用V8引擎处理JavaScript脚本,最大特点就是单线程运行,一次只能运行一个任务.这导致Node大量采用异步操作(asynchronous opertion),即任务不是马上执行,而是插 ...
- mysql 模糊查询语句比较(LIKE、instr、locate、find_in_set、position)
大家都知道mysql 模糊查询的常用方法是LIKE 但这个语句查询效率很慢,那么有没有比较好的方法呢,下面本人测试了几个语句 测试数据800条左右 1,
- drawing
/* 程序名:drawing..c 功能:展示OpenCV的图像绘制功能 */ #include "cv.h" #include "highgui.h" #in ...