Skip to content

绪论

工具

Compiler Explorer

CPU眼里的程序运行

编译器生成的".out"文件中,包含了源代码对应的所有汇编指令,存储着我们所写代码对应的CPU指令和数据。

CPU又是如何执行硬盘上的a.out文件呢?

不同于直接将a.out文件加载到真实的计算机内存,现代操作系统会基于物理内存和MMU协处理器,为我们构建一个巨大的虚拟内存。这可以帮助程序员编写出超越物理内存限制的代码。

MMU协处理器

想象你住在一个超大公寓楼里(这就是电脑的内存)

  • 每个住户(程序):比如微信、游戏、浏览器,都想在公寓里租房间(内存)存放自己的东西。
  • 问题:如果让住户随便选房间,可能会打架(比如微信占了游戏的房间,导致游戏崩溃)。

MMU协处理器:它就是公寓的「智能管理员」

  1. 分配房间(内存管理)
  2. 每个住户都以为自己住在一栋独立的小楼里(虚拟地址),但其实他们被分散安排在大楼的不同角落(物理地址)。
  3. MMU偷偷帮他们“翻译”地址,比如微信说“我要101号房”,MMU实际把它带到201号房,其他住户完全不知道。

  4. 防止打架(权限控制)

  5. MMU会检查住户的权限:比如游戏不能进微信的房间,微信不能修改系统的房间(避免病毒搞破坏)。
  6. 就像管理员给每个房间上锁,只有拿对钥匙(权限)的人才能进。

  7. 扩展空间(虚拟内存)

  8. 如果公寓住满了,MMU会把不常用的东西暂时搬到楼下仓库(硬盘),腾出空间给急需的住户,假装公寓永远够用(这就是**虚拟内存**)。

为什么需要MMU?

  • 安全感:程序之间互相隔离,一个程序崩溃不会拖垮整个电脑。
  • 效率:让程序觉得自己拥有整栋楼,不用操心真实地址。
  • 省内存:灵活调度空间,像魔术一样“变出”更多房间。

一句话总结

MMU就像一个隐形的管家,偷偷安排内存、检查权限、变魔术扩展空间,让所有程序和谐共存。