物理内存被划分成固定大小的块,称为页框
- 内核以页框为基本单位管理物理内存。
- 内核为每个页框都建立了一个page结构,使用struct page结构体描述一个页框。
page采用了元数据与数据分离的方案
- page结构并不存放在其所描述的页框内
- 专门从内存中分配了若干空间,存储所有页框的page结构
- 从线性地址空间角度,所有page结构都依页框号依次存放在vmemmap开始的地方
- 在2.6的内核版本中,所有的page结构被放在mem_map数组中
下图是Linux内核线性地址空间布局
我们的page结构数组就是存放在线性地址的virtual memory map区,且第一个page结构的起始地址就是0xFFFFEA0000000000。
#define vmemmap \
((struct page *)VMEMMAP_START)