MMU位置
MMU的作用
地址映射 (Address Translation)
进程都以为自己拥有连续的、从头开始的完整内存空间(虚拟内存)。MMU负责在硬件底层将这些虚拟地址动态翻译成实际的、可能支离破碎的物理地址。
消除外部碎片:在虚拟地址空间里,一连串的虚拟页看起来是连续的,但MMU可以把它们映射到物理内存中任意不连续的空闲页框上。这样就能充分利用物理内存。
内存保护与进程隔离 (Process Isolation)
MMU严格规定了哪些物理内存页属于进程A,哪些属于进程B。如果进程A的指针跑飞,试图访问进程B的内存,MMU会立即拦截并在硬件层面触发异常
按需调页 (Demand Paging) 与 交换(Swap)机制
当上位机的物理RAM不够用时,MMU可以将不常用的内存页自动换出到硬盘(Swap)上,需要用时再触发“缺页中断”换回RAM。这让上位机能运行比实际RAM大得多的庞大算法模型。
需求分页:程序不是一开始就全部装入内存,而是随着运行,边执行边加载。MMU使得物理内存的分配可以完全滞后且非连续。
在上位机(linux)(x86/Cortex-A)和下位机(RTOS)(Cortex-M)之中 MMU对他们造成的差异
| 维度 | 上位机 (High-level Controller) | 下位机 (Low-level Controller) |
|---|---|---|
| 典型代表 | PC, 工控机, NVIDIA Jetson, RK3588 | STM32, ESP32, TI C2000, NXP Kinetis |
| 内存架构 | 具备 MMU(支持虚拟内存、分页机制) | 无 MMU(通常带 MPU,直接访问物理内存) |
| 操作系统 | Linux, Windows | FreeRTOS, RT-Thread, 裸机 |
| 实时性 | 软实时 (即使打补丁也存在抖动) | 硬实时 (确定性响应,纳秒/微秒级延迟) |
| 主要功能 | 高维计算、感知、规划、网络交互 | 信号采集、底层执行、高速反馈控制 |
| 崩溃影响 | 进程隔离,单任务崩溃不影响系统全局 | 无空间隔离,野指针可能导致全系统死机 |
操作系统
上位机—linux
正是因为上位机有MMU所以才能使用linux操作系统
- 多进程独立隔离,必须虚拟内存
- Linux 调度模型(SMP)依赖 MMU 实现进程自由迁移
- 内存管理全套机制建立在 MMU 之上(分页、缺页、Swap、内存访问权限)
下位机—RTOS
为什么MCU无法运行Linux?因为他没有MMU。
实时性
上位机—Linux
因为MMU的按需调页与交换机制,所以导致Linux的实时性不高
下位机—RTOS
直接访问内存,提升访问效率,确保实时性