分页:
分页是将物理内存分页,并与磁盘(外存)的页相对应,大小相等。在进程进入虚拟内存的时候,会为其分配一些虚拟页。每个进程都有自己的页表,进程中的页最初处于磁盘中,暂时没有加载到内存中。当出现缺页异常的时候,操作系统会触发缺页异常处理,将磁盘中的页与内存中的没用的页(进入内存中的页分为常驻页和非常住页,一般来说替换的是非常驻页)进行替换。
分段:
每个进程内部有自己的代码逻辑,根据逻辑划分为不同的段,每个段的大小是不同的。(分段应该作用于Linux进程的虚拟内存模型中的.text代码段)。每个进程也持有段表,利用 段+偏移 的规则找寻代码所在的物理地址。
虚拟内存空间:
操作系统为每一个进程维护一个虚拟内存,拥有自己的堆、栈、共享库链接、以及内核区的内核虚拟内存。
一个进程的虚拟内存 (深入理解计算机系统P580 图9-26):