专题1-MMU-lesson2-深入剖析地址转化
1、地址转化总体分析


level one fetch和level two fetch分为一级转换和二级转换。
由上图右边可以看出,首先通过TTB(Translation Table Base)寄存器找到转换表基地址,该表有4096项,然后用虚拟地址的[31:20]位来找该表里面的表项,再检查该表项最后两位如果为00,则无效转换,如果为01,则是粗页转换,为10为段转换,为11为细页转换。
关于转换表的简单描述
首先,转换表是存放在内存当中的;然后,这张表是由工程师来编写的,工程师然后把该表的首地址放到TTB中,然后把TTB的值写入cp15寄存器中的c2寄存器,那么在MMU工作的时候,会直接去cp15的c2寄存器当中去取该地址,那么就可以找到转换表的首地址了。
2、段转换方式
当找到转换表中的表项之后,会取出该表项的高12位,



3、细页转换
从转换表的表项中找到细页页表的基地址,然后从虚拟地址的[19:10]位来找到细页页表里面的表项,然后检测该表项的最后两位为00则无效,为01则找到大页基地址,然后用虚拟地址的[15:0]来找具体的表项,就是我们要找的物理内存;为10则找到小页基地址,然后用虚拟地址的[11:0]来找具体的表项,就是我们要找的物理内存,为11则找到极小页基地址,然后用虚拟地址的[9:0]来找具体的表项,就是我们要找的物理内存。

专题1-MMU-lesson2-深入剖析地址转化的更多相关文章
- 嵌入式Linux之我行——ARM MMU工作原理剖析【转】
转自:http://blog.chinaunix.net/uid-20698426-id-136197.html 一.MMU的产生 许多年以前,当人们还在使用DOS或是更古老的操作系统的时 ...
- C++学习010-将某个地址转化为指针
如果需要将某个具体的地址转化为指针,可以直接使用类型那个转换来是实现. 实例如下 int main() { void* pData = (void*)(0x004001); std::cout < ...
- 【硬核】MMU是如何完成地址翻译的
目录 1. 什么是虚拟内存? 2. 虚拟内存的作用 3. 虚拟内存与物理内存 3.1 CPU存取数据 3.2 物理地址常用术语 3.3 虚拟地址常用术语 3.4 页表常用术语 3.5 页命中/缺页 4 ...
- IP多播与NAT地址转化
IP多播 与单播相比,在一对多的通信中,多播可以大大减少网络资源.在互联网上进行多播就叫做IP多播,IP多播所传送的分组需要使用IP多播地址. 如果某台主机想要收到某个特定的多播分组,那么怎样才能是这 ...
- 深入剖析mmu地址转化
mmu(内存管理单元),是arm区别于单片机的标志之一,虚拟地址转化分为3种,常见的如下2种. 段式转化如下,由表像中的基地址加偏移地址,(细页转化跟段式转化类似,多了一个2级页表,把虚拟地址0-20 ...
- C 如何将输出的地址转化为十进制数
•需求 这两天在看内存对齐的相关问题,因此产生了一个,如何将地址转换为十进制数? 对于如下程序: void func() { int a = 10; printf("a 的地址为:%p\n& ...
- 将IP地址转化为整数
$ip = 'IP地址';echo $intip = sprintf('%u',ip2long($ip)); //转换为无符号整型echo long2ip($intip);//将整型转换为ip
- ip地址转化代码实例
/*@author: lgh@ * * */ #include <stdio.h> #include <string.h> #include <unistd.h> ...
- java实现根据高德地图API接口进行地址位置解析,将地址转化为经纬度
原创文章,转载请注明,欢迎评论和更改. 1,所需额外ar包,import net.sf.json.JSONObject; 2,完整源代码代码 package com.travel.util; impo ...
随机推荐
- 十七、python沉淀之路--三元表达式、列表解析
一.三元表达式 a = '骑车' res = '好天气' if a == '骑车' else '睡觉' print(res) 睡觉 解析:res = '好天气' if a == '骑车' ...
- 给System.Timer类的Elapsed事件加锁
背景: 最近在做一个项目,程序是命令行程序,在主程序中开一个线程,这个线程用到了System.Timer类的Elapsed事件,根据指定时间间隔循环去查询数据库,找符合条件的记录,把记录组织成xml对 ...
- 为什么 FastAdmin 的插件不全部免费?
为什么 FastAdmin 的插件不全部免费? 主要还是有以下几个原因. 支持开发者. 为了支付网站空间费和 CDN 费. 有收入后可以更好的开发 FastAdmin.
- UOJ #188 Sanrd —— min_25筛
题目:http://uoj.ac/problem/188 参考博客:https://www.cnblogs.com/cjoieryl/p/10149748.html 关键是枚举最小质因子...所以构造 ...
- 我的HibernateSearch笔记
话不多说,直接上代码: 实体类: package com.smt.pojo; import java.io.Serializable; import javax.persistence.Column; ...
- FTP协议完全详解
1. 介绍 FTP的目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据.虽然我们也可以手工使用它,但是它的主要作用是供程序使用的.在阅读本文之前最好能够阅读TC ...
- 校赛热身赛 Problem D. Unsolved Mystery
Problem D. Unsolved MysteryThe world famous mathematician Wang Hao published a paper recently in the ...
- elasticsearch pinyin 拼音分词器
安装pinyin分词 地址:https://github.com/medcl/elasticsearch-analysis-pinyin PUT py_test { "index" ...
- 支付宝pc端支付接入PHP实现
引入支付宝接口 放入一个插件库中,方便管理 创建支付类 1.发起支付 public function init() { $order_id = $_REQUEST['order_id']; $orde ...
- log4net 使用总结- (1)在ASP.NET MVC 中使用
1. 去官网下载log4net.dll,增加引用到站点下(你也可以通过nuget 安装) http://logging.apache.org/log4net/download_log4net.cgi ...