文章目录
- 一、通过接口找到内存节点
- 二、开始分配
- 三、准备分配页面的参数
- 四、快速分配路径
- 五、慢速分配路径
沉淀、分享、成长,让自己和他人都能有所收获!😄
📢分配物理内存页面的过程很好推理:首先要找到内存节点,接着找到内存区,然后合适的空闲链表,最后在其中找到页的 page
结构,完成物理内存页面的分配。
一、通过接口找到内存节点
我们先来了解一下分配内存页面的接口,我用一幅图来表示接口以及它们调用关系。我相信图解是理解接口函数的最佳方式,如下所示。
上图中,虚线框中为接口函数,下面则是分配内存页面的核心实现,所有的接口函数都会调用到 alloc_pages
函数,而这个函数最终会调用 __alloc_pages_nodemask
函数完成内存页面的分配。
下面我们来看看 al