绪论
工具¶
CPU眼里的程序运行¶
编译器生成的".out"文件中,包含了源代码对应的所有汇编指令,存储着我们所写代码对应的CPU指令和数据。
CPU又是如何执行硬盘上的a.out文件呢?
不同于直接将a.out文件加载到真实的计算机内存,现代操作系统会基于物理内存和MMU协处理器,为我们构建一个巨大的虚拟内存。这可以帮助程序员编写出超越物理内存限制的代码。
MMU协处理器
想象你住在一个超大公寓楼里(这就是电脑的内存)¶
- 每个住户(程序):比如微信、游戏、浏览器,都想在公寓里租房间(内存)存放自己的东西。
- 问题:如果让住户随便选房间,可能会打架(比如微信占了游戏的房间,导致游戏崩溃)。
MMU协处理器:它就是公寓的「智能管理员」¶
- 分配房间(内存管理)
- 每个住户都以为自己住在一栋独立的小楼里(虚拟地址),但其实他们被分散安排在大楼的不同角落(物理地址)。
-
MMU偷偷帮他们“翻译”地址,比如微信说“我要101号房”,MMU实际把它带到201号房,其他住户完全不知道。
-
防止打架(权限控制)
- MMU会检查住户的权限:比如游戏不能进微信的房间,微信不能修改系统的房间(避免病毒搞破坏)。
-
就像管理员给每个房间上锁,只有拿对钥匙(权限)的人才能进。
-
扩展空间(虚拟内存)
- 如果公寓住满了,MMU会把不常用的东西暂时搬到楼下仓库(硬盘),腾出空间给急需的住户,假装公寓永远够用(这就是**虚拟内存**)。
为什么需要MMU?¶
- 安全感:程序之间互相隔离,一个程序崩溃不会拖垮整个电脑。
- 效率:让程序觉得自己拥有整栋楼,不用操心真实地址。
- 省内存:灵活调度空间,像魔术一样“变出”更多房间。
一句话总结¶
MMU就像一个隐形的管家,偷偷安排内存、检查权限、变魔术扩展空间,让所有程序和谐共存。