操作系统对内存的划分和动态分配,就是内存管理的概念。

早期的方法

Overlay:内存很小,程序需要的内存比实际内存大。会将不常用的替换掉。

Swap: 多个进程,例如P1,P2,可以先讲P2放到外存中,执行完P1,再程序加载P2。

程序如何从代码到进程

编译器编译为目标文件,然后链接器将目标文件链接为可执行文件,最后操作系统将其加载如内存执行。在链接的过程中,会将符号链接到地址,称为地址绑定。

因为无法预知进程实际加载到内存时的地址,所以地址绑定都是从0开始的,假设整个内存都可用。这种地址叫作逻辑地址。所以,我们需要将逻辑地址转化为物理地址。MMU就是做这个事情的。Relocation.

基本概念:

地址绑定

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/73b2ffad-29e1-426e-84b7-e238592f87a8/Untitled.png

分页

page-frame

page table

二级分页

分段