复合页


复合页

复合页的引入

很多时候页面分配只是分配了页表项,只有当第一次访问的时候才会触发缺页中断,然后分配真正的物理内存,而每次触发在汇编指令层往往就是8字节,总之很小,每次只能触发一个page的缺页;

所以,如果大量分配页面,那么要想让这些页面全部加载上真正的物理内存,就要每访问一页中断一次,这样的开销太大了;

复合页的思想想必就是将这些页看成一个整体,只要触发了其中某一个页面的缺页中断,就将所有页面的物理内存全都加载进来;🤔

组织结构

一个超过4K大小的slab其实也是一个复合页!😮

上图中展示的就是一个tail-page的page结构体,其中绿框所示最低一个bit教师这是一个tail-page,其余bit则指向了head-page;😊

folio结构体

直接看这篇文章的解释:https://blog.csdn.net/feelabclihu/article/details/131485936

其最终给出的解释是这样的:

参考

https://bsauce.github.io/2024/07/30/CVE-2023-2598/#1-linux%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86%E6%96%B0%E7%89%B9%E6%80%A7-folio

https://blog.csdn.net/feelabclihu/article/details/131485936


文章作者: q1ming
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 q1ming !
  目录