为什么中断向量表重映射到高地址

2023-10-28 20:09

本文主要是介绍为什么中断向量表重映射到高地址,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

为什么中断向量表重映射到高地址(转)  2013-04-13 09:51:33

分类: LINUX

原文地址:对ARM中MMU映射过程的理解(转) 作者:nuaagcj

http://blog.chinaunix.net/u1/58780/showart_458039.html

MMU给我感觉是个很复杂的东西,网上看了一些资料,勉强知道了一些表面的东西。它有两个作用:1、把虚拟地址映射到物理地址;2、对内存访问提供控制机制。

我主要记录下我对映射表变换的理解。

在ARM中,MMU另外提供了一张映射表(MVA),用于程序虚拟地址(VA)到物理地址(PA)的映射。MVA称为变换后的VA。在程序运行时,CPU只看到VA,而MMU和cache们只看到PA和MVA。应该说,在进程运行切换过程中,映射关系是动态变化的,因为不同进程和内存之间需要不同的映射关系,就需要不断的重做映射表,这个代价是很大的。所以,有必要让映射表中需要更新的内容很少,以减少性能开支,这就出现了“变换后的”VA,即MVA,如果VA<32M,需要使用进程标识号PID(通过读CP15的C13获得)来转换为MVA。

VA与MVA的转换方法如下(这是硬件自动完成的):

if(VA < 32M)
    MVA = VA | (PID<<25);   
//VA<32M,即PID*0x02000000作为该进程起始地址
else
    MVA = VA;               //VA>=32M

如:假设两个进程1、2运行时的VA都是0-32M,则他们的MVA分别是0x02000000-0x03ffffff、0x04000000-0x05ffffff,这样进程切换就省事多了,不必进行重建页表等工作。

    但是,这同时带来了中断跳转的问题。当发生异常时,需要跳到0x0位置的异常向量表,这个0x0应该是VA,且小于32M,如果开启了MMU,就会被转换为MVA,而不同的PID产生不同的MVA,这就导致异常向量表的地址不统一了。所以,Linux采取了将0x0位置的向量表映射到高地址0xffff0000处,就没有上述的问题了,看了半天原来是这么回事。。。

    接下来,就是MVA如何映射PA的工作。s3c2410的datasheet中说到4中映射方案,其中最方便的是段(section)操作,具体见《s3c2410 MMU》的后半文。

这篇关于为什么中断向量表重映射到高地址的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/295635

相关文章

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Python+PyQt5实现文件夹结构映射工具

《Python+PyQt5实现文件夹结构映射工具》在日常工作中,我们经常需要对文件夹结构进行复制和备份,本文将带来一款基于PyQt5开发的文件夹结构映射工具,感兴趣的小伙伴可以跟随小编一起学习一下... 目录概述功能亮点展示效果软件使用步骤代码解析1. 主窗口设计(FolderCopyApp)2. 拖拽路径

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

Java根据IP地址实现归属地获取

《Java根据IP地址实现归属地获取》Ip2region是一个离线IP地址定位库和IP定位数据管理框架,这篇文章主要为大家详细介绍了Java如何使用Ip2region实现根据IP地址获取归属地,感兴趣... 目录一、使用Ip2region离线获取1、Ip2region简介2、导包3、下编程载xdb文件4、J

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

resultMap如何处理复杂映射问题

《resultMap如何处理复杂映射问题》:本文主要介绍resultMap如何处理复杂映射问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录resultMap复杂映射问题Ⅰ 多对一查询:学生——老师Ⅱ 一对多查询:老师——学生总结resultMap复杂映射问题

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重