ARM架构中MPU对OS下任务和内存的保护机制
创作时间:
作者:
@小白创作中心
ARM架构中MPU对OS下任务和内存的保护机制
引用
CSDN
1.
https://blog.csdn.net/xiandang8023/article/details/140688754
MPU(Memory Protection Unit)是ARM架构中用于实现内存保护的重要组件,它通过定义内存区域的访问权限、缓存策略等机制,为操作系统提供了一种细粒度的内存管理方式。本文将详细介绍MPU的主要功能及其在多任务环境下的应用。
MPU的主要功能
确定MPU保护区域的起始地址(Base address)和结束地址(Limit address):结束地址是根据起始地址与给定的region大小决定的。
确定MPU区域的访问权限:
- 只读(Read-only):只能读取,不能写入。
- 可读写(Read-Write):可以读取和写入。
- 确定访问级别:
- 特权访问(Privileged-OS Kernel):操作系统内核级别的访问。
- 非特权访问(Unprivileged-TASK):用户任务级别的访问。
- 实现资源隔离和资源共享:
- 在没有使用MPU的情况下:内存仅根据MSP(主堆栈指针)和PSP(进程堆栈指针)分特权级和用户级。此时,特权级可以访问整个堆栈空间,而用户级任务之间无法互相访问对方的堆栈,只能访问分配给自己的堆栈内存,但用户级任务可以随意访问全局变量。
- 启用MPU后:OS会对每个用户任务的独立内存空间设置访问权限。例如,为了防止堆栈溢出,MPU的Size会大于TASK的堆栈Size,多的预留内存作为溢出缓冲。或者将静态区某些数据权限设置为仅供某个任务读写,其他任务只能读,AUTOSAR中RTE的数据Buffer就是这个设计原理,普通全局变量随意访问。对于多核涉及的共享数据,要单独设置region,flash里的代码段一般定义为仅可读。
- 确定MPU保护区域的缓存控制:
- 可缓存(Cacheability):确定哪些内存区域可以通过Cache访问。
- 可缓冲(Normal memory):确定哪些内存区域是通过Normal Memory访问的,内核直接访问芯片内存。
- 可多核共享(Shareability):主要用于多核之间数据共享,主要用于核间通信IPC在SMP(多核同构)或AMP(多核异构)架构中,如果开启共享(Shareability),等同于关闭Cache。
- 实时监测任务对内存的访问行为:一旦发现非法访问就会触发异常,如栈溢出,数组越界,任务越界访问动态分配的内存等。
MPU与MSP、PSP的区别
MSP和PSP主要关注的是栈空间的管理和使用,而MPU则是为了提供更细粒度的内存访问控制和保护机制。MPU通过硬件对划分的Region更细化权限控制,MSP和PSP 指针是 CPU 架构层面的特权级划分,MPU 机制是基于内存区域的访问控制。只能说给系统提供更加细致和可靠的内存保护功能。
MPU的缓存控制
Cortex-M7的缓存控制
Cortex-A7(含MMU)的缓存控制
Shareability的使用场景
主要用于多核之间数据共享,主要用于核间通信IPC在SMP(多核同构)或AMP(多核异构)架构中,如果开启共享(Shareability),等同于关闭Cache。
热门推荐
你一生中必须玩的50款独立游戏
急性阑尾炎饮食注意事项,来了解一下!
如何实现自制云手机,服务器搭建与配置指南
用AI来做全国高考试卷,真的有人试了!结果:成绩偏科很严重
畜牧兽医专业主要学什么-专业课程有哪些
千兆宽带网速应该多少?
2025年中国电力发展展望:供需紧平衡下的结构性机遇与挑战
MABR技术:助力池塘水质提升的创新解决方案
绿茶的种类及其独特魅力
如何根据个人口味选购茶叶?
科学使用耳机,远离噪声损伤
消费的B面|点外卖,年轻人是认真的
南方红豆杉苗圃育苗技术及大苗移栽管理技术
家长如何发现并培养孩子的独特才能
重836斤!人工杂交的“巨型猛兽”,体型超老虎,为何不该存在?
唐代陶瓷工艺的发展与创新
孙继海在曼城的成就与历史地位
给孩子起英文名?这些水果寓意的名字值得参考
花洒头滴水如何有效解决?这种解决方法怎样确保长期效果?
心理疗愈小锦囊丨孩子“捣乱”背后的心理需求
秋风起 枫叶红,古诗词里的枫叶,红枫染尽山林,岁月温柔了时光
双重保险是什么意思?
法国少年如何练成中国直板?听国乒资深教练韩华细说费利克斯·勒布伦
跃上胜利的台阶:跳远选手的成功秘笈
微信账号解封防诈骗指南:识别陷阱与举报方法
SSD容量大还是小?固态硬盘选购攻略揭秘
全面禁渔 | 禁渔期电鱼,我“遭”了!
两万投资的项目选择依据是什么?这种依据如何适应市场变化?
为什么有些人喜欢挠外国人脚心?
胎儿出生标准体重是多少斤