CPU硬件高速缓存:
根据https://blog.csdn.net/gatieme/article/details/52384075和https://www.cnblogs.com/tolimit/p/4551428.html,物理内存初始化的层次结构,物理内存分配为多个node节点,每个node节点管理多个zone区(zone包含NORMAL、DMA、HIGHMEM等),每个zone又通过伙伴系统和硬件高速缓存来申请和释放页帧。
CPU硬件高速缓存就是我们所说的cpu l2 l3缓存,也就是使用SRAM。虽然说物理内存的DRAM支持快速的访问,但是相对于CPU的处理速度还是要慢一些,所以将DRAM中的数据先缓存的SRAM中,CPU直接和SRAM交互。zone管理区描述符实际把所有属于该管理区的页框保存在两个地方:struct free_area free_area[MAX_ORDER]和struct per_cpu_pageset __percpu * pageset。free_area是这个管理区的伙伴系统,而pageset是这个区的每CPU页框高速缓存。对管理区的理解需要结合伙伴系统和每CPU页框高速缓存。
伙伴系统的主要作用就是减少物理内存的碎片,而SLAB/SLUB减少页框的内部碎片,也就是减少4k内部的碎片