嵌入式Linux中的MMU

浅学Linux内核MMU MMU是 MemoryManagementUnit 的缩写即,内存管理单元. 针对各种CPU, MMU是个可选的配件. MMU负责的是虚拟地址与物理地址的转换. 提供硬件机制的内存访问授权.(现代 CPU 的应用中,基本上都选择了使用 MMU) 阅读详情

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

嵌入式系统中MMU是一个非常重要的模块,本文带你了解它

一、MMU是什么?

MMU 是英文 Memory Management Unit 的缩写,意为内存管理单元。它是计算机系统中的一个重要组成部分,负责虚拟内存与物理内存之间的映射和转换。MMU 实现了硬件级别的地址转换功能,实现了程序对于虚拟内存的访问,在程序运行时,将虚拟内存地址转换为物理内存地址,从而实现了对内存的有效管理和利用。通过 MMU,计算机系统可以在较小的物理内存空间下执行较大的程序,提高了计算机系统的性能和可靠性。

二、MMU在CPU内的的作用

三、MMU的工作原理

1.地址转换

当CPU发出一个内存访问请求时,MMU负责将逻辑地址(由CPU提供)转换为物理地址(用于访问实际的内存单元)。这个过程被称为地址转换。MMU通过使用一个叫做页表的数据结构来完成地址转换。页表存储了逻辑地址到物理地址的映射关系。

2.分页策略

MMU将逻辑地址划分为固定大小的页面,通常是4KB或者4MB。物理内存也被划分为相同大小的页面。当CPU发出一个内存访问请求时,MMU将逻辑地址的高位部分(页号)与页表进行匹配,找到对应的物理地址的页面。

3.页面加载

如果页表中的对应项表示所需的页面已经在物理内存中,则MMU将逻辑地址的低位部分(页面内偏移)加到物理地址的基地址上,得到真实的物理地址。然后MMU将该物理地址提供给内存总线,以进行数据的读取或写入。

4.页面置换

如果页表中的对应项表示所需的页面不在物理内存中,则发生缺页中断。缺页中断会触发操作系统的页面置换算法,将某个物理页面替换出来,腾出空间给新的页面。替换的页面被移动到磁盘上的交换区域。然后MMU将逻辑地址转换成新页面所在的物理地址,并完成数据的读取或写入。

通过这种方式,MMU实现了内存的动态管理和扩展。它使得操作系统可以使用更大的虚拟内存空间,而不受物理内存大小的限制。同时,MMU还提供了内存保护机制,防止程序越界访问或篡改其他进程的内存。


写在最后

二线城市嵌入式软件开发菜鸟一枚,承蒙指教
关于作者:
github
csdn博客

Linux虚拟内存管理,MMU机制详解 相关教程: 后台开发第286讲|【Linux内核篇】剖析Linux内核MMU详解|1、物理内存组织结构 2、虚拟地址空间划分 3、内核与用户空间布局 4、内存映射原理机制 MMU 现代操作系统普遍采用虚拟内存管理(Virtual Memory Management)机制,这需要处理器中的MMU(Memory Management Unit,内存管理单元)提供支持。 首先引入 PA 和 VA 两个概念。 PA 如果处理器没有MMU,或者有MMU但没有启用,CPU执行单元发出的内存地址将直接传到. 阅读详情

相关推荐

MMU内存管理单元相关知识点总结

1.MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权,多用户多进程操作系统。   2.虚拟内存由来:许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规...

--Joern的物联领域-- 652

什么是mmu?为什么要用mmu?

MMU即内存管理单元(Memory Manage Unit),是一个与软件密切相关的硬件部件,也是理解linux等操作系统内核机制的最大障碍之一。可以说,不懂MMU使很多人一直停滞在单片机与无OS的时代。博主之前对MMU也一直是雾里看花,似懂非懂。最近终于自认为云开雾散后,回头总结,感觉有几个概念是阻碍人们理解MMU的元凶。 1)虚拟地址/物理地址 如果处理器没有MMU,CPU内部执行单元产生的内存地址信号将直接通过地址总线发送到芯片引脚,被内存芯片接收,这就是物理地址(physical address),

KUNPLAYBOY的博客 2万+

嵌入式Linux能否在无MMU处理器上运行?

Linux操作系统依赖虚拟内存机制实现进程隔离、内存保护与按需分页,其核心基础是内存管理单元(MMU)。当硬件缺失MMU时,标准Linux内核因深度耦合页表管理、缺页异常和Copy-on-Write等机制而无法直接运行。此时需转向专为微控制器优化的uClinux分支,它通过实地址映射、vfork替代fork、FLAT可执行格式等技术重构内存模型,在无MMU平台提供轻量级多任务能力。该方案广泛应用于电表、PLC等超低功耗、高确定性场景,但牺牲了内存保护与动态内存扩展能力。理解MMU原理与uClinux适配逻辑

weixin_33622085的博客 523

Linux内核的虚拟内存(MMU、页表结构)

如果不在,则意味着该虚存页面还没有被载入内存,这时MMU就会通知操作系统:发生了一个页面访问错误(页面错误),接下来系统会启动所谓的“请页”机制,即调用相应的系统操作函数,判断该虚拟地址是否为有效地址。如果是有效的地址,就从虚拟内存中将该地址指向的页面读入到内存中的一个空闲页框中,并在页表中添加上相对应的表项,最后处理器将从发生页面错误的地方重新开始运行;在映射工作中,为了记录程序段占用物理内存的情况,操作系统的内存管理模块需要建立一个表格,该表格以虚拟地址为索引,记录了程序段所占用的物理内存的物理地址。

嵌入式Linux内核的博客 1700

嵌入式linux学习之第四课内存管理单元MMU实验

MMU功能 权限管理 地址映射 A空间要去访问B空间或者内核空间时就会奔溃,这就是权限管理 地址映射

qq_25785565的博客 483

嵌入式Linux无MMU环境开发实践与uClinux解析

内存管理单元(MMU)是现代计算机系统中实现虚拟内存的核心硬件组件,通过地址转换机制提供内存隔离和保护功能。在嵌入式Linux开发中,标准内核依赖MMU实现进程隔离和动态内存管理。针对无MMU的微控制器环境,uClinux通过实模式内存管理和进程创建优化等技术方案,为资源受限设备提供了Linux支持。这种方案在工业控制、消费电子等嵌入式场景中具有实用价值,但也带来了内存保护缺失、开发复杂度增加等挑战。通过静态链接、内存池管理等工程实践,开发者可以在无MMU环境下构建稳定的嵌入式Linux系统。

weixin_33814090的博客 631

嵌入式Linux运行一定需要MMU吗

然而对于嵌入式uClinux系统而言,由 于所运行的程序往往是在出厂前已经固化的,不存在危害系统安全的程序侵入的隐患,因此只要应用程序经过较完整的测试,出现问题的概率就可以控制在有限的范 围内。Linux下所有标准的可执行文件的格式在uCLinux并不被支持,因为这些格式也用到了虚拟内存的一些功能.uCLinux使用的 是另外一种扁平格式.扁平格式是一种简洁高效的可执行文件格式,它值包含可执行的代码和数据,还有一些把可执行文件加载到内存任意位置所需要的可重定位的 信息.在编译时,可以指定程序的堆栈大小。

youzhangjing_的博客 278

ARM9嵌入式Linux开发-内存管理单元MMU

内存管理单元(Memory ManagerUnit)简称MMU,它负责将虚拟地址转换成物理地址,然后传给存储管理器进行寻址。 现代的多用户多进程操作系统通过MMU使各个用户进程都有自己的独立的地址空间:地址映射功能功能使的个进程拥有“看起来”一样的地址空间,而内存访问权限的检查可以保护每个进程所用的内存不会被其他进程破坏。 举一个现实生活中的例子:甲同学(进程甲)去一个图书管理员那儿去借名为“...

ce123的技术博客 802

[嵌入式Linux] 详细讲解MMU

嵌入式LInux之MMU

959 1120

基于深度强化学习的无地图移动机器人导航:让机器人在未知环境中智能前行

虽然仍然面临sim-to-real差距、安全性保证等挑战,但随着算法的不断改进和计算能力的提升,基于DRL的无地图导航技术将在服务机器人、工业自动化、太空探索等领域发挥越来越重要的作用,为人类生产和生活带来更大便利和价值。对于复杂环境下的动态目标导航问题,研究人员提出了多智能体协同控制算法(如Teamwork-Net算法),通过多个智能体分别控制机器人的运动速度与运动方向,协同实现更高效、更稳定的导航性能。深度强化学习结合了深度学习的感知能力和强化学习的决策能力,非常适合解决无地图导航问题。

weixin_45131592的博客 902

葵花(Himawari)8/9卫星数据处理

李国春 葵花8(含葵花9,下同)是静止气象卫星,数据范围是星下点为140°E赤道上空的大圆盘。空间分辨率有500m、1km和2km三种。虽然其空间分辨率不高,但是有极高的时间分辨率,观测数据刷新仅10分钟。这对一些生态、农业和大范围自然灾害的动态检测具有非常高的应用价值。本文介绍如何使用RSD处理葵花8数据。

副组长的博客 1万+

linux 内存 切换 mmu,4,嵌入式Linux之内存管理单元MMU

4,嵌入式Linux之内存管理单元MMU一,MMU的原理1),虚拟地址《=》物理地址映射:2),物理地址和虚拟地址映射的方法:VA= function(PA);段映射:32为的cpu可以发出4G的地址我们建立页表将4G的内存和虚拟地址以1M段对应起来如图:二,MMU的实例点灯程序:1),设置页表如图:2),相关的代码Head.S代码:@*******...

weixin_32042443的博客 392

【OpenCV】复杂场景下的高精度圆检测实战(附完整代码)

本文针对OpenCV霍夫圆检测在复杂场景下易失效的问题,提出了一套基于轮廓分析的高精度圆检测实战方案。通过图像预处理、轮廓发现及多轮几何筛选(面积、周长、椭圆拟合、多边形逼近),有效排除噪声和类圆干扰物,显著提升复杂场景下的检测鲁棒性,并附完整可调参的Python代码实现。

weixin_29095587的博客 200

嵌入式Linux之我行——ARM MMU工作原理剖析

嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。 共享资源,欢迎转载:http://hbhuanggang.cublog.cn 一、MMU的产生

嵌入精灵 1065

LiveReload:释放你的F5,实时预览HTML效果

一、liveReload插件开发背景Web前端开发人员在写页面时,如果修改了HTML or CSS,要想看效果通常的做法就是保存代码就得 Alt+Tab,切换到浏览器(当然,我知道很多开发人员是双屏操作不一定需要切换到浏览器),但是一定要F5刷新才能看自己刚写的代码有没有效果,没有效果就再切换到编辑器下修改,然后再切换到浏览器F5刷新看效果,还没有效果,就再继续修改,如此反复。时间久了,前端自动化...

Char_n的博客 2509

把个人化的 SQVI 报表变成可维护、可共享、可传输的 ABAP Query:从定位来源到转换落地的完整路线图

本文针对SAP系统中业务用户常用但难以维护的SQVI临时报表问题,提供了一套完整的解决方案。文章首先区分了SQVI(个人临时报表)和ABAP Query(团队可维护报表)的关键差异,重点介绍了如何通过函数模块RSAQ_DECODE_REPORT_NAME反查报表来源。对于SQVI报表,详细说明了定位创建人和转换为团队可维护的ABAP Query的具体步骤,包括Query Area切换、转换操作和后续维护方法。最后总结了常见问题的解决方案,如字段调整、口径固化和生成程序名反查等,为现场实施提供了可直接操作的完

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 302

4, 嵌入式Linux之内存管理单元MMU

4,         嵌入式Linux之内存管理单元MMU 一,MMU的原理 1),虚拟地址 《=》 物理地址映射: 2),物理地址和虚拟地址映射的方法: VA= function(PA); 段映射:32为的cpu可以发出4G的地址我们建立页表将4G的内存和虚拟地址以1M段对应起来如图:                 二,MMU的实例点灯程序:          

u010463619的专栏 673

YOLO算法:关于目标检测算法的基本介绍(小白入门必读)

目标检测算法是一种计算机视觉算法,用于在图像或视频中识别和定位特定的目标物体。本节课就给大家重点介绍下基于深度学习的目标检测算法!

小哥谈 2525

linux内存管理单元mmu,嵌入式Linux学习笔记(四)-内存管理单元mmu

嵌入式Linux学习笔记(四)-内存管理单元mmu一、内存管理单元MMU介绍内存管理单元简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。MMU使得每个用户进程拥有自己独立的地址空间,并通过内存访问权限的检查保护每个进程所用的内存不被其他进程破坏。重点就在于地址映射:页表的结构与建立、映射的过程。嵌入式Linux学习笔记(四)-内存管理单元mmu一、内存管理单元MMU介...

weixin_39888049的博客 223

OpenClaw小白安装全攻略:5000字详解,3分钟上手

为什么值得装 OpenClaw?最近科技圈爆火的 OpenClaw(昵称 “小龙虾”),不是普通 AI 聊天工具 —— 它是能本地部署、直接操控电脑的 AI 智能体,相当于给电脑配了个 “全能助手”:整理文件、自动搜资料、写文档、控制浏览器,甚至对接微信 / 飞书发消息,全程不用手动操作。更关键的是:它免费开源、支持全平台,新手不用懂代码,复制粘贴命令就能装,数据存在本地不泄露隐私。截至 2026 年 3 月,GitHub 星标已破 25 万,券商都出研报推荐,上班族、学生党用它提升效率超香!

通俗易懂学IT 1211

把 SAP S/4HANA 中的 Maintain Email Templates 用好:从模板维护、语言变体、业务绑定到传输治理的完整实践

摘要:SAP邮件模板管理常被低估,实则关乎审批通知、业务提醒等关键输出。官方推荐通过复制标准模板实现自定义,而非直接修改标准内容,以保持核心稳定。模板维护涉及语言变体、业务绑定、数据传输等治理环节,需业务顾问与开发团队协作确保字段来源与渲染逻辑。实施时需注意Fiori配置、权限分配及传输管理,避免测试与生产环境差异。模板设计应平衡灵活性与复杂度,遵循分层测试策略(内容、数据、流程),并建立命名规范以维护资产清晰度。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 67

嵌入式linux学习笔记 – 内存管理单元mmu

嵌入式linux学习笔记 – 内存管理单元mmu http://www.sectop.com/post/83.html

gowyz的专栏 1248

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

嵌入式Linux系统工程师系列之ARM920T的MMU与Cache

嵌入式Linux系统工程师系列之ARM920T的MMU与Cache 宋劲杉     目录      虚拟地址和物理地址的概念       虚拟内存管理       ARM920T的CP15协处理器      MMU       Cache       操作MMU和Cache的内核启动代码       参考资料 索引      视频欣赏     虚拟地址和物

思考的智慧,知识源于思考 2722

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

linux内存管理单元mmu,嵌入式Linux应用开发完全手册读书笔记(内存管理单元MMU)

嵌入式Linux应用开发完全手册读书笔记(内存管理单元MMU)本章目标:n 了解虚拟地址和物理地址的关系n 掌握如何通过设置MMU来控制虚拟地址到物理地址的转化n 了解MMU的内存访问权限机制n 了解TLB、Cache、Write buffer的原理,使用时的注意事项n 通过实例深刻掌握上述要点u S3C241...

weixin_39847728的博客 194

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

下一篇: 记录一次ubuntu系统触摸板失灵的故障
caichen0710
博客等级 码龄14年 8粉丝 2原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值