基础知识点
Buddy system是linux内核中大名鼎鼎的页面管理子系统,它潜伏在linux内核底层,看起来神秘而难以捉摸。然而当揭开它神秘的面纱,才发现大道至简。如果让我用两个词来描述buddy system,我会选择:简单,优雅。
什么是buddy system?
buddy是伙伴的意思,buddy system就是伙伴系统。在人的社交中,伙伴是两个关系比较近的人,而在页面的社交中,伙伴是两块挨着的pageblock(一组连续的pages)。当两个小伙伴其中一个有任务时,比如被网卡驱动叫过去接受报文,两个小伙伴就会分开;而当任务完成后,比如报文已经被处理完毕,页面被释放,两个小伙伴又会重新团聚,手拉手合二为一。这里先 简单提一下伙伴系统的概念,后面会详细解释。
什么是page order?
page order的概念非常简单,就是page的阶,也就是1<
什么是迁移类型?
迁移类型是专门为buddy system而生的。迁移类型对buddy system的贡献我们暂时不说,我们先来解释下迁移类型的概念。
我们先来说下最简单的两种迁移类型:可移动页面和不可移动页面。
可移动页面:物理页面可以在不被用户感知的情况下,迁移到其他物理页面。比如用户空间使用的页面,可以修改虚实地址映射表,将虚拟地址偷偷映射到其他物理页面,用户感知不到物理页面的变化。
不可移动页面:物理页面不可移动。比如分配个